diff --git a/service/dictionaries/en.json b/service/dictionaries/en.json index 89ef231d46..e02a1502f8 100644 --- a/service/dictionaries/en.json +++ b/service/dictionaries/en.json @@ -8,213 +8,213 @@ "И": "And", "К": "K", "о": "o", -"Не": "Not", +"ГТ": "GS", "ГВ": "GW", "НС": "NC", "МБ": "MB", "не": "not", -"ВК": "VK", +"1С": "1C", "ПФ": "FF", "АТ": "AT", -"но": "but", "из": "from", -"1С": "1C", "ГК": "GC", -"ГТ": "GS", +"ВК": "VK", +"Не": "Not", +"на": "to", +"но": "but", +"См": "See", "со": "with", -"Из": "In", -"ФС": "FS", "ГД": "GD", "ДД": "BD", "он": "he", "ПС": "PS", -"См": "See", +"ФС": "FS", "по": "to", "Да": "Yes", -"на": "to", "По": "To", -"РВ": "RX", +"Из": "In", "НЕ": "NOT", -"нет": "no", -"Час": "Hour", -"Лев": "Left", -"БСП": "BSP", -"тэг": "tag", -"Вид": "View", -"ВКТ": "VKT", -"Лог": "Log", -".PF": ".FF", -"что": "that", -"Три": "Three", +"РВ": "RX", "без": "without", +"Три": "Three", +"что": "that", +".PF": ".FF", +"Лог": "Log", +"Вид": "View", +"тэг": "tag", +"Час": "Hour", +"нет": "no", "2 ч": "2 hr", +"ИФТ": "BFN", +"ВКТ": "VKT", "Тип": "Type", -".PS": ".LF", -"Чат": "Chat", -"Хэш": "Hash", -"Тег": "Tag", -"Имя": "Name", -"ОПИ": "OPI", -".VK": ".CR", -"ИВФ": "TFN", "Хеш": "Hash", -"Таб": "Tab", -"Окр": "Round", +"Чат": "Chat", +".PS": ".LF", "Для": "For", "три": "three", +"Таб": "Tab", +"Окр": "Round", +".VK": ".CR", +"ОПИ": "OPI", +"Имя": "Name", +"Тег": "Tag", +"Хэш": "Hash", +"ИВФ": "TFN", "ндс": "vat", -"ИФТ": "BFN", -"Два": "Two", -"Ещё": "More", -"ИВТ": "TFN", -"был": "been", -"вес": "weight", +"БСП": "BSP", "доп": "add", -"изм": "change", -"Наш": "Our", -"НПП": "NPP", -"Стр": "Str", -"Что": "What", -"тип": "type", -"Поз": "Pos", -"это": "this", -"ООД": "OOD", -"Код": "Code", +"Лев": "Left", "Б24": "B24", -"Или": "Or", -"Цел": "Int", -"ОТД": "OTD", -"ПВЗ": "Point", -"Бан": "Ban", +"Два": "Two", +"это": "this", +"Поз": "Pos", +"тип": "type", +"Стр": "Str", +"Наш": "Our", +"изм": "change", +"вес": "weight", +"был": "been", +"ООД": "OOD", +"ИВТ": "TFN", +"НПП": "NPP", +"Код": "Code", "для": "for", -"Нет": "No", -"Вес": "Weight", -"имя": "name", -"осн": "main", -"или": "or", -"стр": "str", +"Что": "What", +"Цел": "Int", +"Или": "Or", "ИНН": "TIN", +"Ещё": "More", +"или": "or", +"осн": "main", +"стр": "str", +"Вес": "Weight", +"Нет": "No", +"Бан": "Ban", +"ПВЗ": "Point", +"ОТД": "OTD", +"имя": "name", +"Ложь": "False", "\"No\"": "\"None\"", "Блоб": "Blob", "Роль": "Role", "была": "been", "дата": "date", -"Слак": "Slack", "Ждет": "Waiting", "Цикл": "Do", "цена": "price", -"мета": "meta", "Блок": "Block", +"лида": "of lead", "Прав": "Right", "Тык!": "Click!", "ЧГ=0": "NG=0", -"лида": "of lead", "АирТ": "AirT", "путь": "path", "Тема": "Topic", "быть": "be", ".NPP": ".NBSp", +"мета": "meta", "Тип:": "Type:", "Сред": "Mid", -"Порт": "Port", -"ТРег": "Title", -"ВТаб": "VTab", -"Петр": "John", -"Пост": "Post", -"Поля": "Fields", -"Авто": "Auto", -"поля": "fields", -"чате": "chat", -"Коды": "Codes", -"Дата": "Date", "план": "plan", +"ТРег": "Title", +"База": "Base", +"Петр": "John", +"ВТаб": "VTab", +"Коды": "Codes", +"чате": "chat", +"Поля": "Fields", +"поля": "fields", +"Авто": "Auto", +"Пост": "Post", +"Дата": "Date", +"срок": "deadline", "Хост": "Host", "Пара": "Pair", -"Озон": "Ozon", "Сдэк": "Cdek", "Диск": "Drive", "Стат": "Stat", "Пути": "Paths", -"срок": "deadline", "тип:": "type", "цикл": "loop", +"Порт": "Port", "фото": "photo", -"База": "Base", -"Ложь": "False", -"Инит": "Init", -"тему": "topic", +"Слак": "Slack", +"Озон": "Ozon", +"Лист": "Sheet", +"Вход": "Entry", +"Офис": "Office", "Пётр": "John", "Срок": "Deadline", "Поле": "Field", "цены": "price", "Макс": "Max", -"нРег": "Lower", "Море": "Sea", "веса": "of weight", "Цена": "Price", "вРег": "Upper", -"Цель": "Purpose", +"нРег": "Lower", "Олег": "Oleg", "Теги": "Tags", "Иван": "Ivan", -"Сайт": "Website", "темы": "of topic", "всех": "all", "Флаг": "Flag", "чата": "of chat", "СУБД": "DBMS", -"Офис": "Office", +"Инит": "Init", +"Цель": "Purpose", "Путь": "Path", -"Вход": "Entry", +"Сайт": "Website", "Пока": "While", "виде": "view", +"цвет": "color", "Лама": "Lama", "Линк": "Link", -"Лого": "Logo", "тела": "of body", "файл": "file", "Цвет": "Color", "Куда": "Target", -"Лист": "Sheet", "Файл": "File", "Фото": "Photo", -"если": "if", -"цвет": "color", +"Лого": "Logo", "Тест": "Test", -"Цены": "Prices", -"Язык": "Lang", -"Ключ": "Key", -"Тело": "Body", -"Знач": "Val", +"если": "if", "Если": "If", +"Тело": "Body", +"Ключ": "Key", +"Знач": "Val", +"Язык": "Lang", +"Цены": "Prices", +"тему": "topic", "Врег": "Upper", "Поток": "Stream", +"своей": "of its", "Метка": "Label", "Иначе": "Else", "метод": "method", "Отчет": "Report", -"своей": "of its", -"Длина": "Length", -"Время": "Time", +"Поле1": "Field1", "можно": "may", +"Время": "Time", "парам": "option", "Артем": "Artem", "вчера": "yesterday", +"Схемы": "Scheme", "чата:": "chat", "Целое": "Whole", -"путей": "paths", -"Схемы": "Scheme", -"Путь2": "Path2", +"Длина": "Length", "Перед": "Prev", +"Марта": "Marta", "Успех": "Success", "сайта": "site", +"Путь2": "Path2", "ответ": "response", "Перем": "Var", "Стиль": "Style", "Всего": "Total", "вроде": "like", "Плохо": "Bad", -"Марта": "Marta", "Равно": "Equal", "Гифка": "GIF", "ЭтоOS": "IsOS", @@ -224,17 +224,15 @@ "ЯДиск": "YDisk", "Антон": "Anton", "Финал": "Final", -"места": "of the venue", +"Лист1": "Sheet1", "Любой": "Any", -"МБайт": "MByte", -"Блоки": "Blocks", "Тесты": "Tests", "Синий": "Blue", "Логин": "Login", "Минск": "Minsk", -"Опрос": "Poll", "Заказ": "Order", "Папка": "Folder", +"Опрос": "Poll", "Тогда": "Then", "Склад": "Warehouse", "число": "number", @@ -242,37 +240,39 @@ "Метод": "Method", "С TLS": "With TLS", "Автор": "Author", +"Откат": "Rollback", +"Блоки": "Blocks", "Отбор": "Filter", -"Лист1": "Sheet1", +"Поле3": "Field3", "Опции": "Options", -"Драйв": "Drive", "отчет": "report", "Копия": "Copy", "Белый": "White", "Слэши": "Slashes", "Канал": "Channel", "Файлы": "Files", -"Поле3": "Field3", "Найти": "Find", +"путей": "paths", "Дата1": "Date1", -"будет": "will", "Поле2": "Field2", "Поиск": "Search", "Аудио": "Audio", "ТЗнач": "TValue", +"места": "of the venue", "Буфер": "Buffer", -"Откат": "Rollback", -"Поле1": "Field1", -"диске": "disk", -"КБайт": "KBytes", +"Драйв": "Drive", +"будет": "will", +"Отгул": "Time off", +"МБайт": "MByte", +"Пауза": "Pause", "строк": "strings", +"Сутки": "Day", "файлу": "file", "Шапка": "Header", "Копий": "Copies", "диска": "of drive", "Гифки": "Gifs", "Лист2": "Sheet2", -"ТВЕРЬ": "Tver", "сумма": "amount", "Число": "Number", "Добро": "Welcome", @@ -282,28 +282,27 @@ "Части": "Parts", "Тариф": "Tariff", "часть": "part", -"Опция": "Option", -"Файлу": "File", -"Пакет": "Package", +"ТВЕРЬ": "Tver", +"чтобы": "for", +"диске": "disk", "Скоуп": "Scope", +"Почта": "Email", "Вывод": "Output", "Лимит": "Limit", "Текст": "Text", "Книга": "Spreadsheet", -"Почта": "Email", -"чтобы": "for", -"токен": "token", +"Пакет": "Package", "телом": "body", +"токен": "token", "Пусто": "Empty", "Монго": "Mongo", "Набор": "Set", +"Файлу": "File", "Товар": "Product", -"Сдвиг": "Shift", -"Сутки": "Day", +"Опция": "Option", "ЮТест": "UTest", -"после": "after", +"Сдвиг": "Shift", "почта": "email", -"Адрес": "Address", "Грант": "Grant", "Файла": "File", "Номер": "Number", @@ -311,65 +310,65 @@ "Часть": "Part", "Бакет": "Bucket", "Сканы": "Scans", -"Пауза": "Pause", "Видео": "Video", "Домен": "Domain", "ЭтоV2": "IsV2", "Архив": "Archive", "Токен": "Token", "Почты": "Mails", -"Листы": "Sheets", -"Форум": "Forum", -"адрес": "adress", -"имеет": "have", -"почты": "of email", -"Отгул": "Time off", "Схема": "Scheme", -"Серый": "Gray", +"Листы": "Sheets", +"Адрес": "Address", +"Форум": "Forum", +"после": "after", +"имеет": "have", "серый": "gray", +"Серый": "Gray", +"адрес": "adress", "Твиты": "Tweets", "файла": "file", "Дата0": "Date0", "Вызов": "Call", -"Ответ": "Response", "СокрЛ": "TrimL", "Режим": "Mode", +"Ответ": "Response", "Ноушн": "Notion", "Путь1": "Path1", "Новый": "New", "После": "After", "Дрель": "Drill", -"Вайбер": "Viber", -"Рандом": "Random", -"Это A3": "ThisIsA3", +"КБайт": "KBytes", +"почты": "of email", +"задача": "task", "Ескейп": "Escape", +"Рандом": "Random", +"Вайбер": "Viber", "ТипЗнч": "TypeOf", "Объект": "Object", "Москва": "Moscow", -"задача": "task", +"Это A3": "ThisIsA3", "валюты": "of currency", -"Неделя": "Week", +"Секрет": "Secret", "Черный": "Black", "Оплата": "Payment", "Должно": "Should", "Товар1": "Item1", "товара": "product", "Флажок": "Checkbox", -"Секрет": "Secret", "ДатаОт": "DateFrom", +"ширина": "width", "Клиент": "Client", "Это A4": "ThisIsA4", -"Видео2": "Video2", +"Неделя": "Week", "Кнопка": "Button", -"булево": "boolean", -"работе": "work", -"работу": "work", +"Задача": "Task", +"IDЧата": "ChatID", "Это A1": "ThisIsA1", +"булево": "boolean", "валюта": "currency", "Привет": "Hello", "Формат": "Format", "Ячейка": "Cell", -"Задача": "Task", "Символ": "Symbol", "Фильтр": "Filter", "задачи": "of topic", @@ -380,27 +379,26 @@ "Маркер": "Marker", "Первый": "First", "строка": "string", -"ИДФото": "PhotoID", "ошибки": "errors", "Страны": "Countrues", "СлакОк": "SlackOk", "тестов": "tests", -"IDЧата": "ChatID", +"работу": "work", +"работе": "work", "Ошибка": "Error", -"Парсер": "Parser", +"Иконки": "Icons", "истина": "true", -"Диалог": "Dialog", "Россия": "Russia", +"успеть": "make it in time", "Низкий": "Low", "IDТипа": "TypeID", "искать": "search", "Темный": "Dark", -"Петров": "Doe", "Прочее": "Miscellaneous", "автора": "of author", -"Иконки": "Icons", +"Желтый": "Yellow", "Сервер": "Host", -"форума": "of forum", +"Петров": "Doe", "стадия": "stage", "Курсор": "Cursor", "Версия": "Version", @@ -408,12 +406,13 @@ "Ответы": "Answers", "Первое": "First", "равным": "equal", +"форума": "of forum", "Массив": "Array", "Завтра": "Tomorrow", +"Диалог": "Dialog", "Размер": "Size", -"успеть": "make it in time", +"Сессия": "Session", "сервер": "server", -"опция1": "option1", "ДатаПо": "DateTo", "IDФото": "PhotoID", "важное": "important", @@ -423,10 +422,9 @@ "Текст2": "Text2", "корень": "root", "Записи": "Records", -"Сессия": "Session", "плёнок": "film", +"Видео2": "Video2", "частей": "parts", -"отчете": "report", "Скидка": "Discount", "вопрос": "question", "Откуда": "From", @@ -434,17 +432,18 @@ "вывода": "output", "старая": "old", "Секция": "Section", +"Парсер": "Parser", "Разбан": "Unban", -"Желтый": "Yellow", -"ширина": "width", -"5 Цикл": "5 Do", -"Иконка": "Icon", -"ответа": "of response", +"опция1": "option1", +"отчете": "report", +"ВКЛайк": "VKLike", +"ИДФото": "PhotoID", +"Это B2": "ThisIsB2", +"Коммит": "Commit", "стадию": "stage", "создан": "created", "Пароль": "Password", "ВКПост": "VKPost", -"массив": "array", "Работа": "Work", "группе": "group", "Модель": "Model", @@ -455,41 +454,41 @@ "Важное": "Important", "Отступ": "Indent", "внутри": "inside", -"ВКЛайк": "VKLike", "данных": "data", "Оценка": "Mark", "Группы": "Groups", "IDЛида": "LeadID", "Пустая": "Clear", -"Дважды": "Twice", "Это A2": "ThisIsA2", +"ответа": "of response", +"опцияN": "optionN", +"Дважды": "Twice", "команд": "commands", -"Список": "List", -"Это B3": "ThisIsB3", -"Широта": "Latitude", -"Гифка2": "Gif2", +"5 Цикл": "5 Do", +"Период": "Period", "Бирюза": "Cyan", +"Широта": "Latitude", +"Это B3": "ThisIsB3", "Ответ1": "Response1", "оценка": "mark", "Услуги": "Services", -"Период": "Period", +"Гифка2": "Gif2", "высота": "height", -"прокси": "proxy", +"Это B1": "ThisIsB1", "IDТемы": "ThreadID", "первый": "first", "начала": "of start", "файлов": "of files", "Задачи": "Tasks", "Истина": "True", -"Это B1": "ThisIsB1", "Аддоны": "Addons", +"Список": "List", "АТПоле": "ATField", "ставка": "value", -"Коммит": "Commit", -"опцияN": "optionN", -"Канбан": "Kanban", -"Вопрос": "Question", -"Модуль": "Module", +"массив": "array", +"Прокси": "Proxy", +"прокси": "proxy", +"Письмо": "Letter", "Строка": "String", "Хорошо": "Good", "Книга2": "Spreadsheet2", @@ -500,7 +499,6 @@ "второй": "second", "Ссылка": "Link", "Ширина": "Width", -"Это B2": "ThisIsB2", "ФотоID": "PhotoID", "СокрЛП": "TrimAll", "Пакеты": "Packages", @@ -510,24 +508,24 @@ "Ответ2": "Response2", "только": "only", "хлопок": "cotton", +"Вопрос": "Question", "Основа": "Base", +"Модуль": "Module", "IDПоля": "FieldID", -"Скрыть": "Hide", +"Канбан": "Kanban", "Заказы": "Orders", -"Индекс": "Index", -"Письмо": "Letter", "Булево": "Boolean", "Кнопки": "Buttons", +"Скрыть": "Hide", "ФайлДД": "FileBD", "Услуга": "Service", "Данные": "Data", "метода": "method", -"Промпт": "Prompt", -"Прокси": "Proxy", +"Иконка": "Icon", "Сервис": "Service", "работы": "work", "Шаблон": "Template", -"Склады": "Warehouses", +"Промпт": "Prompt", "группы": "of group", "СКонца": "FromEnd", "Проект": "Project", @@ -535,24 +533,22 @@ "Раздел": "Section", "Товар2": "Item2", "ВСпейс": "VSpace", +"Склады": "Warehouses", "Это B4": "ThisIsB4", -"шаблону": "for pattern", -"красный": "red", -"ГринКод": "GreenCode", -"Вывести": "Write", -"IDВидео": "VideoID", +"Индекс": "Index", "Отладка": "Debugging", -"Команда": "Command", -"ИмяТипа": "TypeName", -"Вопрос1": "Question1", -"ОзонSKU": "OzonSKU", -"запуска": "start", -"Вариант": "Option", -"1 Тогда": "1 Then", "Евгений": "Evgeniy", +"1 Тогда": "1 Then", +"Вариант": "Option", +"IDВидео": "VideoID", +"ИмяТипа": "TypeName", +"ОзонSKU": "OzonSKU", +"Вопрос1": "Question1", +"Команда": "Command", "ОпросID": "PollID", +"запуска": "start", "СНачала": "FromBegin", -"Секунды": "Seconds", +"Битрикс": "Bitrix", "Каталог": "Directory", "Кнопка1": "Button1", "ТипMIME": "MIMEType", @@ -560,25 +556,26 @@ "ЭтоБаза": "ThisIsBase", "текущую": "current", "Остаток": "Residue", -"Битрикс": "Bitrix", "Возврат": "Return", -"Синоним": "Synonym", +"ОзонАПИ": "OzonAPI", +"Вывести": "Write", +"НСУспех": "NCSuccess", +"Секунды": "Seconds", +"ГринКод": "GreenCode", +"Удаляет": "Deletes", "Размеры": "Sizes", -"Вопрос2": "Question2", -"учетных": "credentials", -"ЭтоВход": "Start", +"красный": "red", "Создать": "Create", "Отметка": "Timestamp", "АТТекст": "ATText", "Телефон": "Phone", -"Удаляет": "Deletes", "AuthВид": "AuthType", "Извлечь": "Extract", "крайний": "last", "Таймаут": "Timeout", "Позиция": "Item", +"учетных": "credentials", "Скачать": "Download", -"Единица": "Unit", "Строка_": "String_", "Таблицы": "Tables", "глубина": "depth", @@ -590,40 +587,40 @@ "Таблица": "Table", "Перенос": "LineBreak", "IDПапки": "FolderID", -"ОзонАПИ": "OzonAPI", -"НСУспех": "NCSuccess", -"текущей": "current", +"Единица": "Unit", +"Вопрос2": "Question2", +"шаблону": "for pattern", "ВКТовар": "VKProduct", -"Позиции": "Items", +"Реклама": "Advertisement", +"Отметки": "Tags", "фамилия": "surname", "нажмите": "press", "Граница": "Border", "Колонки": "Columns", "Аккаунт": "Account", "IDМетки": "TagID", -"методы:": "methods:", "ИмяУзла": "NodeName", "Скрытый": "Hidden", "Подпись": "Signature", "ИДБлока": "BlockID", -"КакЕсть": "Raw", +"методы:": "methods:", +"Функция": "Function", "Запросы": "Requests", -"ТекстДД": "TextBD", -"главным": "main", -"Нажмите": "Click on", -"Твиттер": "Twitter", -"ID чата": "Chat ID", -"Реклама": "Advertisement", -"свойств": "properties", -"смайлов": "smiles", +"КакЕсть": "Raw", "Ожидаем": "Awaiting", +"смайлов": "smiles", +"свойств": "properties", "Скрытая": "Hidden", +"Твиттер": "Twitter", +"Нажмите": "Click on", +"главным": "main", +"ТекстДД": "TextBD", +"ID чата": "Chat ID", +"ЭтоВход": "Start", "единица": "unit", +"Позиции": "Items", "Элемент": "Element", -"телефон": "phone", -"Локация": "Location", -"IDСтены": "WallID", -"Отметки": "Tags", +"Попытки": "Attempts", "ТипХеша": "HashType", "IDЧасти": "ContentID", "системе": "at system", @@ -632,7 +629,7 @@ "СдэкАПИ": "CdekAPI", "Обычный": "Regular", "Метрика": "Metrika", -"Попытки": "Attempts", +"текущей": "current", "ИмяПоля": "FieldName", "парсить": "parse", "Экспорт": "Export", @@ -647,15 +644,15 @@ "Остатки": "Stocks", "IDФайла": "FileID", "Процент": "Percent", +"Локация": "Location", +"телефон": "phone", +"IDСтены": "WallID", "Кнопка2": "Button2", -"Функция": "Function", +"Синоним": "Synonym", "Крайний": "Last", -"Записал": "Write it!", -"События": "Events", "цепочке": "chain", "АудиоДД": "AudioDD", "СлакБот": "SlackBot", -"ЦветИмя": "ColorName", "запроса": "of request", "секцией": "section", "Открыть": "Open", @@ -664,8 +661,8 @@ "статуса": "of status", "наличие": "availability", "IDАкции": "PromoID", +"События": "Events", "ID лида": "Lead ID", -"Колонка": "Coloumn", "ЕстьТег": "HasTag", "ссылкой": "URL", "команды": "commands", @@ -676,24 +673,23 @@ "Фильтры": "Filters", "Закрыть": "Close", "вызвана": "called", -"Альбомы": "Albums", -"0 Тогда": "0 Then", "пустого": "empty", -"Кнопка3": "Button3", -"НЕ JSON": "NOT JSON", -"Счетчик": "Counter", +"Колонка": "Coloumn", +"ПолеURL": "URLField", +"Альбомы": "Albums", +"ЦветИмя": "ColorName", "Строка:": "String:", -"ЮТТесты": "UTTests", -"Активен": "Active", -"VK (ОПИ": "VK (OpenIntegrations", -"ВидеоДД": "VideoDD", -"Альпака": "Alpaca", -"ДатаISO": "DateISO", "История": "Story", -"ТегиXML": "TagsXML", +"ДатаISO": "DateISO", +"Счетчик": "Counter", +"Активен": "Active", +"ВидеоДД": "VideoDD", +"VK (ОПИ": "VK (OpenIntegrations", +"ЮТТесты": "UTTests", "ТипУзла": "NodeType", +"Альпака": "Alpaca", "Префикс": "Prefix", -"ВКЧисло": "VKNumber", +"каждого": "each", "ФайлSQL": "SQLFile", ".Equal(": ".Равно(", "Код ПВЗ": "POZ code", @@ -701,15 +697,16 @@ "справку": "help", "Удалить": "Delete", "Отлично": "Great", -"каждого": "each", "АБВ ГДЕ": "ABC DEF", "Объекты": "Objects", +"НЕ JSON": "NOT JSON", "ТипПоля": "FieldType", -"ПолеURL": "URLField", +"ВКЧисло": "VKNumber", +"Кнопка3": "Button3", "признак": "attribute", -"ДопПоля": "AddFields", -"Команды": "Commands", -"Утилиты": "Tools", +"Зеленый": "Green", +"ТегиXML": "TagsXML", +"базовой": "base", "Высокий": "High", "Природа": "Nature", "артикул": "article", @@ -720,7 +717,7 @@ "Коммент": "Comment", "Каждого": "Each", "Область": "Region", -"Обложка": "Cover", +"Команды": "Commands", "ФайлРез": "ResultFile", "указано": "filled", "В офисе": "InOffice", @@ -734,35 +731,38 @@ "IDПоста": "PostID", "Кластер": "Cluster", "S3Успех": "S3Success", +"ДопПоля": "AddFields", +"Утилиты": "Tools", "Признак": "Indication", +"Обложка": "Cover", "Желтый_": "Yellow_", -"ЭтоФлаг": "IsFlag", -"СдэкЧек": "CdekCheck", -"базовой": "base", "которые": "that", +"0 Тогда": "0 Then", "Мой Мир": "My World", "удалено": "deleted", "формате": "format", "события": "events", "Красный": "Red", "Виталий": "Vitaly", -"ID темы": "Thread ID", "Причина": "Reason", "Доступы": "Rights", +"СдэкЧек": "CdekCheck", "IDМедиа": "MediaID", -"промпта": "prompt", -"Разделы": "Sections", +"ID темы": "Thread ID", "КлючAPI": "APIKey", -"ИДПоста": "PostID", -"граммах": "grams", -"Зеленый": "Green", -"Контакт": "Contact", -"Булево_": "Boolean_", -"S3 (ОПИ": "S3 (OpenIntegrations", -"Артикул": "Article", -"парсера": "parser", +"ЭтоФлаг": "IsFlag", +"Разделы": "Sections", +"Записал": "Write it!", "Сделать": "Make", -"МассивID": "IDArray", +"парсера": "parser", +"Артикул": "Article", +"промпта": "prompt", +"Булево_": "Boolean_", +"Контакт": "Contact", +"граммах": "grams", +"ИДПоста": "PostID", +"S3 (ОПИ": "S3 (OpenIntegrations", +"штрихкод": "barcode", "ЕстьДата": "HasDate", "Сообщить": "Message", "Elements": "Items", @@ -772,9 +772,8 @@ "Имя,MIME": "Name,MIME", "ДатаСтоп": "EndDate", "Транслит": "Traslit", -"штрихкод": "barcode", "Вложения": "Attachments", -"ФайлПуть": "FilePath", +"ХешСумма": "HashSum", "Параметр": "Parameter", "СтрДлина": "StrLen", "ДропБокс": "Dropbox", @@ -786,14 +785,11 @@ "ХостПорт": "HostPort", "Телеграм": "Telegram", "Евгеньев": "Evgeniev", -"двоичные": "binary", -"ТипМедиа": "TypeOfMedia", -"API ключ": "API key", -"ДатаISOZ": "DateISOZ", -"ТекстSQL": "TextSQL", -"Картинка": "Image", +"ФайлПуть": "FilePath", +"МассивID": "IDArray", "ЭтоКанал": "IsChannel", -"ТипЧисло": "TypeNumber", +"двоичные": "binary", +"возможно": "maybe", "Не JSON:": "Not JSON:", "Беларусь": "Belarus", "Добавить": "Add", @@ -802,8 +798,8 @@ "Свойства": "Properties", "Уадление": "Removal", "ИмяФайла": "FileName", +"ТекстSQL": "TextSQL", "IDФайла2": "FileID2", -"СтрВсего": "StrTotal", "Прервать": "Break", "ИДРаботы": "WorkID", "СтрокаТЗ": "DataString", @@ -815,40 +811,41 @@ "IDЗатрат": "SpendingID", "подборку": "selection", "оплачено": "paid", -"ХешСумма": "HashSum", -"возможно": "maybe", -"ИмеетТип": "HasType", -"Имя базы": "Database name", -"IDИконки": "IconID", -"каталога": "directory", -"ЕстьJSON": "FindJSON", +"СтрВсего": "StrTotal", +"ДатаISOZ": "DateISOZ", +"ТипМедиа": "TypeOfMedia", +"ЕстьКлюч": "KeyExists", +"API ключ": "API key", +"Кнопка 1": "Button 1", +"Основная": "Main", "Элементы": "Items", "контакта": "of contact", "Прогресс": "Progress", "доступен": "available", "В оффисе": "On office", -"Варианты": "Options", "ЯМетрика": "YaMetrika", "Значение": "Value", "IDЗадачи": "TaskID", -"Проверки": "Checks", +"IDИконки": "IconID", "IDГруппы": "GroupID", +"Проверки": "Checks", +"ЕстьJSON": "FindJSON", "страницу": "page", -"ID акции": "Promo ID", -"Закрытие": "Closing", -"Петрович": "Petrovich", -"Свойство": "Property", -"В работе": "InProgress", +"Смещение": "Offset", +"значение": "value", +"Упаковка": "Packaging", "ПоляБазы": "BaseFields", "ФайлТела": "BodyFile", -"Упаковка": "Packaging", -"значение": "value", -"Смещение": "Offset", +"Свойство": "Property", +"Петрович": "Petrovich", +"Закрытие": "Closing", +"ID акции": "Promo ID", +"В работе": "InProgress", +"Картинка": "Image", "Компания": "Company", "КонецСтр": "EndStr", -"ОбъектВК": "VKObject", -"Двоичные": "Binary", -"Основная": "Main", +"каталога": "directory", +"Варианты": "Options", "ИДТовара": "ProductID", "Действие": "Action", "Оригинал": "Original", @@ -858,10 +855,9 @@ "Подборка": "Selection", "закрытия": "of closing", "Удаление": "Deletion", -"Кнопка 1": "Button 1", "компании": "of company", +"Двоичные": "Binary", "IDТовара": "ProductID", -"временем": "time", "Половина": "Half", "НЕ JSON:": "NOT JSON:", "Записать": "Write", @@ -871,14 +867,14 @@ "элементы": "elements", "ID метки": "Tag ID", "МедиаГиф": "MediaGif", +"ИмеетТип": "HasType", "описание": "description", +"временем": "time", +"ОбъектВК": "VKObject", +"Имя базы": "Database name", "Отложена": "Deferred", -"ЕстьКлюч": "KeyExists", +"ТипЧисло": "TypeNumber", "МОНОХРОМ": "MONOCHROME", -"ИмяЛиста": "SheetName", -"Отчество": "Patronymic", -"Загрузка": "Upload", -"IDСтадии": "StageID", "ГКОбъект": "GCObject", "Завершен": "Completed", "Разметка": "Markup", @@ -890,8 +886,8 @@ "контекст": "context", "ID книги": "SpreadsheetID", "ХэшСумма": "HashSum", +"IDСтадии": "StageID", "Точность": "Precision", -"методами": "methods", "Выполнен": "Completed", "ИмяМедиа": "MediaName", "Строчный": "StringType", @@ -902,9 +898,13 @@ "Получить": "Get", "ГринФайл": "GreenFile", "ВКИстина": "VKTrue", -"АТЗаписи": "ATRecords", "Название": "Name", +"методами": "methods", +"отклчить": "disable", +"Отчество": "Patronymic", "Видмость": "Visibility", +"Загрузка": "Upload", +"Приемник": "Receiver", "РазмерДД": "SizeDD", "Делитель": "Divider", "Свернуть": "Collapse", @@ -914,9 +914,8 @@ "являются": "be", "ГуглЛист": "GoogleSheet", "картинок": "images", -"Приемник": "Receiver", "ID поста": "Post ID", -"ПутьФайл": "FilePath", +"параметр": "parameter", "ВКорзину": "ToCart", "Выгрузка": "Unload", "Вставить": "Insert", @@ -928,13 +927,11 @@ "собщение": "message", "отправки": "of sending", "магазина": "store", -"параметр": "parameter", -"отклчить": "disable", +"ПутьФайл": "FilePath", "действий": "actions", -"JSONДата": "JSONDate", -"удаления": "of deleting", -"Комплект": "Set", -"ПоОдному": "Singly", +"Тестовая": "Test", +"АТЗаписи": "ATRecords", +"подборки": "selections", "БлокJSON": "JSONBlock", "Родитель": "Parent", "Числовой": "Numeric", @@ -945,10 +942,9 @@ "ID блока": "Block ID", "Артикулы": "Articles", "настроек": "settings", -"TCP (ОПИ": "TCP (ОПИ", "СхемаFBO": "FBOScheme", +"ПоОдному": "Singly", "Неоситиз": "Neocities", -"СлакФайл": "SlackFile", "ТипСхемы": "SchemeType", "Вложение": "Attachment", "значения": "values", @@ -958,51 +954,55 @@ "ТипФайла": "FileType", "ВайберОк": "ViberOk", "ВГраница": "UBound", -"Тестовая": "Test", -"ЦветПоле": "ColorField", -"защитных": "protective", -"Телефоны": "Phones", -"ТипСвязи": "LinkType", -"подборки": "selections", -"ВКРепост": "VKRepost", +"удаления": "of deleting", +"JSONДата": "JSONDate", +"СлакФайл": "SlackFile", +"Комплект": "Set", +"TCP (ОПИ": "TCP (ОПИ", +"тип цели": "goal type", "Подробно": "Detailed", +"ЦветПоле": "ColorField", "IDСклада": "WarehouseID", "мКоманды": "mCommands", "URLФайла": "FileURL", "например": "for example", "указания": "instructions", "Картинки": "Pictures", -"тип цели": "goal type", "IDЗаписи": "RecordID", +"ТипСвязи": "LinkType", "ФайлЛога": "LogFile", -"Отправка": "Sending", -"Очистить": "Clear", +"ВКРепост": "VKRepost", "Черновик": "Draft", +"Очистить": "Clear", "ФайлСлак": "SlackFile", -"Загрузки": "Downloads", -"Действия": "Actions", -"ЭтотФайл": "ThisFile", -"Документ": "Document", -"НовоеИмя": "NewName", +"защитных": "protective", +"Телефоны": "Phones", +"Отправка": "Sending", +"ИмяЛиста": "SheetName", "ТекстB64": "TextB64", "ДлинаURI": "URILength", -"ЭтоСервер": "IsServer", -"НеНайдено": "NotFound", -"доступных": "available", -"Поддержка": "Support", -"ОзонПоиск": "OzonSearch", -"НаКлиенте": "AtClient", -"имя метки": "lable name", -"СдэкТокен": "CdekToken", -"Прочитать": "Read", +"Документ": "Document", +"ЭтотФайл": "ThisFile", +"Действия": "Actions", +"Загрузки": "Downloads", +"НовоеИмя": "NewName", "Цвет (изм": "Color (change", -"OPI тесты": "OPI tests", -"РазмерСДХ": "SizeCDH", +"Прочитать": "Read", +"СдэкТокен": "CdekToken", +"имя метки": "lable name", +"НаКлиенте": "AtClient", "IDНовости": "PostID", +"Поддержка": "Support", +"доступных": "available", +"НеНайдено": "NotFound", +"OPI тесты": "OPI tests", +"ЭтоСервер": "IsServer", +"ОзонПоиск": "OzonSearch", +"ПотокТела": "BodyStream", +"Код КЛАДР": "CLADR code", "IDАльбома": "AlbumID", "ПотокJSON": "JSONStream", "Константы": "Constants", -"Конецесли": "EndIf", "программы": "program", "коллекция": "collection", "обработки": "processing", @@ -1010,16 +1010,15 @@ "Открывает": "Opens", "ТипТекста": "TextType", "ПолноеИмя": "FullName", -"Код КЛАДР": "CLADR code", "299 Тогда": "299 Then", +"НачалоBat": "StartBat", +"РазмерСДХ": "SizeCDH", "Параметр_": "Parameter_", -"Затрачено": "Spend", -"ПотокТела": "BodyStream", -"ГуглКнига": "GoogleSpreadsheet", -"ВКИстория": "VKStorie", +"РазмерCDH": "SizeCDH", +"сообщения": "of message", +"Активация": "Activation", "ИначеЕсли": "ElsIf", "последним": "last", -"РазмерCDH": "SizeCDH", "Обработки": "DataProcessors", "ID канала": "Channel ID", "Заголовок": "Title", @@ -1029,8 +1028,8 @@ "Одиночное": "Single", "Участники": "Members", "Цвет чата": "Chat color", +"ВКИстория": "VKStorie", "Обработка": "Processor", -"ЯДискДиск": "YaDiskDrive", "TCPКлиент": "TCPClient", "Результат": "Result", "Категории": "Categories", @@ -1043,42 +1042,41 @@ "ID склада": "Warehouse ID", "PutСТелом": "PutWithBody", "Изменение": "Change", -"сообщения": "of message", -"Активация": "Activation", -"Вложение2": "Attachment2", -"Процедура": "Procedure", -"Батарейки": "Batteries", -"ИДЖелтого": "YellowID", +"ЯДискДиск": "YaDiskDrive", +"ГуглКнига": "GoogleSpreadsheet", +"Затрачено": "Spend", +"XMLСтрока": "XMLString", +"Перейдите": "Go", +"Исполнить": "Execute", "ВидеоПуть": "VideoPath", "публичный": "public", "Заполнено": "Filled", "НовыйЛист": "NewSheet", "видимость": "visibility", "Доступные": "Available", -"Штрихкоды": "Barcodes", "Календарь": "Calendar", "АТТаблица": "ATTable", +"Схема FBO": "FBO scheme", "RCON (ОПИ": "RCON (OpenIntegrations", "Получение": "Obtaining", +"ИДЖелтого": "YellowID", "Картинка1": "Image1", -"Ozon (ОПИ": "Ozon (OpenIntegrations", -"Как дела?": "How are you?", -"ИДАльбома": "AlbumID", -"окончания": "of end", -"XMLСтрока": "XMLString", -"Схема FBO": "FBO scheme", -"ВКТСписок": "VKTList", -"Значение1": "Value1", -"ГифкаПуть": "GifPath", -"TC_Сервер": "TC_Server", -"ВерсияАпи": "APIVersion", "Локальный": "Local", "Сигнатура": "Signature", +"Ozon (ОПИ": "Ozon (OpenIntegrations", +"ВерсияАпи": "APIVersion", +"TC_Сервер": "TC_Server", +"Значение1": "Value1", +"ВКТСписок": "VKTList", +"ГифкаПуть": "GifPath", +"окончания": "of end", +"ИДАльбома": "AlbumID", +"Как дела?": "How are you?", +"ОтветТело": "ResponseBody", +"Штрихкоды": "Barcodes", +"Батарейки": "Batteries", "отражения": "reflection", -"Исполнить": "Execute", -"Видимость": "Visibility", -"Строковое": "String", -"Перейдите": "Go", +"Коллекция": "Collection", "Нормально": "Ok", "ПолныйURL": "FullURL", "Текстовое": "Text", @@ -1089,10 +1087,9 @@ "Структура": "Structure", "TC_Клиент": "TC_Client", "ЧастиПоля": "FieldParts", -"Коллекция": "Collection", "сообщение": "message", +"Строковое": "String", "ПодписьДД": "SignBD", -"заголовок": "title", "Велосипед": "Bicycle", "РазмерЕСД": "SizeESD", "ТипСтрока": "TypeString", @@ -1103,14 +1100,16 @@ "Нумерация": "Numeration", "Новый чат": "New chat", "URL файла": "File URL", +"Вложение2": "Attachment2", "Выполнить": "Execute", -"ОтветТело": "ResponseBody", -"НачалоBat": "StartBat", -"Удаленный": "Remote", -"URLОтвета": "ResponseURL", +"заголовок": "title", +"Видимость": "Visibility", +"Процедура": "Procedure", +"Конецесли": "EndIf", +"Вычислить": "Eval", +"Коллекции": "Collections", "МассивИД_": "ArrayID_", "категории": "category", -"Служебные": "Service", "Равенство": "Equality", "ПутьЛогов": "LogPath", "приоритет": "priority", @@ -1121,8 +1120,8 @@ "ПутьКСтат": "PathToStat", "Опоздание": "Late", "Запустить": "Start", +"Приоритет": "Priority", "БанРазбан": "BanUnban", -"Параметры": "Parameters", "Подборки_": "Selections_", "ПутьКопии": "CopyPath", "ЯМаркетОк": "YaMarketOk", @@ -1135,26 +1134,27 @@ "откюлчить": "disable", "Значение_": "Value_", "АудиоПуть": "AudioPath", -"Календари": "Calendars", +"Параметры": "Parameters", "СтрокаBat": "BatString", -"ВКТЗаявки": "VKTPending", -"состояния": "status", -"IDСобытия": "EventID", -"Состояние": "State", -"TCPСервер": "TCPServer", -"CDEK (ОПИ": "CDEK (OpenIntegrations", -"ОбъектОПИ": "OPIObject", -"ИмяМетода": "MethodName", -"Получено!": "Get it!", -"Приватный": "Private", -"Анонимный": "Anonymous", -"СтрокаURI": "URIString", -"избранное": "favorite", -"Настройки": "Settings", +"Календари": "Calendars", "AWSЗапрос": "AWSRequest", +"Удаленный": "Remote", +"СтрокаURI": "URIString", +"Анонимный": "Anonymous", +"Приватный": "Private", +"Получено!": "Get it!", +"ИмяМетода": "MethodName", +"СдэкЗаказ": "CdekOrder", +"CDEK (ОПИ": "CDEK (OpenIntegrations", +"TCPСервер": "TCPServer", +"Состояние": "State", +"избранное": "favorite", +"IDСобытия": "EventID", +"Служебные": "Service", +"ОбъектОПИ": "OPIObject", +"Кодировка": "Encoding", "ЗависитОт": "ЗависитОт", "ОписаниеU": "DescriptionU", -"Вычислить": "Eval", "СлакКанал": "SlackChannel", "ВКонтакте": "VKontakte", "Файл_Стат": "File_Stat", @@ -1162,14 +1162,12 @@ "Свойства_": "Properties_", "Удаляемый": "Deletable", "IDКлиента": "ClientID", -"Кодировка": "Encoding", "установки": "setting", -"СдэкЗаказ": "CdekOrder", -"Приоритет": "Priority", +"состояния": "status", +"Настройки": "Settings", "ДатаСтарт": "StartDate", -"Коллекции": "Collections", +"ВКТЗаявки": "VKTPending", "КакОбъект": "AsObject", -"Тесты CLI": "CLI Tests", "В корзину": "To cart", "ТекШирина": "CurrentWidth", "владельца": "of owner", @@ -1181,10 +1179,9 @@ "ТокенБота": "BotToken", "Имя папки": "Folder name", "ОписаниеF": "DescriptionF", -"Сумма НДС": "VAT amount", "Сообщение": "Message", +"Тесты CLI": "CLI Tests", "НачалоДня": "BegOfDay", -"сообщений": "messages", "Архивация": "Archiving", "Подробнее": "More", "Значение2": "Value2", @@ -1195,53 +1192,55 @@ "Выражение": "Expression", "ВКТИстина": "VKTTrue", "запустить": "launch", +"заполнена": "filled", "ОзонТовар": "OzonProduct", +"сообщений": "messages", "просмотра": "view", -"IDПервого": "FirstID", +"Сумма НДС": "VAT amount", "Вложение1": "Attachment1", -"ЧтениеXML": "XMLReader", "ТекущийИД": "CurrentID", "Разобрать": "Parse", +"IDПервого": "FirstID", "ЭтоМассив": "IsArray", "IDОбъекта": "ObjectID", "ЯДискПуть": "YaDiskPath", "кириллица": "cyrillic", "Пояснение": "Explanation", "Компонета": "AddIn", -"Добавляем": "Add", +"ИДОбъекта": "ObjectID", "ВебКлиент": "WebClient", "IDТоваров": "ProductsID", +"ЧтениеXML": "XMLReader", "действиях": "of actions", +"Добавляем": "Add", +"URLОтвета": "ResponseURL", "ID задачи": "Task ID", "ID товара": "Product ID", -"ЧтениеZip": "ReadingZip", -"ID стадии": "Stage ID", -"Коннектор": "Connector", -"HTTPОтвет": "HTTPResponse", -"Значение:": "Value:", -"должность": "position", -".HasType(": ".ИмеетТип(", -"заполнена": "filled", -"умолчанию": "default", -"Временный": "Temporary", "Сообщения": "Messages", -"ИДОбъекта": "ObjectID", -"Статистика": "Statistics", -"ИДКампании": "CampaignID", -"Транзакция": "Transaction", -"ТекущийТип": "CurrentType", -"МассивUUID": "UUIDArray", -"HTTPКлиент": "HTTPClient", -"Общий диск": "Main drive", -"IDКартинки": "ImageID", -"ГуглОбъект": "GoogleObject", -"ИДКабинета": "CabinetID", -"Код страны": "Country code", -".Свернуть(": ".GroupBy(", +"Временный": "Temporary", +".HasType(": ".ИмеетТип(", +"должность": "position", +"умолчанию": "default", +"HTTPОтвет": "HTTPResponse", +"Коннектор": "Connector", +"ID стадии": "Stage ID", +"ЧтениеZip": "ReadingZip", +"Значение:": "Value:", "НачалоBash": "StartBash", +"ГуглОбъект": "GoogleObject", +".Свернуть(": ".GroupBy(", +"Код страны": "Country code", +"ИДКабинета": "CabinetID", +"IDКартинки": "ImageID", +"Транзакция": "Transaction", +"Общий диск": "Main drive", +"HTTPКлиент": "HTTPClient", +"МассивUUID": "UUIDArray", +"ТекущийТип": "CurrentType", "ТелоОтвета": "ResponseBody", +"ИДКампании": "CampaignID", "ВКСвойство": "VKProp", -"БезСтатуса": "NoStatus", +"СтрТекущее": "StrCurrent", "Символы.ПС": "Chars.LF", "Фотокамера": "Photos", "ГринГруппа": "GreenGroup", @@ -1253,18 +1252,17 @@ "Завершение": "Completion", "КлючМассив": "KeyArray", "ЛогСтрокой": "LogAsString", -"СтрТекущее": "StrCurrent", "предыдущей": "previous", -"Это сервер": "Is server", -"ИДПодборки": "SelectionID", +"Статистика": "Statistics", "IDСчетчика": "CounterID", -"Получатель": "Recipient", -"IDЗагрузки": "UploadID", -"Параметры_": "Parameters_", +"БезСтатуса": "NoStatus", +"Это сервер": "Is server", +"публикации": "of publish", +"ЭтоОтладка": "IsDebug", +"заголовков": "headers", "ФайлОбъект": "FileObject", "Назначение": "Destination", "Бан/Разбан": "Ban/Unban", -"публикации": "of publish", "ООО Вектор": "LLC Vector", "УдалитьЛид": "DeleteLead", "БитриксЛид": "BitrixLead", @@ -1289,45 +1287,44 @@ "Безусловно": "Force", "они разные": "they are different", "Новый файл": "NewFile", -"ЭтоОтладка": "IsDebug", -"заголовков": "headers", -"Количество": "Count", -"HTTPЗапрос": "HTTPRequest", -"оставшихся": "remaining", -"конкретики": "specifics", -"УдалитьТег": "DeleteTag", -"СтараяЦена": "OldPrice", -"НовяИконка": "NewIcon", -"возвращает": "returns", -"PostСТелом": "PostWithBody", -"Параметры:": "Parameters:", -"ЦветТекста": "TextColor", -"ОзонМассив": "OzonArray", -"Отложенное": "Sheduled", +"IDЗагрузки": "UploadID", +"Получатель": "Recipient", +"ИДПодборки": "SelectionID", +"ЗнакНачала": "FirstSymbol", +"количество": "amount", "ДатаНачала": "StartDate", +"Отложенное": "Sheduled", +"ЦветТекста": "TextColor", +"Параметры:": "Parameters:", +"Файл гифки": "GIF file", +"PostСТелом": "PostWithBody", +"НовяИконка": "NewIcon", +"СтараяЦена": "OldPrice", +"УдалитьТег": "DeleteTag", +"выполнения": "of completing", +"ЭтотОбъект": "ThisObject", +"оставшихся": "remaining", +"возвращает": "returns", +"ВКЭлементы": "VKElement", +"ОзонМассив": "OzonArray", +"ПолныйПуть": "FullPath", +"Мегаклиент": "MegaClient", +"Внутренний": "Internal", +"сортировки": "of sorting", +"Интеграция": "Integrations", +"ID альбома": "Album ID", +"длина в см": "length, cm", +"РазмерТела": "BodySize", +"параметров": "parameters", +"разделения": "spliting", +"Приложения": "Apps", +"Токен бота": "Bot token", +"СтрокаХэша": "HashString", +"Параметры_": "Parameters_", "ЗапросТело": "RequestBody", "Разрешения": "Permissions", -"Файл гифки": "GIF file", -"ВКЭлементы": "VKElement", -"ПолныйПуть": "FullPath", -"Токен бота": "Bot token", -"Приложения": "Apps", -"разделения": "spliting", -"параметров": "parameters", -"ЗнакНачала": "FirstSymbol", -"СтрокаХэша": "HashString", -"длина в см": "length, cm", -"ID альбома": "Album ID", -"Интеграция": "Integrations", -"сортировки": "of sorting", -"Внутренний": "Internal", -"Мегаклиент": "MegaClient", -"РазмерТела": "BodySize", "Продолжить": "Continue", -"ЭтотОбъект": "ThisObject", -"ХешФункция": "HashFunction", -"участников": "of users", -"количество": "amount", +"Viber (ОПИ": "Viber (OpenIntegrations", "ЦветКнопок": "ButtonColor", "Slack (ОПИ": "Slack (OpenIntegrations", "НомерЧасти": "PartNumber", @@ -1340,11 +1337,10 @@ "ВнешнийКод": "ExternalID", "Показатель": "Indicator", "ФорматДаты": "DateFormat", -"Viber (ОПИ": "Viber (OpenIntegrations", "ДеньНедели": "WeekDay", "ИДВарианта": "VariantID", +"HTTPЗапрос": "HTTPRequest", "ЭтоКаталог": "IsDirectory", -"ЗначениеУП": "ValueES", "ВремяЖизни": "Expire", "Расширение": "Extension", "Совпадение": "Coincidence", @@ -1356,14 +1352,16 @@ "ДанныеПоля": "FieldData", "ТекстБлока": "BlockText", "IDСущности": "EntityID", +"Количество": "Count", +"участников": "of users", +"ХешФункция": "HashFunction", +"ЗначениеУП": "ValueES", "МассивФото": "PhotoArray", -"выполнения": "of completing", +"TCP Сервер": "TCP Сервер", "Сохранение": "Save", -"Приложение": "Application", "ЗапросыSQL": "SQLQueries", "IDОперации": "OperationID", "Отключение": "Shutdown", -"полужирный": "bold", "Компонента": "AddIn", "Компоненты": "AddIns", "ВидЗапроса": "RequestType", @@ -1389,25 +1387,26 @@ "Файл аудио": "Audio file", "код валюты": "Currency code", "МассивЧата": "ChatArray", -"IDДоставки": "ReceiptID", "ID диалога": "Dialog ID", -"последнего": "of last", -"IDЭлемента": "ElementID", -"повторного": "repeated", -"библиотеки": "libraries", -"ИДКаталога": "CatalogID", -"HTTP метод": "HTTP method", -"Все товары": "All goods", -"ВКТСобытия": "VKTEvents", -"СлакДиалог": "SlackDialog", -"библиотека": "library", -"ФайлВывода": "OutputFile", -"Заголовок2": "Header2", -"ГринАватар": "GreenAva", -"ЕстьДанные": "IsData", -"Расширения": "Extensions", -"Полужирный": "Bold", +"ПутьНового": "NewPath", +"Коллекция_": "Collection_", +"IDДоставки": "ReceiptID", "Разделение": "Separation", +"ЕстьДанные": "IsData", +"библиотека": "library", +"ГринАватар": "GreenAva", +"Заголовок2": "Header2", +"ФайлВывода": "OutputFile", +"СлакДиалог": "SlackDialog", +"библиотеки": "libraries", +"ВКТСобытия": "VKTEvents", +"Все товары": "All goods", +"HTTP метод": "HTTP method", +"ИДКаталога": "CatalogID", +"Расширения": "Extensions", +"повторного": "repeated", +"Полужирный": "Bold", +"пожаловать": "welcome", "ОтветТокен": "TokenResponse", "СерверПорт": "ServerPort", "Существует": "Exists", @@ -1419,15 +1418,13 @@ "ОзонИстина": "OzonTrue", "ОбщийМакет": "CommonTemplate", "ОзонТовары": "OzonProducts", -"пожаловать": "welcome", "СерверФото": "PhotoServer", +"IDЭлемента": "ElementID", "имя товара": "product name", -"ПутьНового": "NewPath", -"Коллекция_": "Collection_", -"Б24_Канбан": "B24_Kanban", -"ВсеКоманды": "AllCommands", -"IDМагазина": "CampaignID", -"Файл1.docx": "File1.docx", +"полужирный": "bold", +"библиотек:": "libraries:", +"последнего": "of last", +"Обновление": "Updating", "ЕстьОшибка": "IsError", "Вес брутто": "Gross weight", "Сообщение3": "Message3", @@ -1440,8 +1437,7 @@ "Клавиатура": "Keyboard", "HttpКлиент": "HttpClient", "участникам": "to participants", -"Объявление": "Ad", -"проведения": "of the event", +"Б24_Канбан": "B24_Kanban", "КлючДанных": "DataKey", "Заголовок1": "Header1", "ЧтениеJSON": "JSONReader", @@ -1456,296 +1452,298 @@ "ИмяТаблицы": "TableName", "IDКаталога": "FolderID", "ТочкаВхода": "EntryPoint", -"Файл видео": "Video file", +"проведения": "of the event", +"ВсеКоманды": "AllCommands", +"Файл1.docx": "File1.docx", +"IDМагазина": "CampaignID", +"Объявление": "Ad", "бибилотека": "library", -"МаксШирина": "MaxWidth", -"Пропустить": "Skip", -"Обновление": "Updating", -"Записывать": "Record", -"TCP Сервер": "TCP Сервер", -"КартинкаДД": "ImageDD", -"ВКПодборка": "VKSelection", -"ЖиваяЛента": "NewsFeed", -"НаборТегов": "TagsSet", -"ИмяКоманды": "CommandName", -"МассивИмен": "ArrayOfNames", -"ТелеграмОк": "TelegramOk", -"сортировка": "sorting", -"РазбитьURL": "SplitURL", -"Наш сервер": "Our server", -"ПолучитьQR": "GetQR", "сохранения": "saving", +"ПолучитьQR": "GetQR", +"Наш сервер": "Our server", +"РазбитьURL": "SplitURL", +"ТелеграмОк": "TelegramOk", +"МассивИмен": "ArrayOfNames", "Информация": "Information", +"ИмяКоманды": "CommandName", +"ЖиваяЛента": "NewsFeed", +"ВКПодборка": "VKSelection", +"КартинкаДД": "ImageDD", +"конкретики": "specifics", +"Файл видео": "Video file", +"Записывать": "Record", +"НаборТегов": "TagsSet", "ЗапросПорт": "RequestPort", +"сортировка": "sorting", "Совпадения": "Coincidences", -"Глобальный": "Global", -"КлючТокена": "TokenKey", -"ОжидаетЧто": "ExpectsThat", -"ТекущееИмя": "CurrentName", -"тип сделки": "deal type", -"библиотек:": "libraries:", -"СтрСправка": "StrHelp", -"мПараметры": "mParams", -"ПотокФайла": "StreamOfFile", -"MySQL (ОПИ": "MySQL (ОПИ", +"Пропустить": "Skip", +"Приложение": "Application", "результата": "result", -"МассивЦелей": "GoalsArray", +"MySQL (ОПИ": "MySQL (ОПИ", +"ПотокФайла": "StreamOfFile", +"мПараметры": "mParams", +"МаксШирина": "MaxWidth", +"тип сделки": "deal type", +"ТекущееИмя": "CurrentName", +"ОжидаетЧто": "ExpectsThat", +"КлючТокена": "TokenKey", +"Глобальный": "Global", +"СтрСправка": "StrHelp", +"Суперклиент": "SuperClient", +"Неравенство": "Inequality", +"постановщик": "producer", "ID кабинета": "Business ID", "КлючРегиона": "RegionKey", "ПараметрURL": "URLParameter", "Тест диалог": "Test dialog", -"ОбщийРазмер": "TotalSize", -"Неравенство": "Inequality", +"РазмерЧасти": "ChunkSize", "Notion (ОПИ": "Notion (OpenIntegrations", "ТипВложений": "AttachmentsType", +"ОсновнойURL": "MainURL", "Яндекс Диск": "Yandex Disk", "МассивТипов": "TypesArray", -"ОсновнойURL": "MainURL", -"НовыйЗапрос": "NewRequest", -"СтрЗаменить": "StrReplace", -"РазмерЧасти": "ChunkSize", -"Суперклиент": "SuperClient", "ЦветКонсоли": "ConsoleColor", +"ОбщийРазмер": "TotalSize", "КодВозврата": "ReturnCode", "МассивВидео": "VideosArray", +"ГринПрофиль": "GreenProfile", +"ID страницы": "Page ID", +"НовыйЗапрос": "NewRequest", "АдресаПочты": "EmailAddresses", "бесконечный": "endless", "ВККатегории": "VKCategories", "ОбщийДоступ": "PublicAccess", +"IDКатегории": "CategoryID", "МассивСвязи": "LinkArray", -"ID свойства": "Property ID", "IDКалендаря": "CalendarID", "Комментарии": "Comments", "Получить QR": "Get QR", "Для Asserts": "For Asserts", "ТелоСтрокой": "BodyAsString", "PatchСТелом": "PatchWithBody", -"ГринПрофиль": "GreenProfile", -"IDКатегории": "CategoryID", -"ДатаОбычная": "CommonDate", +"ID свойства": "Property ID", +"СтрЗаменить": "StrReplace", +"расширением": "extension", "ДокументURL": "DocumentURL", -"ТекстКнопки": "ButtonText", -"МассивГифок": "GifsArray", +"МассивФайла": "FileArray", "ДанныеБлока": "BlockData", "Выполняется": "In work", "ЗаписьФайла": "FileWriter", "СтрокаФайла": "FileString", "ID подборок": "Selection IDs", +"МассивГифок": "GifsArray", "ID счетчика": "Counter ID", -"МассивФайла": "FileArray", -"ВходнойФайл": "InputFile", +"БазаВПамяти": "InMemoryBase", "БазаНаДиске": "LocalBase", -"СоздатьБазу": "CreateDatabase", "ЗапросМетод": "RequestMethod", -"расширением": "extension", "Новое видео": "NewVideo", "Петров Петр": "Petrov Petr", -"БазаВПамяти": "InMemoryBase", +"ПолучитьXML": "GetXML", +"ВходнойФайл": "InputFile", "УдалитьБазу": "DropBase", -"ТипКластера": "ClusterType", "ВЗаголовках": "InHeaders", +"ФункцияХеша": "HashFunc", +"ТекстКнопки": "ButtonText", +"ОткрытьФайл": "OpenFile", "Разделение:": "Separation:", "ОченьВажное": "VeryImportant", "Бот Виталий": "Vitaly The Bot", "ЗапросыHTTP": "HTTPRequests", "ТипЗначения": "ValeType", "ЗаписатьBOM": "WriteBOM", -"ОткрытьФайл": "OpenFile", "ТекущееТело": "CurrentBody", +"ТипКластера": "ClusterType", "СоздатьПост": "CreatePost", "срок службы": "lifespan", "ПокинутьЧат": "LeaveChat", "Ollama (ОПИ": "Ollama (OpenIntegrations", "Имя таблицы": "Table name", -"ФункцияХеша": "HashFunc", -"ID страницы": "Page ID", -"ПолучитьXML": "GetXML", -"ПолныйОтвет": "FullResponse", -"ID варианта": "Variant ID", +"ДатаОбычная": "CommonDate", +"МассивЦелей": "GoalsArray", +"ТелеграмБан": "TelegramBan", +"МассивОпций": "OptionsArray", +"IDСообщения": "MessageID", +"ТекущийКлюч": "CurrentKey", +"Уведомления": "Notifications", "ИДКатегории": "CategoryID", -"IDОригинала": "OriginalID", "МассивСтран": "CountriesArray", "ширина в см": "width, cm", +"IDОригинала": "OriginalID", "ОбъектВидео": "VideoObject", -"УдалитьПост": "DeletePost", -"ТекущийКлюч": "CurrentKey", "Код региона": "Region code", +"опционально": "optional", "ДанныеСхемы": "SchemaData", "ТипПоставки": "SupplyType", "ТекстОтвета": "ReplyText", "UUID заказа": "Order UUID", +"УдалитьПост": "DeletePost", "ДФ=yyyyMMdd": "DF=yyyyMMdd", -"Исполнитель": "Responsible", -"опционально": "optional", -"IDСообщения": "MessageID", -"IDВходящего": "RepliedID", "ID магазина": "Campaign ID", -"Тема канала": "Channel topic", +"IDВходящего": "RepliedID", +"Медиагруппа": "MediaGroup", "БитриксПоля": "BitrixFields", "Иванов Иван": "Ivaniv Ivan", "вероятность": "probability", +"Тема канала": "Channel topic", "Фон истории": "Story background", -"ТелеграмБан": "TelegramBan", -"дата начала": "start date", -"Медиагруппа": "MediaGroup", +"МассивПутей": "PathsArray", +"ЧастейИмени": "NeedParts", +"Остаток. -1": "Balance. -1", "Комплексная": "Complex", "ПолеОтметки": "TimestampField", "УдалитьФайл": "DeleteFile", "ЯДискСсылка": "YaDiskLink", "Номер порта": "Port number", -"Остаток. -1": "Balance. -1", -"МассивПутей": "PathsArray", +"дата начала": "start date", +"Исполнитель": "Responsible", "ТекущийФайл": "CurrentFile", -"Уведомления": "Notifications", -"ПолучитьЛог": "GetLog", -"МассивМедиа": "MediaArray", +"Ошибка JSON": "JSON Error", +"КлючСтрокой": "KeyString", "ПотокВывода": "OutputStream", "Новая метка": "New tag", "ЗапросАдрес": "RequestAdress", "Пример кода": "Code example", "РазмерБлока": "BlockSize", +"МассивМедиа": "MediaArray", "ПустойВывод": "EmptyOutput", -"КлючСтрокой": "KeyString", -"Петр Петров": "Petr Petrov", +"ЛишниеБайты": "ExtraBytes", "РазмерФайла": "FileSize", "XMLЗначение": "XMLValue", "ЗапросТекст": "RequestText", "Новый товар": "New product", "Группировка": "Grouping", -"МассивОпций": "OptionsArray", -"ЛишниеБайты": "ExtraBytes", +"Петр Петров": "Petr Petrov", "электронная": "e", -"МассивЯчеек": "CellsArray", "ЦелевойПуть": "TargetPath", +"ПолныйОтвет": "FullResponse", +"ПолучитьЛог": "GetLog", +"ФайлНаДиске": "FileOnDisk", "НоушнОбъект": "NotionObject", "СдэкПаспорт": "CdekPassport", "JSON данные": "JSON data", "ТекущаяДата": "CurrentDate", "Цена товара": "Product price", "подзадачами": "subtask", -"ФайлНаДиске": "FileOnDisk", "Послезавтра": "NextDay", +"МассивЯчеек": "CellsArray", "КопироватьВ": "CopyTo", "электронной": "of e", "Текст твита": "Tweet text", "Примечание:": "Note", "СкачатьФайл": "DownloadFile", -"Ошибка JSON": "JSON Error", -"ЧастейИмени": "NeedParts", -"постановщик": "producer", -"ТекущееПоле": "CurrentField", -"Хеширование": "Hashing", +"ID варианта": "Variant ID", +"СоздатьЛист": "CreateSheet", +"СоздатьБазу": "CreateDatabase", +"СоздатьПоле": "CreateField", +"IDКаталога2": "FolderID2", +"B64Картинка": "B64Image", "ОбщийМодуль": "CommonModule", "ЕстьПризнак": "FlagExists", -"ID атрибута": "Attribute ID", "НомерЗаказа": "OrderNumber", -"СоздатьЛист": "CreateSheet", "ШаблонБлока": "BlockTemplate", +"НовыйСпособ": "NewMethod", "комментарии": "comments", -"IDКаталога2": "FolderID2", -"Комментарий": "Comment", +"СигнатураДД": "SignatureBD", "Стандартные": "Standard", "старая цена": "old price", "КлючКлиента": "ClientKey", "авторизации": "authorization", "НоваяСтрока": "NewLine", +"Комментарий": "Comment", "УдалениеMFA": "MFADelete", -"СигнатураДД": "SignatureBD", -"НовыйСпособ": "NewMethod", "ДопПараметр": "AdditionalParameter", -"Создать лид": "Create lead", +"ОбщиеМетоды": "CommonMethods", "Авторизация": "Authorization", "OllamaОтвет": "OllamaResponse", "ПолучитьИли": "GetOr", "ПолучитьЛид": "GetLead", "IDЧерновика": "DraftID", "УдалитьБлок": "DeleteBlock", +"Создать лид": "Create lead", "ПутиСтрокой": "PathsString", -"ИзИсточника": "FromSource", "МассивСтрок": "StingsArray", "ДатаRFC3339": "DateRFC3339", "Инструменты": "Tools", "перемещения": "of movement", "Число копий": "Number of copies", "ИмяСодержит": "NameContains", -"ОбщиеМетоды": "CommonMethods", +"ИзИсточника": "FromSource", "РазбитыйURL": "SplitedURL", -"URL запроса": "Request URL", +"ID атрибута": "Attribute ID", "наблюдателя": "of auditor", -"Обновленный": "Updated", -"Новосибирск": "Novosibirsk", +"ID элемента": "Element ID", "НайтиСтроки": "FindRows", "Привет мир!": "Hello world!", +"Новосибирск": "Novosibirsk", "ОтборПоТипу": "FilterByType", -"ЗапросДомен": "RequestDomain", "СлакОбласти": "SlackWorkspaces", "Текст поста": "Post text", -"комментария": "of comment", +"ЗапросДомен": "RequestDomain", "Удалить лид": "Delete lead", "высота в см": "height, cm", "ID картинки": "Image ID", "ЭтоУдаление": "ThisIsDeletion", "SQLiteУспех": "SQLiteSuccess", -"БольшойФайл": "BigFile", -"ID элемента": "Element ID", +"ТекущееПоле": "CurrentField", +"комментария": "of comment", "Скопировать": "Copy", -"ТекущийПуть": "CurrentPath", +"ОзонОбъекты": "OzonObjects", "URLЗагрузки": "UploadURL", +"МетодПоиска": "SearchMethod", "РефрешТокен": "RefreshToken", "ГуглКаталог": "GoogleCatalog", "руководство": "manual", "ID Родителя": "Parent ID", "НеВыполнять": "NotExecute", "Особенности": "Features", -"МетодПоиска": "SearchMethod", "МедиаГруппа": "MediaGroup", +"ТекущийПуть": "CurrentPath", "Разделитель": "Delimiter", "Небезопасно": "Insecure", "Цель канала": "Channel purpose", "ВнешнийПост": "ExternalPost", -"ОзонОбъекты": "OzonObjects", +"Обновленный": "Updated", "ДобавитьЛог": "AddLog", -"B64Картинка": "B64Image", +"URL запроса": "Request URL", "ЗаписатьЛог": "WriteLog", -"СоздатьПоле": "CreateField", +"БольшойФайл": "BigFile", "Мессенджеры": "Messengers", +"ЧислоЧастей": "PartsAmount", "ТокенКанала": "ChannelToken", "ТестовыйAPI": "TestAPI", "Подключение": "Connection", "URL сервера": "Server URL", "Постановщик": "Producer", +"Удалить тег": "Delete tag", "Исполнители": "Performers", -"ЧислоЧастей": "PartsAmount", -"ГринИнстанс": "GreenInstance", +"ИмяКонтакта": "ContactName", "ТелоЗапроса": "RequestBody", "IDВладельца": "OwnerID", "исполнитель": "performer", "обновляемых": "of updated", "БитриксФайл": "BitrixFile", +"ГринИнстанс": "GreenInstance", "JSONСтрокой": "JSONString", -"ИмяКонтакта": "ContactName", -"Удалить тег": "Delete tag", "Отправитель": "Sender", -"ЗаменаТочки": "DotReplacement", -"OllamaУспех": "OllamaSuccess", +"Поле1,Поле2": "Field1,Field2", +"РаботаСBlob": "WorkingWithBlob", "ЦветныеПоля": "ColoredFields", "МассивПолей": "FieldArray", "СоздатьБлок": "CreateBlock", "АТСписокБаз": "ATBasesList", "Повторяемая": "Repeatable", +"ЗаменаТочки": "DotReplacement", "параметрами": "parameters", -"ДобавитьТег": "AddTag", "IDИсточника": "FromID", "уведомлений": "notifications", "НеЗаполнено": "Empty", "МассивБлока": "ArrayBlock", "Для YaxUnit": "For YAxUnit", "S3НеНайдено": "S3NotFound", -"Поле1,Поле2": "Field1,Field2", +"ДобавитьТег": "AddTag", "КлючСервиса": "ServiceKey", -"АдресАвтора": "АдресАвтора", +"OllamaУспех": "OllamaSuccess", "Токен Viber": "Viber Token", -"МассивТэгов": "TagsArray", "ОтборСтрока": "FilterString", "НомерГруппы": "GroupNumber", "определения": "definitions", @@ -1758,42 +1756,44 @@ "ТипКонтента": "ContentType", "Новый заказ": "New order", "УдалитьЛист": "DeleteSheet", -"КлючПодписи": "SignKey", "миллиметрах": "millimeters", +"АдресАвтора": "АдресАвтора", "IDПриемника": "DestinationID", -"ТекстОшибки": "ErrorText", -"Длина Тогда": "Length Then", +"МассивТэгов": "TagsArray", +"КлючПодписи": "SignKey", "IDХранилища": "StorageID", -"Особенность": "Feature", +"МассивТегов": "TagsArray", +"ТекстОшибки": "ErrorText", "Создать чат": "Create chat", "UUID заявки": "UUID of the invitation", "МассивИмени": "NameParts", "ВернутьБлок": "ReturnBlock", "ZipРазмерDD": "ZipSizeDD", -"МассивТегов": "TagsArray", -"РаботаСBlob": "WorkingWithBlob", +"Особенность": "Feature", +"Длина Тогда": "Length Then", "ТекКолекция": "CurrentCollection", "ID подборки": "Selection ID", +"ДанныеФайла": "FileData", "ОтветМассив": "ResponseArray", "СтрПараметр": "StrParam", "Сортировать": "Sort", -"ДанныеФайла": "FileData", +"Хеширование": "Hashing", +"ВКОбсуждение": "VKDiscussion", "ТекущийПоток": "CurrentStream", "ВернутьОтвет": "ReturnResponse", "Удалить пост": "Delete post", "часовой пояс": "time zone", -"ЗаписьВывода": "OutputWriting", -"элементы CRM": "CRM elements", +"ДатаПередачи": "TransferDate", "Длительность": "Duration", "ТекстФильтра": "FilterText", "крайний срок": "deadline", "ОзонЧерновик": "OzonDraft", "КонечнаяДата": "EndDate", +"элементы CRM": "CRM elements", "ВКТСообщение": "VKTMessage", -"ТестыРаздела": "SectionTests", -"ДатаПередачи": "TransferDate", -"Строка,Число": "String, Number", -"ГринРазлогин": "GreenUnlogin", +"ЗаписьВывода": "OutputWriting", +"СтрокаМетода": "MethodLine", +"РазмерДанных": "DataSize", "ДатаСгорания": "ExpireDate", "ВайберОнлайн": "ViberOnline", "КлючДвоичные": "BinaryKey", @@ -1801,20 +1801,18 @@ "ПотокВНачало": "StreamToStart", "ОзонКластеры": "OzonClusters", "Twitter (ОПИ": "Twitter (OpenIntegrations", +"ГринРазлогин": "GreenUnlogin", "ЭтоКоллекция": "ThisIsCollection", -"МассивЗеркал": "MirrorsArray", "РаботаССетью": "WebMethods", -"ЗапросПрокси": "RequestProxy", -"РазмерДанных": "DataSize", "ДатаОтправки": "SendingDate", "Дублирования": "duplicates", "ПолнаяЗамена": "FullReplace", "МассивПостов": "ArrayOfPosts", "Документация": "Read the Docs", -"МассивОшибок": "ErrorsArray", +"МассивЗеркал": "MirrorsArray", +"ТестыРаздела": "SectionTests", +"ОтборКоманды": "CommandSelection", "ОсновнойЦвет": "PrimaryColor", -"ЭтоOneScript": "IsOneScript", -"ТекстСправки": "HelpText", "МассивДанных": "DataArray", "ЗапросСервер": "RequestServer", "УдалитьФайлы": "DeleteFiles", @@ -1827,67 +1825,67 @@ "ПолучитьФайл": "GetFile", "Путь к файлу": "File path", "Закрытый чат": "Private chat", +"УдалитьТовар": "DeleteProduct", "БитриксВремя": "BitrixTime", -"СкоупСтрокой": "ScopeString", "МассивНабора": "SetsArray", +"ТекстСправки": "HelpText", "ДобавитьЛист": "AddSheet", -"IDКалендаря2": "CalendarID2", "ОднаПодОдной": "OneByOne", +"ЭтоOneScript": "IsOneScript", +"ДанныеЯчейки": "CellData", "УдалитьЗаказ": "DeleteOrder", "ОписаниеJSON": "JSONDescription", "Текст ответа": "Answer text", "МассивФайлов": "ArrayOfFiles", "ЗапросПароль": "RequestPassword", "СкачатьПапку": "DownloadFolder", -"ДанныеЯчейки": "CellData", "СтруктураURL": "URLStructure", +"IDКалендаря2": "CalendarID2", "ТипКоллекции": "CollectionType", "ID календаря": "Calendar ID", "СтрокаКлючей": "KeysString", "Пользователи": "Users", -"ОтборКоманды": "CommandSelection", "OPI_ТестыCLI": "OPI_TestsCLI", -"УдалитьТовар": "DeleteProduct", +"МассивОшибок": "ErrorsArray", "СтрСоединить": "StrConcat", -"Покинуть чат": "Leave chat", +"ТвиттерТекст": "TwitterText", "РодительБаза": "ParentBase", +"ШаблонОтвета": "ResponseTemplate", "ИмяФайлаТела": "BodyFileName", "Новая задача": "New task", +"ГраницаТипов": "TypesBound", "IDПоследнего": "LastID", "OllamaВерсия": "OllamaVersion", +"ФайлОтправки": "SendingFile", "ТекущийНабор": "CurrentSet", -"МетрикаМетки": "MetrikaTags", "ЗаписатьJSON": "WriteJSON", "ОтветСтрокой": "ResponseString", -"тип операции": "action type", "ЗаписьДанных": "DataWriter", "Дни рождения": "Hollydays", "загружаемого": "uploading", "КонецФункции": "EndFunction", +"МетрикаМетки": "MetrikaTags", "Перемещенная": "Moved", -"АдресРесурса": "ResourceAddress", -"ШаблонОтвета": "ResponseTemplate", -"ФайлОтправки": "SendingFile", -"ЧтениеДанных": "DataReader", -"МестноеВремя": "ToLocalTime", +"тип операции": "action type", +"ЭлементыПути": "PathParts", +"СкоупСтрокой": "ScopeString", "СоздатьЗаказ": "CreateOrder", "Удалить блок": "Delete block", "ВызватьМетод": "ExecuteMethod", "SQLiteОшибка": "SQLiteError", "ПрочитатьВсе": "ReadAll", +"МестноеВремя": "ToLocalTime", "наименование": "name", "ОсновныеТест": "MainTests", "МассивЛистов": "SheetArray", -"Номер заказа": "Order number", "Дата инвойса": "Invoice date", "Создать блок": "Create block", +"ЧтениеДанных": "DataReader", "ИмяПараметра": "ParameterName", -"ЭлементыПути": "PathParts", -"СтрокаМетода": "MethodLine", +"Номер заказа": "Order number", +"АдресРесурса": "ResourceAddress", "доп. расходы": "additional costs", -"ГраницаТипов": "TypesBound", -"ТвиттерТекст": "TwitterText", -"ДропБоксТеги": "DropboxTags", +"Создать поле": "Create field", "ДругойЗапрос": "AnotherRequest", "Telegram_Бан": "Telegram_Ban", "КонецОбласти": "EndRegion", @@ -1903,198 +1901,199 @@ "приглашениям": "invitations", "ОбъектИконка": "IconObject", "СтрокаДанных": "DataString", +"ДропБоксТеги": "DropboxTags", "Неопределено": "Undefined", -"ТекущийКлючН": "CurrentKeyN", -"Создать поле": "Create field", "СоздатьКнигу": "CreateSpreadsheet", +"СоздатьОпрос": "CreatePoll", "ДлинаПолоски": "BarLength", "JSONДвоичные": "JSONBinary", "СтрокаВызова": "CallString", "Base64Строка": "Base64String", "Конецфункции": "EndFunction", "МассивБлоков": "BlockArray", -"СоздатьОпрос": "CreatePoll", "ПереносСтрок": "LineBreaks", +"ТекущийКлючН": "CurrentKeyN", "КонецПопытки": "EndTry", "ПараметрыURL": "URLParameters", "Создать пост": "Create post", "пользователь": "user", "ДокументПуть": "DocumentPath", +"Покинуть чат": "Leave chat", +"ЗапросПрокси": "RequestProxy", "СоздатьСкоуп": "CreateScope", -"ВКОбсуждение": "VKDiscussion", +"Строка,Число": "String, Number", "ОзонКартинки": "OzonPictures", -"Наименование": "Name", +"СжатыеДанные": "CompressedData", +"Прогресс бар": "Progress bat", "пользователя": "of user", +"ДропБоксФайл": "DropboxFile", "ZipРазмерLFH": "ZipSizeLFH", "СтрРезультат": "StrResult", +"МассивЧтения": "ArrayReading", "При отправке": "When sending data is", -"МассивКнопок": "ButtonArray", -"Прогресс бар": "Progress bat", "IDКалендаря1": "CalendarID1", +"JSONОригинал": "JSONOriginal", "ID чата темы": "Thread chat ID", "Использовать": "Use", "данные файла": "file's binary data", "ЯДискКаталог": "YaDiskFolder", +"МассивКнопок": "ButtonArray", "присутствует": "present", -"Параметр_out": "Parameter_out", -"JSONОригинал": "JSONOriginal", -"СжатыеДанные": "CompressedData", -"МассивЧтения": "ArrayReading", "подчиненного": "of dependent", +"ЭтоКоннектор": "IsConnector", +"ДополнитьURL": "CompleteURL", "ЦветнойВывод": "ColorOutput", -"МассивТаблиц": "TableArray", "Скачать файл": "Download file", "ТипПриемника": "ReceiverType", "ВКОбъявление": "VKAdversting", "ТекущаяОпция": "CurrentOption", +"СоздатьКанал": "CreateChannel", "ТипПлатформы": "PlatformType", -"ДневнойЛимит": "DailyLimit", "ВКСтатистика": "VKStatistics", "СоздатьМетку": "CreateTag", "Тестирование": "Testing", "ДокументЛога": "LogDocument", "тип счетчика": "counter type", "ИДОбсуждения": "DiscussionID", -"ЭтоКоннектор": "IsConnector", -"СоздатьКанал": "CreateChannel", +"ДневнойЛимит": "DailyLimit", +"Параметр_out": "Parameter_out", "DeleteСТелом": "DeleteWithBody", -"ДополнитьURL": "CompleteURL", -"ЧтениеТекста": "TextReader", +"МассивТаблиц": "TableArray", "КаталогЛогов": "LogDirectory", +"КлючКартинка": "ImageKey", "OllamaОшибка": "OllamaError", "ФайлПримеров": "FileExample", "Число,Строка": "Number, String", "Получить лид": "Get lead", -"ТелоДвоичные": "BodyBinary", -"ЧислоПопыток": "Attempts", "ТонкийКлиент": "ThinClient", +"ЧислоПопыток": "Attempts", "СтрРазделить": "StrSplit", "УдалитьБакет": "DeleteBucket", "КонецУчастка": "ChunkEnd", "СоздатьПоток": "CreateStream", "КопийНаЛисте": "CopiesPerSheet", -"КлючКартинка": "ImageKey", "ДанныеОтвета": "ResponseData", -"ЗначениеФайл": "ValueFile", +"ТелоДвоичные": "BodyBinary", +"КодировкаURL": "URLencoding", +"Пользователь": "User", "ОткрытьПоток": "OpenStream", +"ЧтениеТекста": "TextReader", +"КлючЗначение": "KeyValue", "ЗаписьТекста": "TextRecord", "URL картинки": "Image URL", "Имя контакта": "Contact name", "КартинкаПуть": "ImagePath", -"ДопПараметры": "AdditionalParameters", -"Пользователь": "User", "ГуглКаталоги": "GoogleCatalogs", -"КлючЗначение": "KeyValue", "МассивТестов": "ArrayOfTests", +"ЗначениеФайл": "ValueFile", "ТвиттерТокен": "TwitterToken", "Криптография": "Cryptography", "прикрепления": "of attachments", "ИДОбъявления": "AnnouncementID", "Удалить лист": "Delete sheet", "ШаблонСтроки": "StringTemplate", -"ДропБоксФайл": "DropboxFile", "ОбновитьФайл": "UpdateFile", -"НовыйПрефикс": "NewPrefix", -"SQLiteСтроки": "SQLiteRows", +"Общие методы": "Common methods", +"ДопПараметры": "AdditionalParameters", +"Видеообложка": "Videocover", +"Твит с видео": "Tweet with video", +"Имя каталога": "Folder name", "ПубличныйURL": "PublicURL", "Изменить лид": "Update lead", "Новая стадия": "New stage", "ЦелеваяСтена": "TargetWall", +"ВключитьФайл": "ВключитьФайл", "Удалить файл": "Delete file", -"Произвольный": "Arbitrary", -"Имя каталога": "Folder name", "ЗначениеПоля": "FieldValue", +"ОписаниеBool": "DescriptionBool", "Существующее": "Existing", "ЗапросСекция": "RequestSection", "ТолькоОснова": "OnlyBase", "ИзменитьПоле": "ModifyField", +"Произвольный": "Arbitrary", "обязательная": "mandatory", -"МассивЛишних": "ExtraArray", -"ОписаниеBool": "DescriptionBool", -"Твит с видео": "Tweet with video", -"ВключитьФайл": "ВключитьФайл", "Рефреш токен": "Refresh token", +"Текст правил": "Rules Text", +"SQLiteСтроки": "SQLiteRows", +"НовыйПрефикс": "NewPrefix", "ОписаниеТипа": "TypeDescription", "ТекущийТовар": "CurrentProduct", "выходные дни": "weekends", "Безвозвратно": "Irrecoverable", +"Путь, Данные": "Path, Data", "ТекущийТекст": "CurrentText", -"ДатаДоставки": "DeliveryDate", "Тип вложений": "Attachments type", "ПотокВПамяти": "MemoryStream", "ID сообщения": "Message ID", "ОбщаяТаблица": "CommonTable", "ТабРезультат": "TableResult", "БезВозвратно": "Irrecoverable", -"Текст правил": "Rules Text", +"ДатаДоставки": "DeliveryDate", +"МассивЛишних": "ExtraArray", "ZipРазмерCDH": "ZipSizeCDH", -"Путь, Данные": "Path, Data", -"Общие методы": "Common methods", -"ТаблицаПолей": "FieldsTable", "МассивЧастей": "PartsArray", -"IDОбсуждения": "DiscussionID", "ДробнаяЧасть": "FractionalPart", +"МассивТекста": "TextArray", "ДобавитьПоле": "AddField", "РекламаЧисло": "AdsNumber", "ОсновноеФото": "MainPhoto", "Новый запрос": "New request", -"ДобавитьAWS4": "AddAWS4", "ЕстьЗначение": "ValueExists", -"МассивТекста": "TextArray", "СоздатьБакет": "CreateBucket", +"Архивирована": "Archived", "ПутьИсточник": "SourcePath", "ПутьПриемник": "DestinationPath", "Соответствие": "Map", +"ТаблицаПолей": "FieldsTable", "БитриксЧисло": "BitrixNumber", "Вернуть блок": "Return block", -"Видеообложка": "Videocover", -"Архивирована": "Archived", "GAPI_Аккаунт": "GAPI_Account", -"Сформировать": "Formulate", "пустой ответ": "empty response", +"ДобавитьAWS4": "AddAWS4", +"Создать базу": "Create base", +"СписокКоманд": "CommandList", "ТекстЗапроса": "QueryText", +"Наименование": "Name", "ФайлКартинки": "PictureFile", "ВнешняяСтена": "ExternalWall", -"СоздатьОтказ": "CreateRefusal", "Архивировать": "Archive", "Используемый": "Using", -"СписокКоманд": "CommandList", +"СоздатьОтказ": "CreateRefusal", "ЧислоВСтроку": "NumberToString", +"Сформировать": "Formulate", "УдалитьМетку": "DeleteTag", "БлокНастроек": "OptionsBlock", "КодСостояния": "StatusCode", "СоздатьПапку": "CreateFolder", -"Создать базу": "Create base", -"КодировкаURL": "URLencoding", -"Дополнительно": "Additionally", -"СклеитьДанные": "MergeData", +"IDОбсуждения": "DiscussionID", "Вопрос опроса": "Poll question", +"ЭтоСимвольное": "ThisIsSymbolic", "ТекущийМассив": "CurrentArray", "ДобавитьТовар": "AddProduct", "ПолеКоллекции": "CollectionField", "Соответствие_": "Map_", +"Дополнительно": "Additionally", "Инициализация": "Initialization", -"ЭтоСимвольное": "ThisIsSymbolic", -"МассивОтветов": "AnswersArray", -"БитриксИстина": "BitrixTrue", +"СклеитьДанные": "MergeData", +"СледующееПоле": "NextField", +"РаботаСЧатами": "ChatManagement", "IDЦитируемого": "ReplyID", "СКодированием": "WithEncoding", -"СледующееПоле": "NextField", "Текст новости": "Text of post", "Значение поля": "Field value", -"ВозможныйФайл": "PossibleFile", "Твиттер_Твиты": "TwitterAPI_Tweets", -"Тестовая тема": "TestTopic", "ЗапросТаймаут": "RequestTimeout", -"ЗагрузитьФайл": "UploadFile", -"YandexID (ОПИ": "YandexID (OpenIntegrations", +"ВозможныйФайл": "PossibleFile", +"МассивОтветов": "AnswersArray", +"ID объявления": "Ad ID", +"ИсходныйПоток": "SourceStream", "СтрокаПодписи": "SignatureString", "СимволМассива": "ArraySymbol", +"Тестовая тема": "TestTopic", "БакетИсточник": "DestinationBucket", "Изменить поле": "Modify field", "РазложитьJSON": "ParseJSON", "СтрокаТаблицы": "TableRow", -"ИсходныйПоток": "SourceStream", "тип сравнения": "comparison type", "Начало работы": "Getting started", "МедиаКартинка": "MediaPicture", @@ -2108,10 +2107,11 @@ "ПараАртикулов": "ArticlesPair", "ТекущаяДатаЧП": "CurrentDateTZ", "ПолучитьЧисло": "GetNumber", +"ЗагрузитьФайл": "UploadFile", "РаботаСБазами": "WorkingWithDatabases", -"ID объявления": "Ad ID", -"ТекущийОбъект": "CurrentObject", -"СкачатьМодель": "PullModel", +"подразделения": "department", +"Наименование2": "Filename2", +"СтрокаЗапуска": "LaunchString", "ПолучитьОтвет": "GetResponse", "Новая таблица": "NewTable", "ПолучитьЗаказ": "GetOrder", @@ -2121,20 +2121,20 @@ "ID обсуждения": "Discussion ID", "МассивНомеров": "PhonesArray", "УстановитьURL": "SetURL", -"подразделения": "department", "ЛокальныйФайл": "LocalFile", "СоздатьАльбом": "CreateAlbum", -"МетодыКлиента": "ClientMethods", "XMLЗавершения": "FinishXML", "КлючЗаголовка": "HeaderKey", "МассивСобытий": "ArrayOfEvents", "КаталогМетода": "MethodCatalog", "БитриксСделка": "BitrixDeal", "ПрочитатьJSON": "ReadJSON", -"СтрокаЗапуска": "LaunchString", +"YandexID (ОПИ": "YandexID (OpenIntegrations", +"СкачатьМодель": "PullModel", +"ТекущийОбъект": "CurrentObject", "СтруктураПрав": "PermissionsStructure", +"соисполнителя": "co-preformer", "АдресЗагрузки": "UploadURL", -"Тестовый лист": "TestSheet", "color=Зеленый": "color=Green", "IDКомментария": "CommentID", "СоздатьЗадачу": "CreateTask", @@ -2153,15 +2153,15 @@ "ПолучитьТекст": "GetText", "Тестовая база": "TestDatabase", "БитриксДиалог": "BitrixDialog", -"соисполнителя": "co-preformer", -"Наименование2": "Filename2", +"Тестовый лист": "TestSheet", "ЗакрытьДиалог": "CloseDialog", -"IDПодкаталога": "SubfolderID", +"РазмерУчастка": "ChunkSize", "ГуглКалендарь": "GoogleCalendar", +"С параметрами": "With paramether", "КлиентMongoDB": "MongoDBClient", +"СтруктураТела": "BodyStructure", "Метод,Область": "Method,Region", "Новый каталог": "New catalog", -"ШаблонЗапроса": "RequestTemplate", "ИмяКоннектора": "ConnectorName", "СтруктураДаты": "DateStructure", "РаботаСЛидами": "LeadsManagement", @@ -2176,34 +2176,33 @@ "ОбработатьТег": "ProcessTag", "ЗакрытьСессию": "CloseSession", "ПодписьBase64": "SignatureBase64", -"СоздатьСервер": "CreateServer", -"С параметрами": "With paramether", "ДатаПолучения": "ReceivingDate", -"РазмерУчастка": "ChunkSize", -"ВладелецВидео": "VideoOwner", -"СекретныйКлюч": "SecretKey", -"УдалитьСделку": "DeleteDeal", -"ФайловыйПоток": "FileStream", +"СоздатьСервер": "CreateServer", +"ШаблонЗапроса": "RequestTemplate", +"Картинка2.jpg": "Picture2.jpg", "Заполненность": "Filling", -"ДанныеПодписи": "SignatureData", -"Это коннектор": "Is connector", "СоздатьЗаписи": "CreatePosts", -"КодироватьURL": "EncodeURL", +"Это коннектор": "Is connector", +"ДанныеПодписи": "SignatureData", +"ZipРазмерEOCD": "ZipSizeEOCD", +"ФайловыйПоток": "FileStream", +"УдалитьСделку": "DeleteDeal", "OPI_TCPКлиент": "OPI_TCPClient", +"СекретныйКлюч": "SecretKey", +"КодироватьURL": "EncodeURL", +"АдресРесурса3": "ResourceAddress3", "ПрочитаноБайт": "BytesRead", "СтруктураТега": "TagStructure", "АдресРесурса5": "ResourceAddress5", "Заимстованные": "Borrowed", "ФайлЛокальный": "LocalFile", "ДвойныеКавчки": "DoubleQuotes", -"АдресРесурса3": "ResourceAddress3", -"АдресРесурса1": "ResourceAddress1", -"ZipРазмерEOCD": "ZipSizeEOCD", "КлючНастройки": "SettingKey", +"АдресРесурса1": "ResourceAddress1", +"ВладелецВидео": "VideoOwner", "Текст команды": "Command text", -"СтруктураТела": "BodyStructure", +"Создано из 1С": "Created by 1C", "ШаблонФункции": "FunctionTemplate", -"Airtable (ОПИ": "Airtable (OpenIntegrations", "ОформитьОтвет": "FormResponse", "ПутьОригинала": "OriginalPath", "БакетПриемник": "SourceBucket", @@ -2224,9 +2223,10 @@ "МассивКаналов": "ChannelArray", "АдресРесурса4": "ResourceAddress4", "ЗагрузкаВидео": "VideoUpload", +"Airtable (ОПИ": "Airtable (OpenIntegrations", "УстановкаТела": "BodySet", -"ЛишниеСимволы": "ExtraCharacters", "КодУстройства": "DeviceCode", +"ЛишниеСимволы": "ExtraCharacters", "ОтправитьФайл": "SendFile", "ПокинутьКанал": "LeaveChannel", "ДатаОкончания": "EndDate", @@ -2235,31 +2235,31 @@ "ЕдиницаДанных": "DataUnit", "не ограничено": "unlimited", "СоздатьГруппу": "CreateGroup", +"БитриксИстина": "BitrixTrue", "Продажа в RUB": "Sale in RUB", -"ОчищенноеПоле": "ClearField", "СлакСообщение": "SlackMessage", "Telegram (ОПИ": "Telegram (OpenIntegrations", "Администратор": "Administrator", "РазделениеPhp": "SeparationPhp", -"Создано из 1С": "Created by 1C", "ОтветЗагрузки": "UploadResponse", "Создать канал": "Create channel", "TCPОбработчик": "TCPHandler", "IDУведомления": "NotificationID", -"Картинка2.jpg": "Picture2.jpg", -"РаботаСЧатами": "ChatManagement", -"Bitrix24 (ОПИ": "Bitrix24 (OpenIntegrations", -"Закрыл задачу": "Close task", +"IDПодкаталога": "SubfolderID", +"ОчищенноеПоле": "ClearField", +"Первый запуск": "First start", +"МетодыКлиента": "ClientMethods", +"ИзменитьМетку": "UpdateTag", +"Удалить заказ": "Delete order", +"дата закрытия": "closing date", "СтруктураЦели": "GoalStructure", "ТелеграмВидео": "TelegramVideo", "Текст запроса": "Request text", "ДанныеСобытия": "callbackData", "Данные ответа": "Response data", "Refresh токен": "Refresh token", -"Первый запуск": "First start", "БитриксБулево": "BitrixBool", "СоздатьМодель": "CreateModel", -"Добавить лист": "Add sheet", "Одноклассники": "Classmates", "себестоимость": "cost price", "УдалитьАльбом": "DeleteAlbum", @@ -2269,11 +2269,11 @@ "UnixИстечение": "UnixExpiration", "БитриксМассив": "BitrixArray", "ПолучитьКанал": "GetChannel", +"ВозможныеПути": "PossiblePaths", "РазмерОбъекта": "ObjectSize", -"Удалить заказ": "Delete order", "Создать книгу": "Create spreadsheet", +"Дата создания": "CreationDate", "СлакЭфемерное": "SlackEphemeral", -"ФинальныйКлюч": "FinalKey", "Адрес объекта": "Object address", "Массив кнопок": "Array of buttons", "АТКомментарии": "ATComments", @@ -2292,33 +2292,34 @@ "ОбновитьТокен": "RefreshToken", "Новое событие": "New event", "Размер скидки": "Discount amount", -"Дата создания": "CreationDate", +"ФинальныйКлюч": "FinalKey", +"СтруктураЧата": "ChatStructure", "МассивЯрлыков": "LabelsArray", -"ВозможныеПути": "PossiblePaths", "Строка адреса": "Address string", -"СписокТоваров": "ProductList", -"СоздатьСделку": "CreateDeal", +"ПоставитьЛайк": "LikePost", "Граница Тогда": "Border Then", +"Обновить файл": "Update file", +"СоздатьСделку": "CreateDeal", "СлакСообщения": "SlackMessages", "Описание поля": "Field description", -"ЭтоОтложенное": "IsDelayed", "Файл с Base64": "Base64 File", "ТаблицаТестов": "TestTable", -"Дата рождения": "Birth date", -"ПоставитьЛайк": "LikePost", -"НомерКампании": "CampaignNumber", +"Bitrix24 (ОПИ": "Bitrix24 (OpenIntegrations", +"ЭтоОтложенное": "IsDelayed", +"ОтправитьBlob": "PushBlob", "ГринСообщение": "GreenMessage", +"Принудительно": "Forced", "Картинка1.jpg": "Picture1.jpg", "ПринятьЗадачу": "ApproveTask", "РАЗЛОЖИТЬJSON": "PARSEJSON", "Создать заказ": "Create order", +"НомерКампании": "CampaignNumber", "ФайлПараметра": "ParamFile", -"ОтправитьBlob": "PushBlob", -"Принудительно": "Forced", -"Обновить файл": "Update file", "новый каталог": "new catalog", +"Добавить лист": "Add sheet", +"ШаблонКолонки": "ColoumTemplate", +"КартинкаПоста": "PostImage", "Работа с BLOB": "Working with Blob", -"ОсновныеЧасти": "MainParts", "НомерТелефона": "PhoneNumber", "ВыборЗначения": "ValueSelection", "СвойстваЛиста": "SheetProperties", @@ -2332,16 +2333,16 @@ "ЗаполнитьПоля": "FillFields", "МестоДоставки": "DeliveryLocation", "СкрытьИсторию": "HideHistory", -"ШаблонКолонки": "ColoumTemplate", "ЭлементДанных": "DataElement", "НовоеЗначение": "NewValue", "РаботаСДиском": "WorkingWithDrive", "ТаймаутЧтения": "ReadTimeout", -"КартинкаПоста": "PostImage", -"дата закрытия": "closing date", -"СтруктураЧата": "ChatStructure", -"УдалитьЗаписи": "DeleteRecords", -"РаботаСТегами": "TagsManagement", +"СписокТоваров": "ProductList", +"ОсновныеЧасти": "MainParts", +"Текст ошибки:": "Error text", +"Дата рождения": "Birth date", +"Скачать папку": "Download folder", +"ДФ=yyyy-MM-dd": "DF=yyyy-MM-dd", "ВременныйФайл": "TempFile", "ГринПрочтение": "GreenReading", "БитриксСписок": "BitrixList", @@ -2360,22 +2361,21 @@ "ВККомментарий": "VKComment", "Адрес локации": "Location address", "Множественная": "Multiple", -"Версия: 2.4.8": "Version: 2.4.8", -"ДФ=yyyy-MM-dd": "DF=yyyy-MM-dd", "ГринСообщения": "GreenMessages", +"Версия: 2.4.8": "Version: 2.4.8", "Создать отказ": "Create refusal", -"ПрочитатьGZip": "ReadGZip", +"OPI TCPКлиент": "OPI TCPClient", +"РаботаСТегами": "TagsManagement", "Число, Строка": "Number, String", "СтрокаНомеров": "NumbersString", "ЗапросыСТелом": "RequestsWithBody", "ВывестиСтроку": "WriteLine", -"ТекущаяЗапись": "CurrentRecord", "РезультатJSON": "ResultJSON", "Переустановка": "Reinstall", "УдалитьМодель": "DeleteModel", "ПозицияНачала": "StartPosition", -"ИзменитьМетку": "UpdateTag", "КонечныйОтвет": "FinalResponse", +"УдалитьЗаписи": "DeleteRecords", "ТекущиеДанные": "CurrentData", "дополнительно": "additionally", "Блок с файлом": "FileBlock", @@ -2384,11 +2384,11 @@ "ЭтоКомпонента": "IsAddIn", "Наименование1": "Filename1", "Блок картинки": "Image block", -"OPI TCPКлиент": "OPI TCPClient", +"ПрочитатьGZip": "ReadGZip", "Положительная": "Positive", -"Строка, Число": "String, Number", +"ТекущаяЗапись": "CurrentRecord", "ОткрытьСессию": "OpenSession", -"Отрицательная": "Negative", +"ТекущийРаздел": "CurrentSection", "ТокенСтраницы": "PageToken", "МетодыСервера": "ServerMethods", "ОбработатьXML": "ProcessXML", @@ -2403,54 +2403,55 @@ "СтрокаТоваров": "ProductsString", "ВозможныйПуть": "PossiblePath", "Создать папку": "Create folder", -"УстановитьTls": "SetTls", "ОзонТаймслоты": "OzonTimeslots", "ВернутьЗапрос": "ReturnRequest", +"Строка, Число": "String, Number", "ТелеграмАудио": "TelegramAudio", -"Скачать папку": "Download folder", -"ТекущийРаздел": "CurrentSection", +"Отрицательная": "Negative", "ЗначениеИначе": "DefaultValue", -"РаботаСПолями": "WorkingWithFields", -"Текст ошибки:": "Error text", -"ТелеграмОпрос": "TelegramPoll", +"УстановитьTls": "SetTls", +"ПодСообщением": "UnderMessage", +"Закрыл задачу": "Close task", "ТекущийСтатус": "CurrentStatus", -"Идентификатор": "Identifier", +"РаботаСПолями": "WorkingWithFields", "БитриксОбъект": "BitrixObject", "Код материала": "Material code", "ПолучитьТокен": "GetToken", "УдаленныйФайл": "RemoteFile", "АдресРесурса6": "ResourceAddress6", "ПолучитьКнигу": "GetSpreadsheet", -"Экранирование": "Escaping", +"Идентификатор": "Identifier", "Удалить метку": "Delete tag", -"ТелеграмЧисло": "TelegramNumber", -"Массив файлов": "Files array", -"Переадресация": "Redirection", -"МассивТоваров": "ProductsArray", -"ТаймаутЗаписи": "WriteTimeout", -"дата создания": "date of creation", "статус задачи": "task status", -"ПодСообщением": "UnderMessage", +"Экранирование": "Escaping", +"дата создания": "date of creation", +"ТаймаутЗаписи": "WriteTimeout", +"ТелеграмОпрос": "TelegramPoll", +"Переадресация": "Redirection", +"Массив файлов": "Files array", +"ТелеграмЧисло": "TelegramNumber", +"МассивТоваров": "ProductsArray", +"фильтр по типу": "filter by type", +"DevOps инженер": "DevOps engineer", "OllamaПривязки": "OllamaEmbeddings", "Имя поля формы": "Form field name", "Файл документа": "Document file", "Серия паспорта": "Passport series", "ПривестиБулево": "MakeBoolean", -"ОбновитьЗаписи": "UpdateRecords", "Номер упаковки": "Package number", -"DevOps инженер": "DevOps engineer", "ОтправкаВКанал": "SendingToChannel", -"Neocities (ОПИ": "Neocities (OpenIntegrations", +"Ключ заголовка": "Header key", "ОтправитьОтвет": "SendResponse", "Путь к объекту": "Path to the object", "ОписаниеString": "DescriptionString", "Получить метку": "Get tag", -"фильтр по типу": "filter by type", -"ОписаниеТовара": "ProductDescription", -"Ключ заголовка": "Header key", -"Принять задачу": "Approve task", -"ТекущаяПозиция": "CurrentPosition", +"ДропБоксМассив": "DropboxArray", +"ОбновитьЗаписи": "UpdateRecords", +"Neocities (ОПИ": "Neocities (OpenIntegrations", +"МассивИДПостов": "PostIDsArray", "РаботаСДанными": "DataManagement", +"ПолучитьМассив": "GetArray", +"ОписаниеТовара": "ProductDescription", "UUID преалерта": "Prealert UUID", "УдалитьТаблицу": "DeleteTable", "СписокЗначений": "ValueList", @@ -2458,40 +2459,39 @@ "Установка тела": "Body set", "СоздатьНовость": "CreatePost", "Некоторое поле": "Nekotoroe pole", -"ПолучитьМассив": "GetArray", "СоздатьСчетчик": "CreateCounter", -"МассивИДПостов": "PostIDsArray", +"ТекущаяПозиция": "CurrentPosition", "АТ_СоздатьПоле": "AT_CreateField", "ЗагрузитьВидео": "UploadVideo", "АТСписокТаблиц": "ATTablesList", "ТелеграмМассив": "TelegramArray", "СтрокаПодборок": "SelectionsString", "Отправить BLOB": "Push BLOB", +"Принять задачу": "Approve task", "ВступитьВКанал": "JoinChannel", -"ДропБоксМассив": "DropboxArray", -"СерверноеВремя": "ServerTime", -"Новая стадия 2": "New stage 2", -"ID комментария": "CommentID", -"характеристика": "feature", +"МассивКартинок": "ImageArray", +"ПозицияВПотоке": "PositionInStream", "Изменить товар": "Edit product", "ГуглИмяТаблицы": "GoogleSheetTitle", "ПроблемныйЭтап": "ProblemStep", "СтрочныйМассив": "StringArray", "АтомарныеТесты": "AtomicTests", "СтруктураФайла": "FileStructure", -"ID базы данных": "Database ID", "ДатаБезВремени": "DateWithoutTime", -"Создать группу": "Create group", +"характеристика": "feature", +"Заголовок чата": "Chat title", "цвет календаря": "calendar color", "Путь,Временный": "Path,Temporary", "Закрыть диалог": "Close dialog", "JSONВСтруктуру": "JSONToStructure", "Строка, Массив": "String, Array", "СтруктураЗамен": "ReplaceStructure", -"Заголовок чата": "Chat title", -"МассивКартинок": "ImageArray", -"Создать модель": "Create model", +"Заголовок темы": "Thread title", +"МассивОтправки": "SendArray", +"ID базы данных": "Database ID", +"ID комментария": "CommentID", "Деловые услуги": "Business", +"ПутьСохранения": "SavePath", "Удалить объект": "Delete object", "КлючПриложения": "AppKey", "HTTPСоединение": "HTTPConnection", @@ -2499,8 +2499,8 @@ "Получить книгу": "Get spreadsheet", "НачалоЗагрузки": "UploadStart", "ОписаниеМетода": "MethodDescription", -"ПутьСохранения": "SavePath", "Номер страницы": "Page number", +"Создать модель": "Create model", "Создать задачу": "Create task", "СтруктураОпций": "OptionsStructure", "СтруктураЯчеек": "CellStructure", @@ -2508,71 +2508,71 @@ "РаботаСБлоками": "BlocksManagement", "ОписаниеЗаписи": "RecordDescription", "РазмерСтраницы": "PageSize", -"ПозицияВПотоке": "PositionInStream", -"Заголовок темы": "Thread title", -"Green API (ОПИ": "Green API (OpenIntegrations", -"РаботаСФайлами": "FileManagement", -"Перезаписывать": "Overwrite", +"СерверноеВремя": "ServerTime", +"Новая стадия 2": "New stage 2", +"СоздатьИсторию": "CreateStory", +"МассивВложений": "AttachmentsArray", +"Получить токен": "Get token", +"Новая кампания": "New campaign", "ДвойныеКавычки": "DoubleQuotes", "ЭлементМассива": "ArrayElement", "ДвоичныеДанные": "BinaryData", "УдалитьСчетчик": "DeleteCounter", "Описание видео": "Video description", +"Перезаписывать": "Overwrite", "Комплексный ID": "Complex attribute ID", -"приветственное": "welcoming", -"Новая кампания": "New campaign", "СтрНачинаетсяС": "StrStartsWith", +"РаботаСАкциями": "PromotionsManagement", "ФайлРезультата": "ResultFile", "Новая кнопка 1": "New button 3", "PayloadСтрокой": "PayloadAsString", "ТекущийЭлемент": "CurrentElement", -"СоздатьИсторию": "CreateStory", "ДропБоксСтатус": "DropboxStatus", +"приветственное": "welcoming", "OPI_Компоненты": "OPI_AddIns", -"РаботаСАкциями": "PromotionsManagement", -"Получить токен": "Get token", -"Открыть диалог": "Open dialog", "Номер телефона": "Phone number", +"ДобавитьЗаписи": "AddRecords", +"OAuthВерсияAPI": "OAuthAPIVersion", +"Отбор по имени": "Filter by name", "ТекущаяОбласть": "CurrentRegion", "Сделать репост": "Make repost", "предполагаемая": "expected", "HTTP_Настройки": "HTTP_Settings", "Скачать модель": "Pull model", +"Открыть диалог": "Open dialog", "Характеристика": "DescField", -"СлакТемаКанала": "SlackChannelTopic", -"Отбор по имени": "Filter by name", +"Изменить заказ": "Update order", "ОтправитьГифку": "SendGif", "СтруктураТегов": "TagStructure", "ИтоговыйМассив": "ResultingArray", "МассивСекретов": "SecretsArray", "ВременнаяМетка": "Timestamp", "Тестовый твитт": "TestTweet", -"ДобавитьЗаписи": "AddRecords", -"Изменить заказ": "Update order", +"СлакТемаКанала": "SlackChannelTopic", "ПоляТелаВOAuth": "BodyFieldsAtOAuth", +"Описание файла": "File description", "МассивФильтров": "FiltersArray", -"ОтправкаДанных": "DataSending", +"МассивУпаковок": "PackagesArray", "ВариантыОтвета": "AnswerOptions", "IDПользователя": "UserID", "ЗначениеДанных": "DataValue", "Договоренность": "Appointment", "СоздатьТаблицу": "CreateTable", "МассивАльбомов": "ArrayOfAlbums", +"Загрузить файл": "Upload file", "ТекущаяКоманда": "CurrentCommand", -"МассивУпаковок": "PackagesArray", -"Получить канал": "Get channel", +"OPI_HTTPКлиент": "OPI_HTTPClient", "Проверка_Пусто": "Check_Empty", "Тип клавиатуры": "KeyboardType", "ПараметрМетода": "MethodParameter", "ОтправитьАудио": "SendAudio", "ОтправитьВидео": "SendVideo", "Создать сделку": "Create deal", -"МассивВложений": "AttachmentsArray", -"Описание файла": "File description", -"OPI_HTTPКлиент": "OPI_HTTPClient", -"Загрузить файл": "Upload file", +"Получить канал": "Get channel", "ЗаменяемыйКлюч": "ReplacedKey", "ПолучитьЗапрос": "GetRequest", +"Green API (ОПИ": "Green API (OpenIntegrations", +"ОтправкаДанных": "DataSending", "СтрОбщийРазмер": "StrTotalSize", "Новое описание": "New description", "Покинуть канал": "Leave channel", @@ -2589,30 +2589,30 @@ "OPI_ЗапросыSQL": "OPI_SQLQueries", "ЗапросыБезТела": "RequestsWithoutBody", "IDРуководителя": "HeadID", -"OAuthВерсияAPI": "OAuthAPIVersion", -"МассивОтправки": "SendArray", -"РаботаСЛистами": "WorkingWithSheets", -"Нажмите Enable": "Click Enable", +"РаботаСФайлами": "FileManagement", +"Создать группу": "Create group", +"МаксимумПостов": "MaximumPosts", +"СлакОтложенные": "SlackSheduled", +"ГлавныйВГруппе": "MainInGroup", +"ВыполнитьСразу": "Start", "ОсновныеДанные": "BasicData", "форматирование": "formatting", "ПолучитьОбъект": "GetObject", -"МаксимумПостов": "MaximumPosts", +"РаботаСЛистами": "WorkingWithSheets", "ОписаниеЗаказа": "OrderDescription", +"ДанныеАккаунта": "AccountData", "ПолучитьВерсию": "GetVersion", -"ГлавныйВГруппе": "MainInGroup", -"РазделительBat": "BatSeparator", +"ГВ_Авторизация": "GW_Auth", "ТекущаяТаблица": "CurrentTable", "МассивПодборок": "SelectionArray", "СтруктураПапки": "FolderStructure", "ЗаписатьЛогCLI": "WriteLogCLI", "ПараметрМассив": "ArrayParam", "ПолноеИмяМедиа": "FullMediaName", +"РазделительBat": "BatSeparator", "Текстовый твит": "Text tweet", -"ГВ_Авторизация": "GW_Auth", -"ДанныеАккаунта": "AccountData", "ФоновыеЗадания": "BackgroundJobs", -"Новая кнопка 2": "New button 2", -"ТекущеВложение": "CurrentAttachment", +"СоздатьКаталог": "CreateDirectory", "цена до скидки": "pre-discount price", "Новое название": "New name", "./docs/ru/cli/": "./docs/en/cli/", @@ -2620,8 +2620,8 @@ "Проверить BLOB": "Check BLOB", "ответственного": "responsible", "ПолучитьЗапись": "GetRecord", +"ТекущеВложение": "CurrentAttachment", "ТекущийАбсПуть": "CurrentAbsPath", -"ПоследняяЧасть": "LastPart", "ПрочитанноБайт": "BytesRead", "<путь к файлу>": "", "Объект запроса": "Request object", @@ -2629,50 +2629,49 @@ "Удалить записи": "Delete records", "ПолучитьДанные": "ReceiveData", "РаботаСЗаказми": "OrdersManagement", -"СоздатьКаталог": "CreateDirectory", -"КартинкаЗамены": "ReplacementImage", +"ПоследняяЧасть": "LastPart", "ДобавитьЗапись": "AddRow", -"ДропБоксРабота": "DropboxWork", -"РаботаСГруппой": "CommunityManagement", -"Удалить альбом": "Delete album", +"Новая кнопка 2": "New button 2", +"ПолучитьСделку": "GetDeal", +"ПутьУдаленного": "PathOfRemote", +"ПолучитьЗаписи": "GetRecords", "ОтветЗаголовки": "ResponseHeaders", "ЯДискПроцедура": "YaDiskProc", "МассивОпераций": "ActionsArray", "РабочийКаталог": "WorkingDirectory", -"ПолучитьСостав": "GetComposition", "Base64Значение": "Base64Value", +"ПолучитьСостав": "GetComposition", "Это новый файл": "This is a new file", -"МассивЗапросов": "ArrayOfRequests", -"ПутьУдаленного": "PathOfRemote", "Awaiting.What(": "Ожидаем.Что(", "дополнительных": "additional", "ГринПерезапуск": "GreenReboot", "РаботаСТокеном": "TokenManagement", "ДопустимыйЗнак": "AllowedSign", "УдалитьWebhook": "DeleteWebhook", -"ПолучитьЗаписи": "GetRecords", -"ПолучитьСделку": "GetDeal", -"ЗаписатьСтроку": "WriteLine", +"Удалить альбом": "Delete album", +"МассивЗапросов": "ArrayOfRequests", +"ДропБоксРабота": "DropboxWork", +"МассивЗначений": "ValuesArray", +"ОзонПодписчики": "OzonSubscribers", "СоздатьСобытие": "CreateEvent", "СтруктураПолей": "FieldsStructure", "МассивМедиаГиф": "MediaGifArray", "ОтправитьОпрос": "SendPoll", "МассивТоваров_": "ArrayOfProducts_", "Изменить метку": "Update tag", -"МассивЗначений": "ValuesArray", "ОтложитьЗадачу": "DeferTask", +"ЗаписатьСтроку": "WriteLine", "Создать записи": "Create records", -"ОтправкаОтвета": "ResponseSending", "Твит с опросом": "Tweet with poll", "Новый файл.jpg": "New file.jpg", "дата изменения": "date of change", "СтруктураМедиа": "MediaStructure", "ЧатыИСообщения": "ChatsAndMessages", "КонецПроцедуры": "EndProcedure", -"ОзонПодписчики": "OzonSubscribers", -"ВыполнитьСразу": "Start", +"РаботаСГруппой": "CommunityManagement", +"ОтправкаОтвета": "ResponseSending", "СтруктураЧасти": "PartStructure", -"СлакОтложенные": "SlackSheduled", +"КартинкаЗамены": "ReplacementImage", "МетрикаСчетчик": "MetrikaCounter", "для XML-сайтов": "for XML-sites", "Основные тесты": "Main tests", @@ -2681,7 +2680,7 @@ "БезКодирования": "NoEncoding", "ПараметрыТеста": "TestParameters", "ЗначениеТокена": "TokenValue", -"ПокинутьГруппу": "LeaveGroup", +"СледующийТокен": "NextToken", "Создать альбом": "Create album", "СтрокаВложений": "AttachmentsString", "ОсновныеМетоды": "CommonMethods", @@ -2691,9 +2690,10 @@ "МассивСтруктур": "StructuresArray", "ПустаяСхемаSQL": "NewSQLScheme", "УдалитьНовость": "DeletePost", -"СледующийТокен": "NextToken", "Переслать файл": "Resend file", "ТелеграмИстина": "TelegramTrue", +"ФорматДатыJSON": "JSONDateFormat", +"ОчиститьЯчейки": "ClearCells", "МассивОбъектов": "ArrayOfObjects", "МассивОписания": "DescriptionArray", "МассивОписаний": "ArrayOfDescriptions", @@ -2710,31 +2710,30 @@ "СтруктураСбора": "CollectionStructure", "Текст описания": "Description text", "Заголовок поля": "Field title", -"ФорматДатыJSON": "JSONDateFormat", "АТ_СоздатьБазу": "AT_CreateDatabase", "Получить заказ": "Get order", +"ПокинутьГруппу": "LeaveGroup", "ПолучитьЗадачу": "GetTask", -"ТаблицаСправка": "HelpTable", +"РаботаСКнигами": "SpreadsheetsManagement", "ПолучитьДиалог": "GetDialog", -"ОчиститьЯчейки": "ClearCells", "ИзменитьСделку": "UpdateDeal", "VK_УдалитьПост": "VK_DeletePost", "С кодированием": "With encoding", "ИнтернетПрокси": "InternetProxy", "OPI_Интеграция": "OPI_Integrations", +"ТаблицаСправка": "HelpTable", "ТекстСообщения": "MessageText", -"РаботаСКнигами": "SpreadsheetsManagement", -"ТекущийОтнПуть": "CurrentRelPath", +"ИДПользователя": "UserID", "ЗаписанныйФайл": "RecordedFile", "ПроверитьТокен": "CheckToken", "Принять работу": "Approve task", "color=Белый) v": "color=White) v", "Получить ответ": "Get response", "КопироватьФайл": "FileCopy", -"ЛокальныеФайлы": "LocalFiles", -"ИДПользователя": "UserID", +"ТекущийОтнПуть": "CurrentRelPath", "ТолькоПросмотр": "ViewOnly", -"ЧтениеZipФайла": "ZipFileReader", +"ЛокальныеФайлы": "LocalFiles", +"Нажмите Enable": "Click Enable", "Описание груза": "Goods description", "ОписаниеОшибки": "ErrorDescription", "ТекущийАртикул": "CurrentArticle", @@ -2744,34 +2743,35 @@ "ПолучитьСтроку": "GetLine", "статус фильтра": "filter status", "НомерКатегории": "CategoryNumber", -"Тестовый товар": "TestProduct", +"ЧтениеZipФайла": "ZipFileReader", "ФайлСтатистики": "StatisticsFile", "JsonВСтруктуру": "JsonToStructure", "Отправить файл": "Send file", "Добавить товар": "Add product", "ИзменитьЗадачу": "UpdateTask", "ЗагрузитьФайлы": "UploadFiles", +"Тестовый товар": "TestProduct", "ПолучитьНовости": "GetPosts", "Кирилица в пути": "Cyrillic at path", "ПолучитьСобытия": "GetEvents", "ЗначениеВМассив": "ValueToArray", -"ПолучитьМагазин": "GetMarket", +"VK_СоздатьОпрос": "VK_CreatePoll", +"HTTPСервисОтвет": "HTTPServiceResponse", "AWS_ОбщиеМетоды": "AWS_CommonMethods", "Получить запись": "Get record", -"Новое имя метки": "New tag title", +"Перенаправление": "Redirection", "ОписаниеСтроки2": "RowDescription2", "ИспользоватьTls": "UseTls", -"Перенаправление": "Redirection", "СкопироватьФайл": "MakeFileCopy", "Серверное время": "Server time", "СлакВнешнийФайл": "SlackExternalFile", "СтруктураДанных": "DataStructure", -"HTTPСервисОтвет": "HTTPServiceResponse", -"OPI_ЗапросыHTTP": "OPI_HTTPRequests", "РаботаСМоделями": "ModelsManagement", -"200 И Результат": "200 And Result", -"РаботаСТоварами": "ProductManagement", +"Новое имя метки": "New tag title", +"Создать счетчик": "Create counter", +"ФайлТелаВозврат": "BodyFileReturn", "IDИнициализации": "InitializationID", +"OPI_ЗапросыHTTP": "OPI_HTTPRequests", "Создать новость": "Create post", "ИзменитьСобытие": "EditEvent", "ВКТПользователь": "VKTUser", @@ -2782,37 +2782,37 @@ "Изменить сделку": "Update deal", "ИзменитьТаблицу": "ModifyTable", "УстановитьЛимит": "SetLimit", -"ФайлТелаВозврат": "BodyFileReturn", "ЗаписатьСимволы": "WriteChars", "Создать историю": "Create story", "Получить записи": "Get records", "РазделительBash": "BashSeparator", "ИскомыйПараметр": "DesiredParameter", "СтруктураЗадачи": "TaskData", +"200 И Результат": "200 And Result", "ПолучитьТаблицу": "GetTable", -"Структура полей": "Fields structure", +"Доуступные типы": "Available types", "ПолучитьКаталог": "GetFolder", -"Новый заголовок": "New title", +"СтруктураДомена": "DomainStructure", "ПолучениеОтвета": "ResponseReceiving", "ГринНоваяГруппа": "GreenNewGroup", "ТокенВЗаголовки": "TokenInHeaders", "СтатусОбработки": "ProcessingStatus", "СоздатьЧат (хук": "CreateChat (wh", "ОписаниеСтроки1": "RowDescription1", +"ДвоичныеДанные1": "BinaryData1", "СоздатьПреалерт": "CreatePrealert", -"СтруктураДомена": "DomainStructure", -"ТаблицаЗначений": "ValueTable", +"ТекстВыполнения": "ExecutionText", "ОтклонитьЗадачу": "DisapproveTask", "ГринАвторизован": "GreenAuth", "НСФайлыКаталога": "NCFolderFiles", "ОтправитьМодель": "PushModel", "0).Равно(Истина": "0).Equal(True", -"Доуступные типы": "Available types", -"Новый каталог 2": "New folder 2", -"ТекстВыполнения": "ExecutionText", -"ДвоичныеДанные1": "BinaryData1", +"РаботаСТоварами": "ProductManagement", +"ТаблицаЗначений": "ValueTable", "IDПодразделения": "DepartmentID", "ИзменитьНовость": "UpdatePost", +"НужнаРаспаковка": "NeedsUnpacking", +"Новый заголовок": "New title", "ЗагруженныйФайл": "UploadedFile", "МетрикаОперации": "MetrikaActions", "СтруктураЗаявки": "InvitationStructure", @@ -2829,32 +2829,32 @@ "Проверить токен": "Check token", "Социальные сети": "Social networks", "MultipartВOAuth": "MultipartAtOAuth", -"НужнаРаспаковка": "NeedsUnpacking", -"Создать счетчик": "Create counter", +"Структура полей": "Fields structure", "Создать событие": "Create event", -"ПустаяСхемаDrop": "EmptySchemeDrop", +"Очистить ячейки": "Clear cells", "ОписаниеOldchar": "DescriptionOldchar", -"СтрСуществующий": "StrExists", +"МассивВариантов": "OptionArray", +"ЭтоПараметрФлаг": "IsFlagParam", "Проверка_СлакОк": "Check_SlackOk", "РаботаСЗадачами": "TasksManagement", "РезультатИстина": "ResultTrue", "PayloadДвоичные": "PayloadBinary", "РаботаСЗаписями": "RecordManagement", +"ОбработатьОтвет": "ProcessResponse", "ПараметрЗапроса": "QueryParameter", -"МассивВариантов": "OptionArray", -"Работа с диском": "Working with drive", +"Отправить аудио": "Send audio", "установлен свой": "set your", "Удалить каталог": "Delete folder", "ТекущееОписание": "CurrentDescription", "Текст заголовка": "Title text", "ФайлРепозитория": "RepositoryFile", "Удалить таблицу": "Delete table", -"ГуглКомментарий": "GoogleComment", -"Отправить аудио": "Send audio", -"ОбработатьОтвет": "ProcessResponse", -"Не спланированы": "Not planned", +"Работа с диском": "Working with drive", +"СтрСуществующий": "StrExists", "перенаправления": "redirection", -"Очистить ячейки": "Clear cells", +"СтруктураТекста": "TextStructure", +"Компоненты (ОПИ": "AddIns (OpenIntegrations", +"Новый каталог 2": "New folder 2", "Измененное поле": "Izmenennoe pole", "Код города ФИАС": "FIAS city code", "Получить объект": "Get object", @@ -2862,19 +2862,19 @@ "Изменить задачу": "Update task", "уровень доступа": "Access level", "ЗагрузитьОбъект": "PutObject", -"Компоненты (ОПИ": "AddIns (OpenIntegrations", +"Ждет завершения": "Waiting for completion", "ОписаниеТаблицы": "TableDescription", "ОписанияКолонок": "ColoumnsDescription", -"Ждет завершения": "Waiting for completion", +"Не спланированы": "Not planned", "КоллекцияТаблиц": "TableCollection", "СтрокаСигнатуры": "SignatureString", "ОтправитьЗапрос": "SendRequest", -"СтруктураТекста": "TextStructure", "Описание товара": "Product description", +"ГуглКомментарий": "GoogleComment", "ИсполняемыйФайл": "ExecFile", -"ЭтоПараметрФлаг": "IsFlagParam", +"Дата с временем": "Date with time", "ОбъектСравнения": "ComparisonObject", -"СтруктураАдреса": "AddressStructure", +"ИзменитьСчетчик": "UpdateCounter", "ЗначениеСтрокой": "ValueAsString", "ПолучитьСобытие": "GetEvent", "Название города": "City name", @@ -2882,8 +2882,8 @@ "статус операции": "action status", "Ответ на запрос": "Response", "PostgreSQL (ОПИ": "PostgreSQL (OpenIntegrations", -"ИзменитьСчетчик": "UpdateCounter", "Получить задачу": "Get task", +"ПорядковыйНомер": "OrderNumber", "Проверка_ВКЛайк": "Check_VKLike", "ОзонНовыеТовары": "OzonNewProducts", "АрхивироватьЧат": "ArchiveChat", @@ -2891,10 +2891,11 @@ "OAuthХешФункция": "OAuthHashFunction", "Данные аккаунта": "Account data", "УправлениеЛидом": "ManageLead", -"ПорядковыйНомер": "OrderNumber", "DO + Транзакция": "DO + Transaction", +"ПолучитьМагазин": "GetMarket", "ТекстСортировки": "SortingText", -"ТекущееЗначение": "CurrentValue", +"ПустаяСхемаDrop": "EmptySchemeDrop", +"СтруктураАдреса": "AddressStructure", "Работа с чатами": "Chats works", "ПолучитьКоманду": "GetCommand", "ЗапросЗаголовки": "RequestHeaders", @@ -2910,33 +2911,32 @@ "Без кодирования": "No encoding", "XMLКонфигурация": "XmlConfig", "СтруктураОплаты": "PaymentStructure", -"Дата с временем": "Date with time", -"ГринВыходГруппы": "GreenLeaveGroup", "ЗаписатьЦелое16": "WriteInt16", +"ТекущееЗначение": "CurrentValue", "Санкт-Петербург": "St. Petersburg", -"VK_СоздатьОпрос": "VK_CreatePoll", +"ВК_СоздатьОпрос": "VKAPI_CreatePoll", "создайте проект": "create a project", -"Отложить задачу": "Defer task", -"Покинуть группу": "Leave group", +"Новый календарь": "new calendar", +"ТекущийПараметр": "CurrentParameter", "Я бот, а ты нет": "I am bot, but you - not", "ПараметрСтрокой": "ParameterString", "ID базовой темы": "ID of base topic", "Почтовый индекс": "Postal code", "УдалитьПодборку": "DeleteSelection", +"Строка: \"1:7788": "String: \"1:7788", "ДвоичныеДанные2": "BinaryData2", -"Новый календарь": "new calendar", -"СтруктураКнопки": "ButtonStructure", +"Группа картинок": "Pictures group", "OllamaСообщение": "OllamaMessage", "ДропбоксАккаунт": "DropboxAccount", "РаботаСЗаказами": "OrderManagement", "ул. Блюхера, 33": "st. Bluchera, 33", "ТипСоответствие": "TypeMap", "Отправить ответ": "Send response", -"ВыполнитьЗапрос": "ExecuteRequest", -"Группа картинок": "Pictures group", -"Строка: \"1:7788": "String: \"1:7788", +"СтруктураКнопки": "ButtonStructure", "Загрузить видео": "Upload video", "НастройкиПрокси": "ProxySettings", +"ссылка на видео": "video URL", +"МассивТелефонов": "PhonesArray", "VK_УдалитьТовар": "VK_DeleteProduct", "РаботаСКаналами": "ChannelManagement", "Получить превью": "Get preview", @@ -2953,38 +2953,38 @@ "УстановитьТекст": "SetText", "СтрокаЗаголовка": "HeaderString", "Пункт чек-листа": "Checklist element", -"ссылка на видео": "video URL", +"ВыполнитьЗапрос": "ExecuteRequest", "СтруктураЧастей": "PartsStructure", -"МассивТелефонов": "PhonesArray", +"Покинуть группу": "Leave group", "ИнтернетМагазин": "OnlineStore", -"ВКГруппаТоваров": "VKProductsGroup", -"ПолучитьСчетчик": "GetCounter", +"JSON клавиатуры": "Keyboard JSON", +"ВводныйПараметр": "IntroductoryParameter", "ЗапросПотокТела": "RequestBodyStream", "ЯМаркетМагазины": "YaMarketMarkets", "ЗависимостиГугл": "GoogleDependencies", "ОтправитьСтроку": "SendLine", -"Подпись к файлу": "File caption", "АТБазаСТаблицей": "ATBaseWithTable", "ЭтоСоответствие": "IsMap", -"JSON клавиатуры": "Keyboard JSON", +"Подпись к файлу": "File caption", "СлучайныйМассив": "RandomArray", "Создать каталог": "Create folder", -"ПолучитьАккаунт": "GetAccount", +"ПолучитьСчетчик": "GetCounter", +"ГринВыходГруппы": "GreenLeaveGroup", "ЗапуститьСервер": "StartServer", "ПолучениеДанных": "DataRetrieving", "Получить диалог": "Get dialog", "ID пользователя": "User ID", -"ВводныйПараметр": "IntroductoryParameter", "Плановое начало": "Planned start", +"Удалить событие": "Delete event", +"ТелеграмКонтакт": "TelegramContact", +"ВКГруппаТоваров": "VKProductsGroup", "ВКТ_ОбщиеМетоды": "VKT_CommonMethods", -"СтруктураТовара": "ItemStructure", "КодировкаТекста": "TextEncoding", "текст сообщения": "message text", "Удалить новость": "Delete post", "СтруктураФлагов": "FlagsStructure", "СтруктураУслуги": "ServiceStructure", "Отправить гифку": "Send GIF", -"ТелеграмКонтакт": "TelegramContact", "БитриксВложение": "BitrixAttachment", "НССинхронизация": "NCSync", "МетрикаСчетчики": "MetrikaCounters", @@ -2995,10 +2995,10 @@ "Основные методы": "Common methods", "ДобавитьКолонку": "AddColoumn", "ЗначенияСвойств": "PropertyValues", -"ТекущийПараметр": "CurrentParameter", -"Удалить событие": "Delete event", -"ЗапросИзменения": "ChangeRequest", -"ЭтоТипКоллекция": "IsCollectionType", +"СтруктураТовара": "ItemStructure", +"Копировать лист": "Copy sheet", +"ПолучитьАккаунт": "GetAccount", +"Загрузить файлы": "Upload files", "СоздатьЛид (хук": "CreateLead (wh", "СвоиИзображения": "OwnImages", "УдалитьКартинку": "DeleteImage", @@ -3006,8 +3006,8 @@ "дата завершения": "completion date", "РаботаСБакетами": "BucketsManagement", "ID целевой базы": "Target database ID", +"ЗаписатьЦелое32": "WriteInt32", "логин владельца": "owners login", -"Отправить опрос": "Send poll", "Таймаут запроса": "Request timeout", "СтруктураФайлов": "FileStructure", "Проверка_Строка": "Check_String", @@ -3015,13 +3015,12 @@ "СчетчикУспешных": "SuccessCount", "Получить версию": "Get version", "Новое сообщение": "New message", -"СоздатьСтраницу": "CreatePage", -"ЗаписатьЦелое32": "WriteInt32", +"Отправить опрос": "Send poll", +"ЗапросИзменения": "ChangeRequest", "СтруктураЯрлыка": "LabelStructure", -"КаталогПримеров": "CatalogExample", "ПолучениеТокена": "TokenRetrieval", -"ВК_СоздатьОпрос": "VKAPI_CreatePoll", -"OPI инструменты": "OPI tools", +"ЭтоТипКоллекция": "IsCollectionType", +"КаталогПримеров": "CatalogExample", "МассивСообщений": "MessagesArray", "ОписаниеСобытия": "EventDescription", "Инициализирован": "Initialized", @@ -3037,38 +3036,39 @@ "Номер,Строковое": "Number,String", "Сокращенный URL": "Shortened URL", "Пустое значение": "Empty value", +"СоздатьСтраницу": "CreatePage", "IDЧатаИсточника": "FromChatID", -"ПовторитьСтроку": "RepeatString", +"OPI инструменты": "OPI tools", "ГринВходнойФайл": "GreenInputFile", -"автоматического": "automatically", +"РезультатЧтения": "ReadingResult", "Получить данные": "Receive data", "Проверка_Массив": "Check_Array", "Настройка OAuth": "OAuth settings", "ИДЖелтогоТовара": "YellowItemID", "НайтиСовпадения": "Matches", "РазобратьСтроку": "ParseString", +"КакСоответствие": "AsMap", "ЗавершитьЗадачу": "CompleteTask", -"РезультатЧтения": "ReadingResult", -"ФайлСодержимого": "ContentFile", +"СтатусСообщения": "MessageStatus", "ЗапросТипДанных": "RequestDataType", "ШаблонЗаголовка": "HeaderTemplate", "Создать таблицу": "Create table", "Текст сообщения": "Message text", "Добавить записи": "Add rows", -"Работа с лидами": "Leads management", -"Загрузить файлы": "Upload files", -"СтатусСообщения": "MessageStatus", -"КакСоответствие": "AsMap", +"ПовторитьСтроку": "RepeatString", +"ФайлСодержимого": "ContentFile", "ИспользуемоеИмя": "DisplayedName", -"Удалить Webhook": "Delete webhook", +"Работа с лидами": "Leads management", +"КлючиЗаголовков": "HeadersKeys", "Массив Из Число": "Array Of Number", +"автоматического": "automatically", "МассивРодителей": "ArrayOfParents", "IDПользователей": "UserIDs", "МассивСчетчиков": "CountersArray", -"Отправить видео": "Send video", +"Удалить Webhook": "Delete webhook", "ОшибкаКоллекции": "CollectionError", "OPI_Инструменты": "OPI_Tools", -"УправлениеЧатом": "ChatManagement", +"Отправить видео": "Send video", "Получить сделку": "Get deal", "СообщениеОшибки": "ErrorText", "ОтправитьДанные": "SendData", @@ -3076,47 +3076,47 @@ "ЗаголовокОтвета": "ResponseHeader", "ТекущаяДатаUNIX": "CurrentUNIXDate", "ПараметрыЗаписи": "WriterSettings", -"Копировать лист": "Copy sheet", -"КлючиЗаголовков": "HeadersKeys", +"Отложить задачу": "Defer task", +"УправлениеЧатом": "ChatManagement", +"КвадратныеСкобки": "SquareBrackets", "СмещениеОтНачала": "OffsetFromStart", "Получить магазин": "Get market", -"ИДКрасногоТовара": "RedItemID", +"ЗначениеОсновной": "MainValue", "Получение ответа": "Response receiving", "Имя пользователя": "Users name", "КопироватьОбъект": "CopyObject", -"ИспользоватьФайл": "UseFile", +"УстановитьСтроку": "SetString", "ПривестиЗначение": "AdjustValue", "Получение Токена": "Token retrieval", "ГуглЭлементКниги": "GoogleSpreadsheetElement", "ПолучитьДвоичные": "GetBinary", "ID целевого чата": "Target chat ID", "IDХарактеристики": "AttributeID", -"УстановитьСтроку": "SetString", "РаботаССобытиями": "EventManagement", -"КвадратныеСкобки": "SquareBrackets", +"ИспользоватьФайл": "UseFile", "ВосстановитьФайл": "RestoreFile", -"Сократить ссылку": "Shorten link", +"Работа с акциями": "Promotions management", "Завершить задачу": "Complete task", -"ЮнитТестирование": "UnitTesting", +"РаботаСоСкладами": "WarehousesManagement", +"ДанныеИНастройка": "DataAndSettings", "БитриксРезультат": "BitrixResult", "VK_ПоставитьЛайк": "VK_LikePost", "ПолучитьШтрихкод": "GetBarcode", "СоздатьБакет (DB": "CreateBucket (DB", "СтруктураФильтра": "FilterStructure", +"Сократить ссылку": "Shorten link", "МассивСортировки": "SortArray", -"РаботаСоСкладами": "WarehousesManagement", -"Code из браузера": "Code from browser", -"Работа с акциями": "Promotions management", +"ПространствоИмен": "TargetNamespace", "ОтправитьКонтакт": "SendContact", "РаботаСНовостями": "PostsManagement", "НовоеПодключение": "NewConnection", "Массив из Строка": "Array of String", "ГуглОчисткаЯчеек": "GoogleCellCleanning", "ЗаписатьФайлЛога": "WriteLogFile", -"ДанныеИНастройка": "DataAndSettings", -"ПространствоИмен": "TargetNamespace", -"ПолучитьСтраницу": "GetPage", -"Получение данных": "Data retrieving", +"Code из браузера": "Code from browser", +"ЮнитТестирование": "UnitTesting", +"Получить каталог": "Get folder information", +"МассивИнформации": "ArrayOfInformation", "Загрузить объект": "Put object", "ОбработатьЗапрос": "ProcessRequest", "СтруктураВстречи": "MeetingStructure", @@ -3131,32 +3131,34 @@ "СтруктураСтроки2": "RowStrucutre1", "ОстановитьСервер": "StopServer", "ПолучитьСписокВФ": "GetExternalFileList", -"ОписаниеКартинки": "ImageDescription", +"Материалы встреч": "Meeting materials", "Получить новости": "Get posts", "СтруктураПозиции": "ItemStructure", "Архивировать чат": "Archive chat", "Элемент.Значение": "Element.Value", +"СдэкДанныеЗаказа": "CdekOrderNumber", "VK_ДобавитьТовар": "VK_AddProduct", "ОбработкаЗапроса": "RequestProcessing", "СоздатьШтрихкоды": "CreateBarcodes", "СписокЗаголовков": "HeadersList", "ТекстОшибкиПолей": "FieldsErrorText", "Получить событие": "Get event", +"ПолучитьСтраницу": "GetPage", "место проведения": "venue", -"СдэкДанныеЗаказа": "CdekOrderNumber", -"Телефон контакта": "Contact phone number", +"Получение данных": "Data retrieving", "ИмяФайлаОтправки": "SendingFileName", "РаботаСоСделками": "DealsManagement", "Другой календарь": "Another calendar", "РаботаСОбъектами": "ObjectsManagement", "ВыполнениеКоманд": "CommandsExecution", -"Получить каталог": "Get folder information", "МассивСтатистики": "StatisticsArray", -"МассивИнформации": "ArrayOfInformation", -"Материалы встреч": "Meeting materials", -"СтрокаПараметров": "ParameterString", -"Получить события": "Get events", -"КодироватьСтроку": "EncodeString", +"Телефон контакта": "Contact phone number", +"ИДКрасногоТовара": "RedItemID", +"УстановитьПрокси": "SetProxy", +"УдаленныйКаталог": "RemoteFolder", +"URL с фрагментом": "URL with a snippet", +"HTTP_Авторизация": "HTTP_Authorization", +"ТелеграмДокумент": "TelegramDocument", "Порт подключения": "Connection port", "СоответствиеMIME": "MIMETypeMapping", "Переместить файл": "Move file", @@ -3169,32 +3171,31 @@ "ВыгрузитьКолонку": "UnloadColumn", "HTTPСервисЗапрос": "HTTPServiceRequest", "ИзменитьЦветЧата": "ChangeChatColor", -"ВыполнитьКоманду": "ExecuteCommand", -"ТелеграмКартинка": "TelegramImage", -"HTTP_Авторизация": "HTTP_Authorization", -"URL с фрагментом": "URL with a snippet", -"Описания методов": "Methods documentation", +"КодироватьСтроку": "EncodeString", "Проверка_ВКТовар": "Check_VKProduct", +"Описания методов": "Methods documentation", +"КоличествоЧастей": "NumberOfParts", +"ОписаниеКартинки": "ImageDescription", +"Создать преалерт": "Create prealert", "ОсвободитьОбъект": "FreeObject", +"ИмяПоля,ИмяФайла": "FieldName,FileName", "МассивКалендарей": "ArrayOfCalendars", "VK_ИзменитьТовар": "VK_EditProduct", "ИзменитьЛид (хук": "UpdateLead (wh", +"ВыполнитьКоманду": "ExecuteCommand", "ПокинутьЧат (хук": "LeaveChat (wh", -"ЛокальныйКаталог": "LocalFolder", -"Создать преалерт": "Create prealert", +"КаталогПрограммы": "BinDir", "УправлениеФайлом": "FileManagement", "ВыполнитьТестCLI": "ExecuteTestCLI", -"КаталогПрограммы": "BinDir", "ПутьКФайлуДанных": "DataFilePath", "ВладелецКартинки": "ImageOwner", "ПараметрыДоступа": "AccessParameters", "VK_УдалитьАльбом": "VK_DeleteAlbum", -"КоличествоЧастей": "NumberOfParts", -"ИмяПоля,ИмяФайла": "FieldName,FileName", -"УстановитьПрокси": "SetProxy", -"ТелеграмДокумент": "TelegramDocument", +"ЛокальныйКаталог": "LocalFolder", +"Получить события": "Get events", +"ТелеграмКартинка": "TelegramImage", "Сделаю на неделе": "For this week", -"ПолученныйОбъект": "ReceivedObject", +"ВозможныеКоманды": "AvailableCommands", "ОчередьСообщений": "MessageQueue", "Канал для отбора": "Channel for selection", "Имя новой модели": "The name of the new model", @@ -3209,32 +3210,31 @@ "МетодХэширования": "HashingMethod", "ЗапускаемыеТесты": "RunnableTests", "ПолучитьПараметр": "GetParameter", -"УдаленныйКаталог": "RemoteFolder", -"ВозможныеКоманды": "AvailableCommands", "описание события": "event description", "МаксШирина Тогда": "MaxWidth Then", "ЭлементКоллекции": "CollectionItem", +"СтрокаПараметров": "ParameterString", +"IDSИнициализации": "InitializationIDS", "Отправить модель": "Push model", -"СсылкаПодЗаписью": "LinkUnderPost", "СлакСписокФайлов": "SlackFilesList", "URLВКодировкеURL": "URLInURLEncoding", "Начните диалог с": "Start a dialog with", "МассивРазрешений": "PermissionsArray", "МассивОписания[Н": "DescriptionArray[N", +"VK_СделатьРепост": "VK_MakeRepost", "Массив ID постов": "Array of post IDs", -"IDSИнициализации": "InitializationIDS", -"МассивКлавиатуры": "KeyboardArray", +"ПолученныйОбъект": "ReceivedObject", "Отдел маркетинга": "Marketing department", "РаспаковатьОтвет": "UnpackResponse", "Блок с картинкой": "PictureBlock", "Очистить таблицу": "Clear table", "СтруктураКолонок": "ColoumnsStruct", -"VK_СделатьРепост": "VK_MakeRepost", "СоздатьТвитВидео": "CreateVideoTweet", +"МассивКлавиатуры": "KeyboardArray", "ОстановитьРаботу": "StopExecution", -"ЗначениеОсновной": "MainValue", +"Создание проекта": "Project creation", "Проверка_ВКЧисло": "Check_VKNumber", -"OLLM_РаботаСBlob": "OLLM_WorkingWithBlob", +"МассивПараметров": "ParameterArray", "УдаляемыйЭлемент": "DeletedElement", "Скопировать файл": "Copy file", "РаботаСТаблицами": "TableManagement", @@ -3254,14 +3254,13 @@ "Работа с токеном": "Token management", "ПолучитьФайлПути": "GetFilePath", "ПрочитатьЦелое32": "ReadInt32", -"Удалить картинку": "Delete image", "ДоступныйОстаток": "AvailableBalance", "Объект HTTPОтвет": "HTTPResponse object", "ЗаполнитьФильтры": "FillFilters", "Тестовый товар 2": "TestProduct2", "Артикулы товаров": "Products articles", "ОбъектПроцессора": "ProcessorObject", -"Изменить событие": "Edit event", +"СекретПриложения": "AppSecret", "ПараметрыКлиента": "ClientParams", "ВариантСвойства2": "PropVariant2", "СтрокаФотографий": "PhotoString", @@ -3270,27 +3269,28 @@ "Изменить таблицу": "Modify table", "Поля для выборки": "Fields for selection", "ЭтоПереадресация": "ThisIsRedirection", -"СекретПриложения": "AppSecret", "Изменить новость": "Update post", -"МассивИменЛистов": "ArrayOfSheetNames", +"Изменить событие": "Edit event", +"Удалить картинку": "Delete image", +"УдалитьПолностью": "DeleteCompletely", "КлючПользователя": "UsersKey", -"Фамилия контакта": "Contact last name", "МБ был записан в": "MB was recorded in", "РаботаСДиалогами": "DialogManagement", "НачалоПараметров": "ParamsStart", "Картинка и видео": "Picture and video", "ЗаголовокУчастка": "ChunkHeader", "OPI_Криптография": "OPI_Cryptography", -"Отклонить задачу": "Disapprove task", +"Фамилия контакта": "Contact last name", "СтруктураСобытия": "EventStucture", "ЗапросЗащищенное": "RequestProtected", "СоставБиблиотеки": "LibraryComposition", "ПользовательЧата": "ChatMember", -"СтрокаДляПодписи": "StringToSign", +"СсылкаПодЗаписью": "LinkUnderPost", "СтруктураФормата": "FormatStructure", "Новый подкаталог": "New subfolder", +"Отклонить задачу": "Disapprove task", "ОписаниеДвижений": "MovesDescription", -"СтруктураПериода": "PeriodStructure", +"ТочкаОтправления": "ShippingPoint", "РаботаСДоступами": "AccessManagement", "СледующаяПозиция": "NextPosition", "Название локации": "Location name", @@ -3298,20 +3298,19 @@ "Настройки прокси": "Proxy settings", "Отправить ссылку": "Send link", "КакАдминистратор": "AsAdmin", -"ТочкаОтправления": "ShippingPoint", "размер информера": "informer size", -"УдалитьПолностью": "DeleteCompletely", +"СписокПараметров": "ParamsList", "Коллекция файлов": "File collection", "ПолучитьПолеДаты": "GetDateField", "Название региона": "Region name", "ПараметрыФункции": "FunctionParameters", "ГВ_ПолучитьТокен": "GV_GetToken", "ПараметрыЗапроса": "RequestParameters", -"СписокПараметров": "ParamsList", +"МассивИменЛистов": "ArrayOfSheetNames", "РазделительСтрок": "LineSeparator", -"МассивПараметров": "ParameterArray", +"СтруктураПериода": "PeriodStructure", "Прочитать строку": "Read line", -"Создать страницу": "Create page", +"СтрокаДляПодписи": "StringToSign", "УдалитьФайл (хук": "DeleteFile (wh", "0 И Лев(Токен, 2": "0 And Left(Token, 2", "превью документа": "document preview", @@ -3332,27 +3331,26 @@ "Неактивный : red": "Inactive : red", "название события": "event name", "СтруктураСтроки1": "RowStructure2", -"СлакПользователи": "SlackUsers", +"Yandex.Disk (ОПИ": "Yandex.Disk (OpenIntegrations", +"РазбитьURL: Порт": "SplitURL: Port", "ЗагрузкаКартинки": "ImageUpload", "ОтправитьЛокацию": "SendLocation", "НеобходимаяДлина": "RequiredLength", "ГВ_ОбновитьТокен": "GV_UpdateToken", "телефон заполнен": "phone number is filled in", +"СтруктураЗеркала": "MirrorStructure", "Картинка альпаки": "Alpaca picture", -"РазбитьURL: Порт": "SplitURL: Port", -"ПолучитьЛид (хук": "GetLead (wh", +"ПолучитьПреалерт": "GetPrealert", "Загружаемый файл": "File to be uploaded", "Инструменты (ОПИ": "Tools (OpenIntegrations", "ЗаписатьВызовCLI": "WriteCLICall", "Изменить счетчик": "Update counter", "МассивЗаголовков": "HeadersArray", -"Создание проекта": "Project creation", "Тестовая реклама": "Test ads", -"СтруктураЗеркала": "MirrorStructure", -"ПолучитьПреалерт": "GetPrealert", -"Yandex.Disk (ОПИ": "Yandex.Disk (OpenIntegrations", +"ПолучитьЛид (хук": "GetLead (wh", "МаксимумВЗапросе": "MaxInRequest", -"Инициализировать": "Initialize", +"СлакПользователи": "SlackUsers", +"Получить счетчик": "Get counter", "ОзонАПИ_СхемаFBO": "OzonAPI_FBOScheme", "ЖурналыСообщений": "MessageLogs", "РезультатКоманды": "CommandResult", @@ -3367,46 +3365,48 @@ "Ошибка,Результат": "Error,Result", "БитриксХранилища": "BitrixStorage", "УдалитьБакет (DB": "DeleteBucket (DB", -"Объект обработки": "Processor object", +"Создать страницу": "Create page", "HTTP клиент (ОПИ": "HTTP client (OpenIntegrations", "Плановая продажа": "Planned sale", -"РазобратьКоманду": "ParseCommand", +"Объект обработки": "Processor object", "Тестовая таблица": "TestTable", -"СоздатьКалендарь": "CreateCalendar", +"РазобратьКоманду": "ParseCommand", "УдалитьКалендарь": "DeleteCalendar", "МассивРуководств": "ManualsArray", "БитриксСообщения": "BitrixMessages", "Удалить подборку": "Delete selection", "Добро пожаловать": "Welcome", -"МаркерПараметров": "ParameterMarker", -"Получить счетчик": "Get counter", "ИсходноеЗначение": "InitialValue", -"ЗаданиеОбработки": "ProcessingTask", +"Инициализировать": "Initialize", +"МаркерПараметров": "ParameterMarker", "Описание таблицы": "Table description", "Картинка профиля": "Profile picture", "ДобавитьИмяЛиста": "AddSheetName", "ID подразделения": "Department ID", "ПереносСтрокJSON": "JSONLineBreak", +"СоздатьКалендарь": "CreateCalendar", +"OLLM_РаботаСBlob": "OLLM_WorkingWithBlob", +"ЗаданиеОбработки": "ProcessingTask", +"ID важной новости": "Id of important post", "КодироватьURLВURL": "EncodeURLInURL", "При отправке URL": "When sending URL", "ЯДискСписокФайлов": "YaDiskFilesList", "ВК_СоздатьИсторию": "VKAPI_CreateStory", -"ID важной новости": "Id of important post", "Использовать oint": "Use oint", -"РазбитьURL: Адрес": "SplitURL: Address", +"ЛокацияНазначения": "DestLocation", "Очень важный файл": "Very important file", "ТекстовыйДокумент": "TextDocument", "МассивНапоминаний": "RemindersArray", "ПолучитьСтрокуURI": "GetURIString", "СоздатьТвитСВидео": "CreateTweetWithVideo", -"ЛокацияНазначения": "DestLocation", +"УправлениеСделкой": "ManageDeal", "СтруктураВарианта": "OptionStructure", +"РазбитьURL: Адрес": "SplitURL: Address", "Работа с задачами": "Tasks management", +"ПустаяСхемаUpdate": "EmptySchemeUpdate", "Журналы сообщений": "Message logs", -"ПолучитьКвитанцию": "GetReceipt", -"КопироватьКаталог": "CopyFolder", "Название компании": "Company name", -"СтруктураВозврата": "ReturnStructure", +"ID целевого поста": "ID of the target post", "ID блока родителя": "Parent block ID", "ГуглЦветКалендаря": "GoogleCalendarColors", "Заголовок новости": "Post title", @@ -3415,17 +3415,15 @@ "Текст комментария": "Comment text", "ОтправитьДокумент": "SendDocument", "СтруктураОперации": "OperationStructure", -"ПустаяСхемаUpdate": "EmptySchemeUpdate", "Обработка событий": "Event handling", "ЗакрытьОбсуждение": "CloseDiscussion", "Создать календарь": "Create calendar", "ВК_ЗагрузитьВидео": "VKAPI_UploadVideo", -"ID целевого поста": "ID of the target post", +"КопироватьКаталог": "CopyFolder", "Google Drive (ОПИ": "Google Drive (OpenIntegrations", -"НачалоКодовОшибок": "StartOfErrorCodes", -"РезультатПроверки": "CheckResult", -"СоздатьБазуДанных": "CreateDatabase", -"ВыгрузитьЗначения": "UnloadValues", +"СтруктураВозврата": "ReturnStructure", +"Это сервер !NOCLI": "Is server !NOCLI", +"ОзонАПИ_Штрихкоды": "OzonAPI_Barcodes", "УдалитьБазуДанных": "DeleteDatabase", "единица измерения": "unit", "Новое имя объекта": "New object name", @@ -3439,68 +3437,70 @@ "ПодходящийТипУзла": "RelevantNodeType", "РазбитьURL: Домен": "SplitURL: Domain", "ОтветКодСостояния": "ResponseStatusCode", +"ПолучитьКвитанцию": "GetReceipt", "УправлениеМетками": "TagsManagement", +"ВыгрузитьЗначения": "UnloadValues", "УправлениеТоваром": "ProductManagement", +"РезультатПроверки": "CheckResult", "СтруктураНастроек": "SettingsStructure", "КаталогИсходников": "SourceDirectory", -"Выполнить команду": "Execute command", "ЗначениеПараметра": "ParameterValue", "ОжидаютсяДвоичные": "ExpectedBinary", "АтрибутКатегории2": "CategoryAttribute2", "Получить штрихкод": "Get barcode", "VK_СоздатьИсторию": "VK_CreateStory", "УправлениеЗадачей": "ManageTask", +"НачалоКодовОшибок": "StartOfErrorCodes", "ЛайкРепостКоммент": "LikeRepostComment", -"Заголовок,Позиция": "Title,Item", "РазмерБлока Тогда": "BlockSize Then", "Не установлен URL": "URL is not set", "Обработка запроса": "Request processing", "Удаляет лид по ID": "Deletes a lead by ID", "ЗакрытьСоединение": "CloseConnection", "Файл для загрузки": "File for upload", -"Это сервер !NOCLI": "Is server !NOCLI", -"ОзонАПИ_Штрихкоды": "OzonAPI_Barcodes", +"Выполнить команду": "Execute command", +"Заголовок,Позиция": "Title,Item", "ОтсутствующиеПоля": "MissingFields", -"Тестовое описание": "TestDescription", +"СтандартныйСпособ": "StandardMethod", "Номер заказа СДЭК": "CDEK order number", "ПолучитьКоллекцию": "GetCollection", -"Описание контакта": "Contact description", +"ВККартинкаАльбома": "VKAlbumPicture", "ПереименоватьФайл": "RenameFile", "Получить преалерт": "Get prealert", "Работа с моделями": "Models management", "ПолучитьНастройку": "GetSetting", "400).Равно(Истина": "400).Equal(True", -"СкопироватьОбъект": "CopyObject", "ОткрытьТемуФорума": "OpenForumThread", +"ШаблонОшибкиПолей": "FieldsErrorPattern", "СтруктураЭкспорта": "ExportStructure", "ИзменитьКалендарь": "UpdateCalendar", "ФайлТелаВременный": "BodyTemporaryFile", "Структура фильтра": "Filter structure", "Наименование поля": "Field name", "Название свойства": "Property name", +"СкопироватьОбъект": "CopyObject", "Проверка_ВКАльбом": "Check_VKAlbum", -"ШаблонОшибкиПолей": "FieldsErrorPattern", "МаркетинговыйЦвет": "MarketingColor", -"Администрирование": "Administration", "ПрочитатьВсе (хук": "ReadAll (wh", +"Маркировка товара": "Product marking", "ПолучитьХранилище": "GetStorage", "Данные для API v2": "Data for API v2", "СортироватьПоДате": "SortByDate", "МассивНедостающих": "MissingArray", "НачалоКодовУспеха": "StartOfSuccessCodes", "КонецКодовПадений": "EndOfFailureCodes", -"Маркировка товара": "Product marking", +"Перейти по адресу": "Go to the", "Удалить календарь": "Delete calendar", "УдалитьТегиБакета": "DeleteBucketTagging", -"Перейти по адресу": "Go to the", "СоздатьУдалитьТег": "CreateDeleteTag", "УдалитьТемуФорума": "DeleteForumTopic", "ПустаяСхемаCreate": "EmptySchemeCreate", "СтруктураПродавца": "SellerStructure", +"Администрирование": "Administration", +"Описание контакта": "Contact description", +"СоздатьБазуДанных": "CreateDatabase", "УстановитьWebhook": "SetWebhook", -"ВККартинкаАльбома": "VKAlbumPicture", -"СтандартныйСпособ": "StandardMethod", -"ЗаполняемыеДанные": "FillableData", +"Пост из автотеста": "Post from autotest", "ИзменитьИмяГруппы": "UpdateGroupName", "Скрытый календарь": "Hidden calendar", "ТоварСоСвойством2": "ProductWithProp2", @@ -3515,11 +3515,10 @@ "Очередь сообщений": "Message queue", "ВызватьИсключение": "Raise", "календарь для CRM": "calendar for CRM", -"ОткрытьОбсуждение": "OpenDiscussion", "истории изменений": "changes history", "ВременнаяМеткаISO": "ISOTimestamp", -"Данные для записи": "Data to be written", -"Пост из автотеста": "Post from autotest", +"ОткрытьОбсуждение": "OpenDiscussion", +"ЗаполняемыеДанные": "FillableData", "АтрибутКатегории1": "CategoryAttribute1", "ПустаяСхемаSelect": "EmptySchemeSelect", "ТоварСоСвойством1": "ProductWithProp1", @@ -3534,12 +3533,15 @@ "Отправить локацию": "Send location", "ХешированиеДанных": "DataHashing", "HTTP_ОсновныеТест": "HTTP_MainTests", +"Тестовое описание": "TestDescription", "СлакИсторияКанала": "SlackChannelHistory", -"ГД_СоздатьКаталог": "GD_CreateCatalog", +"Данные для записи": "Data to be written", "ЗапросАдресПолный": "RequestAdressFull", -"УправлениеСделкой": "ManageDeal", +"Объект HTTPЗапрос": "HTTPRequest object", "ПрочитатьJSONФайл": "ReadJSONFile", +"Тестовая кампания": "TestCampaign", "СообщитьРезультат": "ReportResult", +"Обработать запрос": "Process request", "АТ_СоздатьТаблицу": "AT_CreateTable", "Работа с товарами": "Products management", "ОбъектКомментарий": "CommentObject", @@ -3552,55 +3554,53 @@ "СоответствиеПолей": "FieldMapping", "Управление чатами": "Chat management", "ВнешнееСоединение": "ExternalConnection", -"ВозобновитьЗадачу": "RenewTask", -"Тестовая кампания": "TestCampaign", "КалендарьПриемник": "TargetCalendar", +"НачальнаяФигурная": "InitialCurly", "ОткрытьСоединение": "CreateConnection", -"Работа с бакетами": "Buckets management", +"НеВосстанавливать": "DontRestore", "Поле1,Поле2,Поле3": "Field1,Field2,Field3", -"ОбщийРазмер Тогда": "TotalSize Then", "НеобходимыйРазмер": "RequiredSize", "ЗначениеЛокальный": "LocalValue", "СтруктураКампании": "CampaignStructure", "массив ID товаров": "Products IDs array", "АтрибутКатегории4": "CategoryAttribute4", "ЗначениеЗаголовка": "HeaderValue", -"Б24_РаботаСЛидами": "B24_LeadsManagement", "ПустаяСхемаDelete": "EmptySchemeDelete", +"Описание картинки": "Image description", "КалендарьИсточник": "SourceCalendar", "СоздатьОбсуждение": "CreateDiscussion", "СтруктураКартинки": "PictureStructure", "ВернутьСоединение": "ReturnConnection", "ПоследняяФигурная": "LastCurly", "Отчество контакта": "Contacts patronymic or middle name", -"НеВосстанавливать": "DontRestore", -"НачальнаяФигурная": "InitialCurly", -"Описание картинки": "Image description", -"Полученные данные": "Received data", +"Работа с бакетами": "Buckets management", +"Б24_РаботаСЛидами": "B24_LeadsManagement", +"ОбщийРазмер Тогда": "TotalSize Then", +"ВКВариантСвойства": "VKPropVariant", "ЗначениеКоллекции": "CollectionValue", -"Название подборки": "Selection name", +"ЗаголовкиДвоичные": "HeadersBinary", "наименование цели": "goal name", "Строка, Структура": "String, Structure", "СоздатьПодкаталог": "CreateSubfolder", "ПереместитьОбъект": "MoveObject", "ПолучитьСписокБаз": "GetListOfBases", -"НаписатьСообщение": "WriteMessage", +"Название подборки": "Selection name", "НачатьУчетВремени": "StartTimekeeping", -"Создать штрихкоды": "Create barcodes", "СтруктураТелефона": "PhoneStructure", "СтруктураВозраста": "AgeStructure", "Проверка_ВКРепост": "Check_VKRepost", "ИнформацияОбъекта": "ObjectInfo", -"ЗаголовкиДвоичные": "HeadersBinary", +"Создать штрихкоды": "Create barcodes", +"ГД_СоздатьКаталог": "GD_CreateCatalog", +"НаписатьСообщение": "WriteMessage", +"ОтправкаСообщений": "MessageSending", "ПолучитьБлокФайла": "GetFileBlock", -"ВКВариантСвойства": "VKPropVariant", "ЛокальныеКаталоги": "LocalFolders", "Определение полей": "Definition of fields", "Это данные ячейки": "These are cell data of", "Проверка_ВайберОк": "Check_ViberOk", "ОпросСоответствие": "PollMap", "ТелеграмСообщение": "TelegramMessage", -"СтруктураФильтра2": "FilterStructure2", "СтруктураАтрибута": "AttributeStructure", "ЭтоПредупреждение": "AsAlert", "300).Равно(Истина": "300).Equal(True", @@ -3609,13 +3609,13 @@ "Криптография (OPI": "Cryptography (OpenIntegrations", "СтруктураРазмеров": "SizesStructure", "МассивИзображений": "ImagesArray", -"ОтправкаСообщений": "MessageSending", +"Полученные данные": "Received data", "ПреобразоватьДату": "ConvertDate", -"Обработать запрос": "Process request", +"СтруктураФильтра2": "FilterStructure2", "СтрЧислоВхождений": "StrOccurrenceCount", -"Токен авторизации": "Auth token", +"ВозобновитьЗадачу": "RenewTask", "ТаблицаПараметров": "ParametersTable", -"СоответствиеТипов": "TypesMap", +"СтруктураУпаковки": "PackageStructure", "Файл для отправки": "File for sending", "ОсновноеИзмерение": "MajorDimension", "Проверка_ВКИстина": "Check_VKTrue", @@ -3630,11 +3630,12 @@ "Секрет приложения": "Application secret", "РаботаСКаталогами": "CatalogsManagement", "УправлениеБакетом": "BucketManagement", -"СтруктураУпаковки": "PackageStructure", +"ЭтоПримитивныйТип": "IsPrimitiveType", +"ТелеграмПереслать": "TelegramReply", "ЗагруженныеДанные": "UploadedData", -"Объект HTTPЗапрос": "HTTPRequest object", -"НовоеРасположение": "NewLocation", +"Проверка_ГКОбъект": "Check_GKObject", "УстановитьИмяБазы": "SetBaseName", +"Значение свойства": "Property value", "ЗначениеЗаполнено": "ValueIsFilled", "ПолучитьСообщение": "GetMessage", "СоздатьТемуФорума": "CreateForumThread", @@ -3648,65 +3649,65 @@ "СоздатьСоединение": "CreateConnection", "НС_РаботаСФайлами": "NC_FilesManagement", "СтруктураФильтра1": "FilterStructure1", -"Проверка_ГКОбъект": "Check_GKObject", -"ТелеграмПереслать": "TelegramReply", -"Значение свойства": "Property value", -"ЭтоПримитивныйТип": "IsPrimitiveType", +"НовоеРасположение": "NewLocation", "вес в кг. (брутто": "weight, kg (gross", -"Игровые приставки": "Consoles", +"СоответствиеТипов": "TypesMap", +"ЭлементСтатистики": "StatisticsItem", +"Команда.Пояснение": "Command.Explanation", "СлакСписокКаналов": "SlackChannelsList", "ПолучитьПолеПочты": "GetEmailField", "Работа с заказами": "Orders management", "КабинетыИМагазины": "CampaignsAndBusiness", "НаправлениеПоиска": "SearchDirection", "ОписаниеПараметра": "ParamDescription", +"Игровые приставки": "Consoles", "СообщениеУдаления": "DeletingMessage", -"Новый комментарий": "NewComment", "СтруктураОстатков": "StocksStructure", "СоздатьПодписьURL": "CreateURLSignature", "ВыходнаяКоллекция": "OutputCollection", "Дата : date": "Date : date", "ЗаголовокАккаунта": "AccountHeader", -"СтруктураСчетчика": "CounterStructure", +"Токен авторизации": "Auth token", "./docs/ru/results": "./docs/en/results", -"Команда.Пояснение": "Command.Explanation", +"Новый комментарий": "NewComment", "ГуглЗначенияЯчеек": "GoogleCellValues", -"ЭлементСтатистики": "StatisticsItem", +"СтруктураСчетчика": "CounterStructure", +"Локализация офиса": "Localization of the office", "АтрибутКатегории5": "CategoryAttribute5", "СписокПодключений": "ConnectionsList", "ОпубликоватьПапку": "PublishFolder", "Файлы Мессенджера": "Messenger files", "ТекущаяДатаСеанса": "CurrentSessionDate", -"СохранятьЛокально": "SaveLocally", "МассивРезультатов": "ResultArray", "Тестовая подборка": "TestCollection", -"НоушнСтраницаБазы": "NotionBasePage", +"СохранятьЛокально": "SaveLocally", "Содержимое ссылки": "Link data", "Б24_РаботаСДиском": "B24_WorkingWithDrive", "ПараметрЛокальный": "LocalParameter", "Объект соединения": "Connection object", "описание дефектов": "defect description", "особый тип товара": "specific product type", -"Локализация офиса": "Localization of the office", +"НоушнСтраницаБазы": "NotionBasePage", +"РазмерСжатыхДанных": "CompressedDataSize", +"Получить хранилище": "Get storage", "СоздатьКомментарий": "CreateComment", -"РаботаСоСтраницами": "PageManagement", "Активный : green": "Active : green", "Email как RFC 2822": "Email as RFC 2822", -"РазмерСжатыхДанных": "CompressedDataSize", +"СекретПользователя": "UsersSecret", "Возобновить задачу": "Renew task", -"СкопироватьКаталог": "MakeFolderCopy", +"ПравильныйВариант7": "CorrectVariant7", "идентификатор лида": "lead identifier", "Соответствие полей": "Fields map", "СформироватьЗапрос": "FormRequest", "Наименование видео": "Video name", "Написать сообщение": "Write a message", -"ПравильныйВариант7": "CorrectVariant7", +"ЧЦ=10; ЧДЦ=0; ЧГ=0": "ND=10; NFD=0; NG=0", "ПреобразоватьФайлы": "ConvertFiles", -"РазбитьURL: Секция": "SplitURL: Section", -"СекретПользователя": "UsersSecret", +"СкопироватьКаталог": "MakeFolderCopy", "Получить поле (url": "Get field (url", -"БитриксСписокЗадач": "BitrixTasksList", -"ОжидатьПодключение": "AwaitingConnection", +"СтруктураОбработки": "ProcessedStructure", +"Работа со сделками": "Deals management", +"РазбитьURL: Секция": "SplitURL: Section", "ОсновнойОбработчик": "MainHandler", "HttpКлиентПроверки": "HttpCheckClient", "ОтправитьФайл (хук": "SendFile", @@ -3716,16 +3717,16 @@ "ГТ_ПолучитьТаблицу": "GT_GetTable", "ул. Пушкина, д. 10": "Pushkin st., b. 10", "ОжидатьПодключения": "AwaitConnections", -"СтруктураОбработки": "ProcessedStructure", "СтандартнаяЕдиница": "StandardUnit", "Текст новых правил": "Text of the new rules", "ПривязатьШтрихкоды": "BindBarcodes", +"ОпубликоватьОбъект": "PublishObject", "УдалитьВнешнийФайл": "DeleteExternalFile", -"Работа со сделками": "Deals management", +"ОжидатьПодключение": "AwaitingConnection", "признак шаблона (Y": "is pattern (Y", -"ЧЦ=10; ЧДЦ=0; ЧГ=0": "ND=10; NFD=0; NG=0", -"задача в отчете (Y": "task in report (Y", -"Лёгкость внедрения": "Easy to use", +"Получить сообщение": "Get message", +"ЗаголовокИсточника": "SourceHeader", +"РаботаССообщениями": "MessageManagement", "СтруктураКалендаря": "CalendarsStructure", "HTTP_УстановкаТела": "HTTP_BodySet", "Изменить цвет чата": "Change chat color", @@ -3739,12 +3740,12 @@ "Время начала обеда": "Lunch start time", "Переместить объект": "Move object", "МаксимальныйРазмер": "MaxSize", -"Получить сообщение": "Get message", -"НС_ПолучениеДанных": "NC_DataRetrieving", -"РаботаССообщениями": "MessageManagement", +"БитриксСписокЗадач": "BitrixTasksList", +"Лёгкость внедрения": "Easy to use", +"задача в отчете (Y": "task in report (Y", "АрхивироватьТовары": "ArchiveProducts", +"Непонятная колонка": "An obscure column", "УправлениеСобытием": "EventManagement", -"ЗапросЗаписьДанных": "RequestDataWriter", "ДлительностьОпроса": "PollDuration", "БитриксАвторизация": "BitrixAuth", "УдалитьТегиОбъекта": "DeleteObjectTagging", @@ -3759,12 +3760,12 @@ "СтрЗаканчиваетсяНа": "StrEndsWith", "СоответствиеИконки": "IconMap", "ПолеИдентификатора": "IdentifierField", -"Непонятная колонка": "An obscure column", -"ЗаголовокИсточника": "SourceHeader", +"ЗапросЗаписьДанных": "RequestDataWriter", "название календаря": "calendars name", -"ЗакрепитьСообщение": "PinMessage", +"ПоследнийКодУспеха": "LastSuccessCode", "Б24_СерверноеВремя": "B24_ServerTime", -"Тестовый календарь": "TestCalendar", +"ПолучитьПолеСсылки": "GetLinkField", +"HTTP_Инициализация": "HTTP_Initialization", "Ссылка на хост API": "API host link", "URL источник файла": "URL source of the file", "Создать твит гифки": "Create gif tweet", @@ -3778,32 +3779,29 @@ "СоответствиеТаблиц": "TableMapping", "КаноническийЗапрос": "CanonicalRequest", "РазмерПрефиксаGZip": "GZipPrefixSize", -"ДополнитьЗаголовки": "CompleteHeaders", -"ПолучитьСтатистику": "GetStatistics", -"ПолучитьПолеСсылки": "GetLinkField", "Тестовый заголовок": "TestTitle", -"Архивировать канал": "Archive channel", -"Закрыть соединение": "Close connection", -"ПоследнийКодУспеха": "LastSuccessCode", +"ПолучитьСтатистику": "GetStatistics", +"Тестовый календарь": "TestCalendar", +"Поток тела запроса": "Request body stream", +"НС_ПолучениеДанных": "NC_DataRetrieving", "Б24_РаботаСТокеном": "B24_TokenManagement", "СоответствиеСтроки": "RowMap", "ЗагрузитьМедиафайл": "UploadMediaFile", "УстановитьFormТело": "SetFormBody", "Высота товара в мм": "Product height in mm", "Праздники Беларуси": "Holidays in Belarus", -"ОпубликоватьОбъект": "PublishObject", +"Клиентский возврат": "Customer refund", "ПолучитьБазуДанных": "GetDatabase", "СкачатьМодель (bay": "PullModel (bay", -"Клиентский возврат": "Customer refund", +"Архивировать канал": "Archive channel", "ЗакрытьПодключение": "CloseConnection", "МассивОбязательных": "RequiredArray", "VK_УдалитьПодборку": "VK_DeleteCollection", -"Поток тела запроса": "Request body stream", "ПолучитьТоварыПоИД": "GetProductsByID", +"Закрыть соединение": "Close connection", "РежимОткрытияФайла": "FileOpenMode", -"HTTP_Инициализация": "HTTP_Initialization", +"ПравильныйВариант4": "CorrectVariant4", "Данные тела ответа": "Response body data", -"ПолучитьОбновления": "GetUpdates", "ОбработатьПараметр": "ProcessParameter", "СтруктураИнформера": "InformerStructure", "ПриСозданииОбъекта": "OnObjectCreate", @@ -3820,29 +3818,30 @@ "Удаляет файл по ID": "Delete file by ID", "Новое имя варианта": "New variant name", "СтруктураПараметра": "ParameterStructure", +"ПолучитьОбновления": "GetUpdates", "Идентификатор чата": "Chat identifier", -"Открыть обсуждение": "Open discussion", "Наименование метки": "Tag title", +"Открыть обсуждение": "Open discussion", "Dropbox_УдалитьТег": "Dropbox_DeleteTag", "Проверка_ЯДискДиск": "Check_YaDiskDrive", "ПреобразоватьТекст": "ConvertText", "ОтправитьСообщение": "SendMessage", "Отправить документ": "Send document", "БитриксКомментарий": "BitrixComment", +"РаботаСоСтраницами": "PageManagement", "ПреобразоватьЧисло": "ConvertNumber", -"ИзменитьТемуФорума": "EditForumTopic", "фильтрация роботов": "robots filtration", "ВыполнитьЗапросSQL": "ExecuteSQLQuery", "ПреобразоватьСвязь": "ConvertLink", "ПолучитьТелоОтвета": "GetResponseBody", "ГраницаТипов Тогда": "TypesBound Then", -"ПравильныйВариант4": "CorrectVariant4", "ПереданныйПараметр": "PassedParameter", +"ЗакрепитьСообщение": "PinMessage", +"ИзменитьТемуФорума": "EditForumTopic", "ПолучитьПолеНомера": "GetNumberField", -"Получить хранилище": "Get storage", +"MYS_ОсновныеМетоды": "MYS_CommonMethods", "ID книги приемника": "Destination spreadsheet ID", -"ОзонУдалениеТовара": "OzonProductsDeleting", -"Проверка кодировки": "Encoding check", +"ЛокацияОтправления": "SendLocation", "НачальнаяТабуляция": "InitialTab", "ЧислоПереадресаций": "RedirectCount", "РаботаСЖивойЛентой": "FeedPostsManagement", @@ -3858,8 +3857,8 @@ "МассивКлючЗначение": "KeyValueArray", "Работа с новостями": "Posts management", "ID книги источника": "Source spreadsheet ID", -"ПравильныйВариант6": "CorrectVariant6", -"СтруктураСостояния": "StateStructure", +"Ширина товара в мм": "Product width in mm", +"Создать твит опрос": "Create poll tweet", "Фильтр по родителю": "Filter by parent ID", "Изменить календарь": "Edit calendar", "СтруктураВебвизора": "WebvisorStructure", @@ -3876,34 +3875,34 @@ "Проверка_ВКИстория": "Check_VKStory", "Без разделения: %1": "No separation: %1", "КвалификаторыЧисла": "NumberQualifiers", -"Ширина товара в мм": "Product width in mm", -"Создать твит опрос": "Create poll tweet", -"ИзменитьАватарЧата": "ChangeChatPicture", -"ЯДиск_СоздатьПапку": "YDisk_CreateFolder", +"ПравильныйВариант6": "CorrectVariant6", +"СтруктураСостояния": "StateStructure", +"Проверка кодировки": "Encoding check", +"ПереименоватьКанал": "RenameChannel", "ПринятьЗадачу (хук": "ApproveTask (wh", -"Идентификатор базы": "Base identifier", +"СоздатьЗадачу (хук": "CreateTask (wh", "Команда CLI: tools": "CLI Command: tools", "ОзонМассивОбъектов": "OzonObjectsArray", "Управление метками": "Tags management", "Получить квитанцию": "Get receipt", "Опубликовать папку": "Publish folder", -"Имя : title": "Name : title", +"Идентификатор базы": "Base identifier", "ПереместитьСобытие": "MoveEvent", -"ОписаниеПеременных": "Variables", +"СоздатьУдалитьБлок": "CreateDeleteBlock", "Удаляет блок по ID": "Deletes block by ID", "ЗагрузитьФайл (URL": "UploadFile (URL", "ТолькоОбязательные": "RequiredOnly", -"Закрыть обсуждение": "Close discussion", -"СоздатьУдалитьБлок": "CreateDeleteBlock", -"СоздатьЗадачу (хук": "CreateTask (wh", +"ОписаниеПеременных": "Variables", +"ДополнитьЗаголовки": "CompleteHeaders", +"Имя : title": "Name : title", +"ИзменитьАватарЧата": "ChangeChatPicture", "ФинальнаяСтруктура": "FinalStructure", -"ПереименоватьКанал": "RenameChannel", "ПравильныйВариант5": "CorrectVariant5", "СтруктураВариантов": "VariantStructure", +"Пример команды CLI": "CLI command example", "описание календаря": "calendar description", "Новая таблица (изм": "New table (change", "РаботаСКалендарями": "CalendarsManagement", -"Yandex Market (ОПИ": "Yandex Market (OpenIntegrations", "Создано из шаблона": "Created from template", "УдалитьУведомление": "DeleteNotification", "ПолучитьТегиБакета": "GetBucketTagging", @@ -3913,10 +3912,13 @@ "Маркетинговый цвет": "Marketing color", "ГринОчисткаОчереди": "GreenQueueClearing", "СтруктураАналитики": "AnalyticsStructure", -"ЛокацияОтправления": "SendLocation", +"ЯДиск_СоздатьПапку": "YDisk_CreateFolder", +"Yandex Market (ОПИ": "Yandex Market (OpenIntegrations", "ПолучитьURLСервиса": "GetServiceURL", -"Создать твит видео": "Create video tweet", +"Закрыть обсуждение": "Close discussion", "Тестовое сообщение": "TestMessage", +"ОтправитьВидео (ДД": "SendVideo (DD", +"ЗагрузитьУдалитьВФ": "UploadDeleteExternalFile", "Значение заголовка": "Header value", "ЗначенияПараметров": "ParameterValues", "РаботаСПолямиЗадач": "CustomTasksFieldsManagement", @@ -3930,33 +3932,30 @@ "МассивСертификатов": "CertificatesArray", "ПолучитьКомпоненту": "GetAddIn", "Обработка запросов": "Requests processing", -"РаботаСХранилищами": "StoragesManagement", -"Установить Webhook": "Set Webhook", -"ЗагрузитьУдалитьВФ": "UploadDeleteExternalFile", -"ОтправитьВидео (ДД": "SendVideo (DD", "ПравильныйВариант3": "CorrectVariant3", +"РаботаСХранилищами": "StoragesManagement", "VK_УдалитьКартинку": "VK_DeleteImage", -"Отправить картинку": "Send image", +"ЗагрузитьМалыйФайл": "UploadSmallFile", +"РазлогинитьИнстанс": "LogoutInstance", +"ЗапросПараметрыURL": "RequestURLParams", "ЛимитПользователей": "UserLimit", "РазархивироватьЧат": "UnarchiveChat", "НачалоОбработкиXML": "XMLInitialProcessing", "ТотЖеДокумент.docx": "SameDoc.docx", "Статус отправления": "Shipment status", "Получает лид по ID": "Gets a lead by ID", -"ЗапросПараметрыURL": "RequestURLParams", "СоздатьУдалитьПост": "CreateDeletePost", +"Создать твит видео": "Create video tweet", "ФормированиеБлоков": "BlockFormation", "Открыть соединение": "Create Connection", "ПолучитьПолеФлажка": "GetCheckboxField", "Тестовая таблица 2": "TestTable2", "ПолучитьЧекиНаДату": "GetCashboxChecksByDate", -"ЗагрузитьМалыйФайл": "UploadSmallFile", "полный домен сайта": "full site domain", -"S3НеПоддерживается": "S3NotImplemented", +"Установить Webhook": "Set Webhook", +"Отправить картинку": "Send image", "Анонимность опроса": "Poll anonymity", -"Токен пользователя": "User token", -"Google Sheets (ОПИ": "Google Sheets (OpenIntegrations", -"MYS_ОсновныеМетоды": "MYS_CommonMethods", +"ВКСтатистикаПостов": "VKPostsStatistic", "URL сервера Ollama": "Ollama server URL", "ДвоичныеВКоллекцию": "BinaryToCollection", "ПолучитьДанныеЧата": "GetChatData", @@ -3970,18 +3969,20 @@ "Работа с объектами": "Objects management", "ДанныеПользователя": "UserData", "ПреобразоватьПочту": "ConvertEmail", -"ВключитьЗвукЗадачи": "UnmuteTask", -"ВКСтатистикаПостов": "VKPostsStatistic", +"S3НеПоддерживается": "S3NotImplemented", +"Google Sheets (ОПИ": "Google Sheets (OpenIntegrations", "ДобавитьОбработчик": "AddHandler", +"ВключитьЗвукЗадачи": "UnmuteTask", +"ОзонУдалениеТовара": "OzonProductsDeleting", "Проверка_Структура": "Check_Structure", -"Получить календарь": "Get calendar", +"Токен пользователя": "User token", "ДропБоксМетаданные": "DropboxMetadata", "Объект TCP сервера": "TCP server object", "УправлениеДиалогом": "DialogManagement", -"Создать подкаталог": "Create new subfolder", +"Получить календарь": "Get calendar", "ТолькоУОтправителя": "ForSenderOnly", "ГринКартинкаГруппы": "GreenGroupPicture", -"СоздатьПодключение": "CreateConnection", +"Создать подкаталог": "Create new subfolder", "УправлениеГруппами": "GroupManagement", "ПолучитьИДКартинки": "GetImageID", "СледующаяКоллекция": "NextCollection", @@ -3989,29 +3990,26 @@ "ВайберПользователь": "ViberUser", "ПереместитьКаталог": "MoveFolder", "!OInt КБайт = 1024": "!OInt KB = 1024", -"РазлогинитьИнстанс": "LogoutInstance", -"Пример команды CLI": "CLI command example", +"СоздатьПодключение": "CreateConnection", "ПреобразоватьСтатус": "ConvertStatus", "Дополнить c атрибут": "Complete complex attribute", "ЗапуститьПриложение": "RunApp", "ИзменитьКомментарий": "EditComment", "Создает новый канал": "Creates a new channel", "УдалитьОбъект (Путь": "DeleteObject (Path", -"ПустаяСхемаTruncate": "EmptySchemeTruncate", -"Наименование бакета": "Bucket name", +"СоздатьЗаписи (одна": "CreateRecords (one", +"СтруктураПараметров": "ParametersStructure", "НумерацияПараметров": "ParameterNumeration", "Простота и гибкость": "Simplicity and flexibility", "ПолучитьДанныеФайла": "GetFileData", "Проверка_ВККампания": "Check_VKCampaign", -"СоздатьЗаписи (одна": "CreateRecords (one", "ЗакрыватьСоединение": "CloseConnection", -"СтруктураРезультата": "ResultStrucutre", +"ПустаяСхемаTruncate": "EmptySchemeTruncate", "ВК_МетодыОбсуждений": "VKAPI_DiscussionMethods", +"ПолучитьЦеныТоваров": "GetProductsPrices", "СоздатьНовость (хук": "CreatePost (wh", -"НеобходимыйПараметр": "RequiredParameter", -"МассивОтсутствующих": "AbsenteesArray", "КлавиатураСообщения": "MessageKeyboard", -"СоответствиеСобытия": "EventMap", +"СтруктураРезультата": "ResultStrucutre", "ДействиеСВложениями": "ActionWithAttachment", "Язык: rus, eng, zho": "Language: rus, eng, zho", "Данные тела запроса": "Request body data", @@ -4019,34 +4017,37 @@ "Структура Из Строка": "Structure Of String", "МассивПользователей": "ArrayOfUsers", "Закрепить сообщение": "Pin message", -"ПолучитьЦеныТоваров": "GetProductsPrices", "УдалитьТоварыБезSKU": "DeleteProductsWithoutSKU", "Опубликовать объект": "Publish object", "Идентификатор файла": "File identifier", "Измененная подборка": "EditedCollection", "УстановитьНастройку": "SetSetting", -"страна производства": "country of manufacture", +"МассивОтсутствующих": "AbsenteesArray", +"SQLL_ОсновныеМетоды": "SQLL_CommonMethods", +"СоответствиеСобытия": "EventMap", +"ОтключитьЗвукЗадачи": "MuteTask", "Dropbox_ДобавитьТег": "Dropbox_AddTag", -"ОтправитьФайл (Путь": "SendFile (Path", -"ГуглОбновлениеЯчеек": "GoogleCellUpdating", +"ПолучитьКомментарии": "GetComments", "РабочееПространство": "Workspace", "ПолучитьТокенПоКоду": "GetTokenByCode", "СтрокаПользователей": "MembersQuery", "Удаляет метку по ID": "Deletes a tag by ID", "СоответствиеОбложки": "CoverMap", "Нажмите Publish App": "Click on Publish App", -"ПолучитьКомментарии": "GetComments", "СлакСсылкаСообщения": "SlackMessageLink", +"Изменить имя группы": "Update group name", "Данные для отправки": "Sending data", "телефон заполнен (Y": "phone field is filled (Y", "Разлогинить инстанс": "Logout instance", "УстанавливатьПустое": "SetIfEmpty", +"НеобходимыйПараметр": "RequiredParameter", "ОзонЗаданиеЗагрузки": "OzonUploadTask", -"СтруктураПолучателя": "RecipientStructure", -"Изменить имя группы": "Update group name", "СписокПользователей": "UserList", +"страна производства": "country of manufacture", "имя поля для отбора": "filtering field name", -"Массив файлов видео": "Video files array", +"Открыть тему форума": "Open forum thread", +"ОтправитьФайл (Путь": "SendFile (Path", +"ГуглОбновлениеЯчеек": "GoogleCellUpdating", "Плановое завершение": "Planned end", "МассивМедиаКартинок": "MediaPictureArray", "Создать/Удалить тег": "Create/Delete tag", @@ -4060,67 +4061,67 @@ "Создает базу данных": "Creates a database", "ПолучитьСвойАккаунт": "GetOwnAccount", "Делегировать задачу": "Delegate task", -"ОтключитьЗвукЗадачи": "MuteTask", -"Открыть тему форума": "Open forum thread", -"SQLL_ОсновныеМетоды": "SQLL_CommonMethods", +"Массив файлов видео": "Video files array", "Переслать сообщение": "Forward message", -"Скоприровать объект": "Copy object", +"Мой новый календарь": "My new calendar", "ЦеныИОстаткиТоваров": "PricesAndStocks", -"ПолучитьСделку (хук": "GetDeal (wh", +"ОзонГотовыйЧерновик": "OzonReadyDraft", +"Получает файл по ID": "Gets file by ID", +"СтруктураЗаголовков": "HeadersStructure", "ПутьЛоговБиблиотеки": "LibraryLogPath", "ДобавитьВидеоТовара": "AddProductVideo", -"ОтложитьЗадачу (хук": "DeferTask (wh", "Б24_РаботаСЗадачами": "B24_TaskManagement", +"ОтложитьЗадачу (хук": "DeferTask (wh", "Отправить сообщение": "Send message", -"СдэкАПИ_ОбщиеМетоды": "CdekAPI_CommonMethods", -"Получает файл по ID": "Gets file by ID", "RC_ВыполнениеКоманд": "RC_CommandsExecution", +"СистемнаяИнформация": "SystemInfo", "Удалить уведомление": "Delete notification", "ПреобразованиеТипов": "TypeConversion", "ЗапросТелоКоллекция": "RequestBodyCollection", "БуферДвоичныхДанных": "BinaryDataBuffer", -"Новое имя календаря": "New calendar name", -"ПолучитьТекущуюДату": "GetCurrentDate", -"СистемнаяИнформация": "SystemInfo", -"ОзонГотовыйЧерновик": "OzonReadyDraft", -"СоздатьПользователя": "CreateUser", +"СдэкАПИ_ОбщиеМетоды": "CdekAPI_CommonMethods", "ЗакрытиеПодключения": "ConnectionShutdown", -"Управление группами": "Group management", +"ПолучениеИнформации": "DataRetrieval", +"СоздатьПользователя": "CreateUser", +"СтруктураПолучателя": "RecipientStructure", "УдалитьМодель (tiny": "DeleteModel (tiny", "Новое имя хранилища": "New storage name", "ОбработанныеПозиции": "ProcessedPositions", +"СоответствиеКолонок": "ColoumnsMap", "Dropbox_СкачатьФайл": "Dropbox_DownloadFile", "УдалитьТаблицу (TLS": "DeleteTable (TLS", "СоздатьСсылкуТокена": "CreateTokenLink", -"СоответствиеКолонок": "ColoumnsMap", +"Управление группами": "Group management", +"ПолучитьСделку (хук": "GetDeal (wh", "Переслать сообщения": "Forward messages", "СтруктураВыполнения": "ExecutionStructure", "ПолучитьЗаписи (TLS": "GetRecords (TLS", "ПолучитьСписокАкций": "GetPromotionsList", "СоответствиеМетодов": "MethodMap", -"ПолучениеИнформации": "DataRetrieval", +"Новое имя календаря": "New calendar name", +"ПолучитьТекущуюДату": "GetCurrentDate", "СоздатьЗапросСТелом": "CreateRequestWithBody", -"СтруктураЗаголовков": "HeadersStructure", "ОбработатьЗаголовки": "HeadersProcessing", -"АккаунтИАвторизация": "AccountAndAuthorization", +"Альбом из автотеста": "AlbumFromAutoTest", "Дата начала периода": "Start date of the period", "ОзонСписокКатегорий": "OzonCategoryList", "Данные для API v1.1": "Data for API v1.1", "ДобавитьВнешнийФайл": "AddExternalFile", "Новое подразделение": "New department", "НаписатьКомментарий": "WriteComment", -"Альбом из автотеста": "AlbumFromAutoTest", "СтруктураКлавиатуры": "KeyboardStructure", +"0 Или СтрНайти(Путь": "0 Or StrFind(Path", "Есть прием наличных": "There is cash intake", "УдалитьКаталог (хук": "DeleteFolder (wh", "UUID договоренности": "Appointment UUID", "ПолучитьОсобенности": "GetFeatures", "ПолучитьСписокТегов": "GetTagList", "ПолучитьСписокЗадач": "GetTasksList", -"0 Или СтрНайти(Путь": "0 Or StrFind(Path", "Привязать штрихкоды": "Bind barcodes", +"Наименование бакета": "Bucket name", "Архив : yellow": "Archive : yellow", -"СтруктураЗавершения": "FinishStructure", +"Скоприровать объект": "Copy object", +"АккаунтИАвторизация": "AccountAndAuthorization", "Глубина товара в мм": "Product depth in mm", "СгруппироватьТовары": "GroupProducts", "Создать тему форума": "Create forum thread", @@ -4129,37 +4130,35 @@ "Значение для поиска": "Search value", "TODO: Вернуть позже": "TODO: Comeback later", "Наименование товара": "Product name", -"Получить поле (дата": "Get field (date", "РазмерПостфиксаGZip": "GZipPostfixSize", "Кол-во комментариев": "Comments count", "Отбор по типу файла": "Filter by file type", -"Мой новый календарь": "My new calendar", "ПолучитьКлючПодписи": "GetSignatureKey", "Наименование канала": "Channel name", "Удалить базу данных": "Drop database", +"СтруктураЗавершения": "FinishStructure", "ДобавитьФайлВЗадачу": "AttachFileToTopic", -"СтруктураПараметров": "ParametersStructure", +"Удалить комментарий": "Delete comment", "Структура из Строка": "Structure Of String", -"НаписатьВОбсуждение": "WriteInDiscussion", +"УправлениеПодборкой": "SelectionManagement", "ПолучитьСписокМеток": "GetTagsList", +"РаботаСОбсуждениями": "DiscussionManagement", "Кабинеты и магазины": "Campaigns and business", "КэшированиеСоставов": "CompositionCache", "Проверка_ВКСвойство": "Check_VKProp", +"Создать базу данных": "Create database", "Комментарий курьеру": "Comment to courier", -"РаботаСБазамиДанных": "DatabaseManagement", "УдалитьНовость (хук": "DeletePost (wh", "УчетРабочегоВремени": "Timekeeping", "РаботаСТемамиФорума": "ForumTopicManagement", "УправлениеДоставкой": "DeliveryManagement", "ОзонМассивРейтингов": "OzonRatingArray", "ID категории товара": "Product category ID", -"Длительность опроса": "Poll duration", -"Начать учет времени": "Start timekeeping", -"УправлениеПодборкой": "SelectionManagement", +"РаботаСБазамиДанных": "DatabaseManagement", "ПолучитьТегиОбъекта": "GetObjectTagging", -"БитриксНеопределено": "BitrixUndefined", "Ставит лайк на пост": "Likes a post", -"АльтернативныйТекст": "AlternateText", +"ЗагрузитьОбъект (DB": "PutObject (DB", +"БитриксНеопределено": "BitrixUndefined", "ЗаполнитьURLОбъекта": "FillObjectURL", "МассивХарактеристик": "AttributesArray", "АТЗаписьНомерСтрока": "ATRecordNumberAndString", @@ -4174,34 +4173,37 @@ "Получить блок файла": "Get file block", "КопироватьЛист (доп": "CopySheet (new", "ИзменитьСделку (хук": "UpdateDeal (wh", -"ЗагрузитьОбъект (DB": "PutObject (DB", +"Длительность опроса": "Poll duration", +"Начать учет времени": "Start timekeeping", "Разархивировать чат": "Unarchive chat", -"Создать базу данных": "Create database", -"ИсключениеПриОшибке": "ExceptionOnError", +"АльтернативныйТекст": "AlternateText", +"ТекущийПользователь": "CurrentUser", +"ЗаменитьСпецСимволы": "ReplaceSpecialCharacters", "ПолучитьСписокЛидов": "GetLeadsList", -"ПолучитьТелоЗапроса": "GetRequestBody", "ОзонДобавлениеКодов": "OzonNewCodes", "Фильтр по списку ID": "filter by IDs list", "ЗаменитьСпецсимволы": "ReplaceSpecialCharacters", "ЗаполнитьСортировку": "FillSorting", -"ПараметрыЗаписиJSON": "JSONWriterSettings", -"ЗаменитьСпецСимволы": "ReplaceSpecialCharacters", +"Получить поле (дата": "Get field (date", +"ПолучитьТелоЗапроса": "GetRequestBody", "ПолучитьУведомление": "GetNotification", "НормализоватьОснову": "NormalizeMain", "Картинка задачи.jpg": "Topic picture.jpg", "ДлительностьПопытки": "AttemptDuration", "Переместить событие": "Move event", "Открепить сообщение": "Unpin message", -"ТекущийПользователь": "CurrentUser", -"Новое описание базы": "New database description", +"Получить чек заказа": "Get cashbox check", +"Получить лог !NOCLI": "Get log !NOCLI", "ПолучитьЗадачу (хук": "GetTask (wh", +"ИсключениеПриОшибке": "ExceptionOnError", +"идентификатор сайта": "site identifier", +"Новое описание базы": "New database description", "Получает список баз": "Gets a list of bases", "SQLiteЗначенияПолей": "SQLiteFieldsValues", "УстановкаЗаголовков": "HeadersSetting", "Канцелярские товары": "Stationery", "ТелеграмПриглашение": "TelegramInvitation", "Перейдите по ссылке": "Go to the link", -"Получить чек заказа": "Get cashbox check", "Новое имя файла.jpg": "New file name.jpg", "УстановитьЗаголовки": "SetHeaders", "SQL запрос из файла": "SQL query from file", @@ -4209,38 +4211,35 @@ "ОперационнаяСистема": "OperatingSystem", "ОбновитьЦеныТоваров": "UpdateProductsPrices", "Переименовать канал": "Rename channel", -"идентификатор сайта": "site identifier", "ПреобразоватьБулево": "ConvertBoolean", -"РаботаСОбсуждениями": "DiscussionManagement", -"Получить лог !NOCLI": "Get log !NOCLI", -"Путь из URL запроса": "Path from the request URL", -"Удалить теги бакета": "Delete bucket tagging", +"ВажныйДокумент.docx": "ImportantDocument.docx", +"ПараметрыЗаписиJSON": "JSONWriterSettings", +"Module.ExpectsThat(": "Module.ОжидаетЧто(", "Создает новую книгу": "Creates a new spreadsheet", "СформироватьКоманду": "FormCommand", "значение для замены": "replacement value", "ПриостановитьЗадачу": "PauseTask", "БитриксСоответствие": "BitrixMap", "ПреобразоватьСсылку": "ConvertURL", +"ДополнитьКэшСостава": "CompleteCompositionCache", "УдалитьЗаписи (одна": "DeleteRecords (one", -"ОбработатьДанныеTMA": "ProcessTMAData", "один из типов медиа": "media type", "СтруктураИнформации": "DataStructure", "ПереданныеПараметры": "PassedParameters", "Отправляемая ссылка": "SentLink", "РаскодироватьСтроку": "DecodeString", "СоответствиеКолонки": "ColoumnMap", -"Фото- и видеоуслуги": "Photo and video service", -"ДополнитьКэшСостава": "CompleteCompositionCache", +"ОбработатьДанныеTMA": "ProcessTMAData", +"Путь из URL запроса": "Path from the request URL", "Yandex Metrika (ОПИ": "Yandex Metrika (OpenIntegrations", -"ДобавитьЗаписи (TLS": "AddRecords (TLS", "СерверноеВремя (хук": "ServerTime (wh", +"Удалить теги бакета": "Delete bucket tagging", +"ДобавитьЗаписи (TLS": "AddRecords (TLS", "Получить информацию": "Get data", "Удаляет базу данных": "Deletes the database", -"УстановитьТипДанных": "SetDataType", "Создать комментарий": "Create comment", "Получить обновления": "Get updates", "Массив из Структура": "Array of Structure", -"Удалить комментарий": "Delete comment", "Скопировать каталог": "Copy folder", "Массив файлов гифок": "Gif files array", "ПолучитьПараметрыВК": "GetVKParameters", @@ -4249,78 +4248,79 @@ "ПолучитьВнешнийФайл": "GetExternalFile", "ПолучитьТаблицыБазы": "GetDatabaseTables", "ВосстановитьСчетчик": "RestoreCounter", +"Фото- и видеоуслуги": "Photo and video service", "Получить статистику": "Get statistics", -"ВажныйДокумент.docx": "ImportantDocument.docx", -"Эфимерное сообщение": "Ephemeral message", +"УстановитьТипДанных": "SetDataType", "СоздатьТвитКартинки": "CreateImageTweet", -"СоответствиеСвойств": "PropertyMap", +"ГлобальныеПараметры": "GlobalParams", +"СтруктураОбновления": "UpdatesStructure", "ВосстановитьКаталог": "RestoreFolder", "ВернутьИмяФайлаТела": "ReturnBodyFilename", "РегулярноеВыражение": "Regex", "СоздатьКопиюОбъекта": "CreateObjectCopy", +"Удаляет тему форума": "Deletes a forum thread", "ОбработатьВыводJSON": "ProcessJSONOutput", -"Архивировать товары": "Archive products", -"СтруктураОбновления": "UpdatesStructure", "ОбновитьЗаписи (TLS": "UpdateRecords (TLS", +"СправкаПоПараметрам": "ParamsHelp", "СоздатьТвитСОпросом": "CreateTweetWithPoll", -"Количество : number": "Count : number", "ПоддерживаемыйОтвет": "SupportedResponse", "Портативная техника": "Portable gadgets", -"ИсполняемыеСценарии": "RunningScenarios", -"Module.ExpectsThat(": "Module.ОжидаетЧто(", -"СправкаПоПараметрам": "ParamsHelp", -"ГлобальныеПараметры": "GlobalParams", -"Удаляет тему форума": "Deletes a forum thread", +"Эфимерное сообщение": "Ephemeral message", +"Архивировать товары": "Archive products", "Закрыть тему форума": "Close forum thread", +"Количество : number": "Count : number", +"ПараметрыСоединения": "ConnectionParams", +"СоответствиеСвойств": "PropertyMap", +"НаписатьВОбсуждение": "WriteInDiscussion", "В качестве чат-бота": "Like a chat-bot", "Проверка_ВКПодборка": "Check_VKCollection", "СоздатьИзменитьБазу": "CreateUpdateDatabase", "Получить список баз": "Get list of bases", "РаботаСППолямиЗадач": "TasksFieldsManagement", -"Комплексные решения": "Complete solutions", +"ИсполняемыеСценарии": "RunningScenarios", +"Переместить каталог": "Move folder", "СоздатьТаблицу (TLS": "CreateTable (TLS", "ПолучитьФайлНаДиске": "GetFileOnDisk", "Пароль пользователя": "Users password", +"Комплексные решения": "Complete solutions", "Команда отсуствует:": "The command is not available:", "ПолучитьОбщийМодуль": "GetCommonModule", "КопироватьКоллекцию": "CopyCollection", -"Переместить каталог": "Move folder", -"ПараметрыСоединения": "ConnectionParams", -"Установить form тело": "Set Form body", -"Работа с CLI версией": "Working with CLI app", -"СоответствиеКартинки": "PictureMap", +"БезопасноеСоединение": "SafeConnection", +"Bitrix24_УдалитьФайл": "Bitrix24_DeleteFile", +"Обновленный файл.jpg": "UpdatedFile.jpg", +"СтруктураОтправителя": "SenderStructure", +"ПрограммныйИнтерфейс": "Public", "СтруктураПараметров6": "ParameterStructure6", "color=Зеленый) Метод": "color=Green) Method", -"Получение информации": "Data retrieval", -"ПрограммныйИнтерфейс": "Public", -"СтруктураОтправителя": "SenderStructure", -"Обновленный файл.jpg": "UpdatedFile.jpg", -"Bitrix24_УдалитьФайл": "Bitrix24_DeleteFile", -"БезопасноеСоединение": "SafeConnection", "ответ сервера Google": "Google server response", -"СоздатьПодразделение": "CreateDepartment", +"СоответствиеКартинки": "PictureMap", +"Работа с CLI версией": "Working with CLI app", +"Установить form тело": "Set Form body", +"ФИО контактного лица": "Full name of contact person", +"ПереименоватьКаталог": "RenameFolder", +"Получение информации": "Data retrieval", +"ЗаголовокАвторизации": "AuthorizationHeader", "УстановитьТемуКанала": "SetChannelTopic", -"ИнформацияОПрогрессе": "ProgressInformation", +"БитриксФайлСообщение": "BitrixFileMessage", "Про варианты релизов": "About releases variants", "ИзменитьНовость (хук": "UpdatePost (wh", "ПолучитьКаталог (хук": "GetFolder (wh", "Если Не Клиент Тогда": "If Not Client Then", -"МассивСтруктурКнопок": "ArrayOfButtonStructures", "Дата выдачи паспорта": "Date of issue of passport", "ДобавитьРодителяБазы": "AddDatabaseParent", "СоздатьСтрокуПодписи": "CreateSignatureString", "Аудио и видеотехника": "Audio and video", "Тестовый комментарий": "TestComment", "НастройкаНапоминания": "ReminderSetting", -"Изменить аватар чата": "Change chat picture", -"ЗаголовокАвторизации": "AuthorizationHeader", -"Удалить внешний файл": "Delete external file", -"ПереименоватьКаталог": "RenameFolder", "СоответствиеВозврата": "ReturnMapping", -"СтруктураБазовойЦены": "BasePriceStructure", -"ОчиститьТаблицу (TLS": "ClearTable (TLS", +"Изменить аватар чата": "Change chat picture", +"СоздатьПодразделение": "CreateDepartment", +"МассивСтруктурКнопок": "ArrayOfButtonStructures", +"ОткрытьЗакрытьДиалог": "OpenCloseDialog", "идентификатор стадии": "stage identifier", "Удалить теги объекта": "Delete object tagging", +"Удалить внешний файл": "Delete external file", "Получает метку по ID": "Gets the tag by ID", "СкопироватьФайл (хук": "MakeFileCopy (wh", "ПолучитьСписокТестов": "GetTestList", @@ -4333,8 +4333,8 @@ "ТелеграмСозданиеТемы": "TelegramCreateTopic", "ID события календаря": "Calednar event ID", "Проверка_БитриксПоля": "Check_BitrixFields", +"СтруктураБазовойЦены": "BasePriceStructure", "НормализованныеФайлы": "NormalizedFiles", -"ОткрытьЗакрытьДиалог": "OpenCloseDialog", "СоздатьСтраницуВБазу": "CreatePageInDatabase", "Вайбер_ОтправитьФайл": "Viber_SendFile", "СделатьФайлПубличным": "MakeFilePublic", @@ -4349,11 +4349,11 @@ "Хеширование.Добавить": "Hashing.Append", "ОтправитьГифку (Путь": "SendGif (Path", "идентификатор сделки": "Deal identifier", -"БитриксФайлСообщение": "BitrixFileMessage", -"ВернутьДочерниеБлоки": "ReturnChildBlocks", -"Структурапараметров7": "ParameterStructure7", -"Добавить комментарий": "Create comment", -"СтруктураПараметров4": "ParameterStructure4", +"Получить теги бакета": "Get bucket tagging", +"ИнформацияОПрогрессе": "ProgressInformation", +"ЗавершитьЗадачу (хук": "CompleteTask (wh", +"ОчиститьТаблицу (TLS": "ClearTable (TLS", +"ОтправитьФайл (канал": "SendFile (channel", "Офис группы компаний": "Group office", "СтруктураПараметров1": "ParameterStructure1", "Новый заголовок базы": "New database title", @@ -4361,31 +4361,33 @@ "ПолучитьПодборкиПоИД": "GetSelectionsByID", "Тип (язык) квитанции": "Receipt type (language)", "ПолучитьОбъект (файл": "GetObject (file", -"СтруктураНапоминаний": "RemindersStructure", "Свойства базы данных": "Database properties", "ID элемента чеклиста": "Checklist element ID", "HTTP_ПолучениеОтвета": "HTTP_ResponseReceiving", "ОтправитьМедиагруппу": "SendMediaGroup", "Наименование альбома": "Album name", "УдалитьСтадиюКанбана": "DeleteKanbanStage", +"СтруктураПараметров4": "ParameterStructure4", +"СтруктураНапоминаний": "RemindersStructure", "Это коннектор !NOCLI": "Is connector !NOCLI", -"ЗавершитьУчетВремени": "StopTimekeeping", -"Размер).Равно(Истина": "Size).Equal(True", -"ЗагрузитьБольшойФайл": "UploadLargeFile", -"ОтправитьМеидагруппу": "SendMediaGroup", -"СтруктураНапоминания": "ReminderStructure", -"идентификатор автора": "author identifier", -"Получить теги бакета": "Get bucket tagging", +"Создать пользователя": "Create user", +"ПолучениеУведомлений": "NotificationsReceiving", +"Получить уведомление": "Get notification", +"Скопируйте **Токен**": "Copy the **Token**", "и OpenSSL версии 3.x": "and OpenSSL version 3.x", "ФорсироватьРезультат": "ForceResult", -"Скопируйте **Токен**": "Copy the **Token**", -"Получить уведомление": "Get notification", -"ПолучениеУведомлений": "NotificationsReceiving", -"Создать пользователя": "Create user", "OLLM_РаботаСМоделями": "OLLM_ModelsManagement", -"ОтправитьФайл (канал": "SendFile (channel", +"идентификатор автора": "author identifier", +"СтруктураНапоминания": "ReminderStructure", +"ОтправитьМеидагруппу": "SendMediaGroup", +"ЗагрузитьБольшойФайл": "UploadLargeFile", +"Размер).Равно(Истина": "Size).Equal(True", +"Создать/Удалить пост": "Create/Delete post", +"ЗавершитьУчетВремени": "StopTimekeeping", +"ВернутьДочерниеБлоки": "ReturnChildBlocks", "РаботаСКомментариями": "CommentManagement", -"ВозвращаемоеЗначение": "ReturnValue", +"Структурапараметров7": "ParameterStructure7", +"Добавить комментарий": "Create comment", "СделатьФайлПриватным": "MakeFilePrivate", "ПереносСтрокJSON.Нет": "JSONLineBreak.None", "УправлениеЗвукомЧата": "ChatNotificationsSwitch", @@ -4399,10 +4401,9 @@ "Установка заголовков": "Headers setting", "частное событие: Y,N": "private event: Y,N", "Проверка_ТелеграмБан": "Check_TelegramBan", +"Начало синхронизации": "Start synchronization", "Общий вес (в граммах": "Total weight (grams", "ЗагрузитьФайлЧастями": "UploadFileInParts", -"Начало синхронизации": "Start synchronization", -"идентификатор задачи": "task identifier", "VK_ОткрытьОбсуждение": "VK_OpenDiscussion", "Тестовое сообщение 1": "TestMessage1", "СоответствиеСимволов": "CharacterMapping", @@ -4416,12 +4417,11 @@ "СоответствиеВарианта": "OptionMap", "Работа с календарями": "Calendars management", "ID страницы родителя": "Parent page ID", -"ЗавершитьЗадачу (хук": "CompleteTask (wh", -"Создать/Удалить пост": "Create/Delete post", -"ФИО контактного лица": "Full name of contact person", -"Получить поле (email": "Get field (email", -"Telegram_СкачатьФайл": "Telegram_DownloadFile", -"СменитьВладельцаЧата": "ChangeChatOwner", +"ВозвращаемоеЗначение": "ReturnValue", +"идентификатор задачи": "task identifier", +"Код состояния ответа": "Response status code", +"ПолучитьТелоКакПоток": "GetBodyAsStream", +"ПодчиненнаяСтруктура": "SubordinateStructure", "УправлениеОперациями": "ActionsManagement", "предполагаемая сумма": "expected amount", "ОтправитьАудио (Путь": "SendAudio (Path", @@ -4434,8 +4434,8 @@ "ПолучитьНастройкиTls": "GetTlsSettings", "ПозиционныеПараметры": "PositionParams", "Дополнительный текст": "Additional text", +"Изменение публикации": "PublicationChange", "ПрочестьРезультатCLI": "ReadCLIResponse", -"Структурапараметров3": "ParameterStructure3", "ВКТ_УправлениеЧатами": "VKT_ChatManagement", "Б24_РаботаСоСделками": "B24_DealsManagement", "РазделятьМассивыВURL": "SplitArraysInURL", @@ -4450,43 +4450,45 @@ "ПреобразоватьТелефон": "ConvertPhone", "ПолучитьДанныеОСайте": "GetSiteData", "ТипВнешнейКомпоненты": "AddInType", -"СформироватьШтрихкод": "CreateBarcode", -"Изменение публикации": "PublicationChange", -"Google Calendar (ОПИ": "Google Calendar (OpenIntegrations", -"РазмерНесжатыхДанных": "UncompressedDataSize", -"СоздатьИсторию (путь": "CreateStory (path", -"Удаляет сделку по ID": "Deletes deal by ID", -"СформироватьМедиаURL": "FormMediaURL", -"НастройкиИИнформация": "SettingsAndInformation", +"СменитьВладельцаЧата": "ChangeChatOwner", +"Структурапараметров3": "ParameterStructure3", +"ДропбоксПространство": "DropboxSpace", +"Делает репост записи": "Reposts the record", +"Получить поле (email": "Get field (email", +"ПолучениеОбщихДанных": "GeneralDataRetrieval", +"РаботаСУведомлениями": "NotificationsManagement", +"Имя бакета приемника": "Destination bucket name", +"ЗащищенноеСоединение": "SecureConnection", +"Dropbox_СоздатьПапку": "Dropbox_CreateFolder", "Проверка_НоушнОбъект": "Check_NotionObject", "Идентификатор канала": "Channel ID", -"ВременныйФайлБольшой": "BigTempFile", -"Dropbox_СоздатьПапку": "Dropbox_CreateFolder", -"ЗащищенноеСоединение": "SecureConnection", -"Имя бакета приемника": "Destination bucket name", -"РаботаСУведомлениями": "NotificationsManagement", -"ПолучениеОбщихДанных": "GeneralDataRetrieval", "ПолучитьПолныйСостав": "GetFullComposition", -"Делает репост записи": "Reposts the record", -"УстановитьИмяТаблицы": "SetTableName", +"НастройкиИИнформация": "SettingsAndInformation", +"СформироватьМедиаURL": "FormMediaURL", +"Удаляет сделку по ID": "Deletes deal by ID", +"СоздатьИсторию (путь": "CreateStory (path", +"РазмерНесжатыхДанных": "UncompressedDataSize", +"Изменить комментарий": "Modify comment", +"ВременныйФайлБольшой": "BigTempFile", "ПолучитьИмяФайлаТела": "GetBodyFileName", +"УстановитьИмяТаблицы": "SetTableName", "ПолучитьПользователя": "GetUser", "ЦветнойВыводРазрешен": "ColoredOutputAvailable", "СтруктураЦеныЗакупки": "PurchasePriceStructure", "ЛокальныеПодкаталоги": "LocalSubfolders", -"ДропбоксПространство": "DropboxSpace", "Неизвестная команда:": "Unknown command:", "Новый заголовок чата": "New chat title", "КодировкаТелаЗапроса": "EncodeRequestBody", "ВК_ЛайкРепостКоммент": "VKAPI_LikeRepostComment", "СтруктураПараметров7": "ParameterStructure7", "ПолучитьПолеТелефона": "GetPhoneField", +"Google Calendar (ОПИ": "Google Calendar (OpenIntegrations", "УдалитьТаблицу (тест": "DeleteTable (test", "ОтправитьВнешнийФайл": "SendExternalFile", -"ПодчиненнаяСтруктура": "SubordinateStructure", "Идентификатор товара": "Product identifier", -"Данные описание поля": "Field description data", +"СформироватьШтрихкод": "CreateBarcode", "ПолучитьСвязанныеSKU": "GetRelatedSKUs", +"Неподдерживаемый тип": "Invalid type", "Комментарий к заказу": "Order comment", "Получить комментарий": "Get comment", "Изменить тему форума": "Edit forum thread", @@ -4500,9 +4502,8 @@ "СтруктураАвторизации": "AuthStructure", "Очищает таблицу базы": "Clears the database table", "Восстановить каталог": "Restore folder", +"УстановитьФайлОтвета": "SetResponseFile", "СоответствиеЗначений": "ValueMapping", -"Код состояния ответа": "Response status code", -"ПолучитьТелоКакПоток": "GetBodyAsStream", "СтруктураРуководства": "ManualStructure", "VK_СоздатьОбсуждение": "VK_CreateDiscussion", "Путь или ID каталога": "Path or ID of the directory", @@ -4516,13 +4517,12 @@ "СоздатьТоварПодборку": "CreateProductSelection", "ПолучитьПолеВложения": "GetAttachmentField", "УдалитьПодразделение": "DeleteDepartment", -"показатель информера": "informer index", -"Неподдерживаемый тип": "Invalid type", -"ОтладочнаяИнформация": "DebugInfo", -"УстановитьФайлОтвета": "SetResponseFile", "ДобавитьСвойстваБазы": "AddDatabaseProperties", -"AWS_РаботаСОбъектами": "AWS_ObjectsManagement", +"ОтладочнаяИнформация": "DebugInfo", +"Данные описание поля": "Field description data", +"показатель информера": "informer index", "Будущая сделка в RUB": "Future deal in RUB", +"ПолучитьНовости (хук": "GetPosts (wh", "Описание нового поля": "Description of the new field", "Использовать asserts": "Use asserts", "ЗагрузитьУдалитьФайл": "UploadDeleteFile", @@ -4530,66 +4530,63 @@ "ВКИНформацияОТоварах": "VKProductData", "ДобавитьКлючЗначение": "AddKeyValue", "ID родительской базы": "Parent database ID", -"Выполнить запрос SQL": "Execute SQL query", "ПодключитьРасширение": "ConnectExtension", "СформироватьТекстSQL": "FormSQLText", "ОтправитьВидео (Путь": "SendVideo (Path", "ПолучитьСписокФайлов": "GetFilesList", "ID копируемого листа": "CopiedSheetID", -"ДобавитьПараметрФлаг": "AddFlagParam", -"ПолучитьНовости (хук": "GetPosts (wh", +"AWS_РаботаСОбъектами": "AWS_ObjectsManagement", +"Выполнить запрос SQL": "Execute SQL query", "Проверка_ВКСообщение": "Check_VKMessage", -"ИзменитьСвойстваБазы": "EditDatabaseProperties", -"ИзменитьКартинкуЧата": "ChangeChatPicture", -"СоздатьПапку (корень": "CreateFolder (root", -"Восстановить счетчик": "Restore counter", -"Написать комментарий": "Write a comment", -"Спец. символы в пути": "Special characters at path", +"ДобавитьПараметрФлаг": "AddFlagParam", +"ДобавитьОписаниеБазы": "AddDatabaseDescription", +"МассивДвоичныхДанных": "BinaryDataArray", +"СтруктураПараметров5": "ParameterStructure5", +"СтруктураПараметров3": "ParameterStructure3", "СтруктураСертификата": "CertStructure", "ПолучитьБлокКартинки": "GetPictureBlock", -"СтруктураПараметров3": "ParameterStructure3", -"СтруктураПараметров5": "ParameterStructure5", -"МассивДвоичныхДанных": "BinaryDataArray", -"ДобавитьОписаниеБазы": "AddDatabaseDescription", -"Изменить комментарий": "Modify comment", -"ЗапросИнициализирован": "RequestInitialized", -"СоздатьОбновитьТовары": "CreateUpdateProducts", -"Получает задачу по ID": "Get task by ID", -"ПреобразованныеДанные": "ConvertedData", -"СоздатьТвитСКартинкой": "CreateTweetWithImage", -"СоздатьТвитВидео (ИВФ": "CreateVideoTweet (TFN", -"ЗаполнитьМассивЛистов": "FillSheetArray", -"URL адрес для запроса": "URL address for request", -"СоответствиеЗаголовка": "HeaderMapping", -"ПолучитьОбъектЧастями": "GetObjectInChunks", +"Telegram_СкачатьФайл": "Telegram_DownloadFile", +"Написать комментарий": "Write a comment", +"Восстановить счетчик": "Restore counter", +"СоздатьПапку (корень": "CreateFolder (root", +"ИзменитьКартинкуЧата": "ChangeChatPicture", +"ИзменитьСвойстваБазы": "EditDatabaseProperties", +"Спец. символы в пути": "Special characters at path", "Содержит wifi или gsm": "Contains wifi or gsm", -"ЗагрузитьЧастьОбъекта": "UploadObjectPart", -"Проверка_ДропБоксТеги": "Check_DropboxTags", "СоответствиеКатегорий": "CategoryMap", +"Проверка_ДропБоксТеги": "Check_DropboxTags", +"ЗагрузитьЧастьОбъекта": "UploadObjectPart", +"ПолучитьОбъектЧастями": "GetObjectInChunks", +"Получает задачу по ID": "Get task by ID", +"URL адрес для запроса": "URL address for request", +"ЗаполнитьМассивЛистов": "FillSheetArray", +"СоздатьТвитВидео (ИВФ": "CreateVideoTweet (TFN", +"СоздатьТвитСКартинкой": "CreateTweetWithImage", +"ПреобразованныеДанные": "ConvertedData", "Географическая широта": "Geographic latitude", +"СоответствиеЗаголовка": "HeaderMapping", "Отключить звук задачи": "Mute task", +"СформироватьКвитанцию": "CreateReceipt", +"УстановитьТелоЗапроса": "SetRequestBody", +"Проверка_БитриксЧисло": "Check_BitrixNumber", +"СоздатьОбновитьТовары": "CreateUpdateProducts", "ВК_ОтправитьСообщение": "VKAPI_SendMessage", "Получить пользователя": "Get user", "Создает новое событие": "Creates a new event", "Получить внешний файл": "Get external file", +"Удалить подразделение": "Delete department", "Получает сделку по ID": "Gets deal by ID", -"Удаляет событие по ID": "Deletes an event by ID", -"Проверка_БитриксЧисло": "Check_BitrixNumber", "SKU уцененных товаров": "SKU of discounted products", +"ДобавитьContentLength": "AddContentLength", "Дополнительный тест 3": "Additional test 3", "Строка,ДвоичныеДанные": "String, BinaryData", "РазархивироватьТовары": "UnarchiveProducts", "ПолучитьТаблицуТестов": "GetTestTable", -"УстановитьТелоЗапроса": "SetRequestBody", -"Удалить подразделение": "Delete department", +"Удаляет событие по ID": "Deletes an event by ID", +"ЗапросИнициализирован": "RequestInitialized", +"идентификатор статуса": "status identifier", "ОтправитьКартинку (ДД": "SendPicture (DD", -"Token для авторизации": "Token for authorization", -"УдалитьВыбранныеФайлы": "DeleteSelectedFiles", -"СтруктураПользователя": "UserStructure", -"ПолучитьТелоКакСтроку": "GetBodyAsString", -"ОтправитьФайл (цитата": "SendFile (quote", "ИзменитьСтадиюКанбана": "UpdateKanbansStage", -"ОтправитьДокумент (ДД": "SendDocument (DD", "ВК_ПолучитьСтатистику": "VKAPI_GetStatistics", "Проверка_Соответствие": "Check_Map", "ПроверитьBlob (ошибка": "CheckBlob (error", @@ -4601,12 +4598,11 @@ "Удаляет лист из книги": "Deletes a sheet from the spreadsheet", "СформироватьURLБакета": "FormBucketURL", "Проверка_ЯДискКаталог": "Check_YaDiskFolder", +"ПолучитьТелоКакСтроку": "GetBodyAsString", "Данные файла картинки": "Picture data", -"ВКТ_ОтправкаСообщений": "VKT_MessagesSending", +"ПолучитьОбновитьТокен": "GetUpdateToken", "ЗаписатьФайлыРелэйтед": "WriteRelatedFiles", -"Дополнительный тест 2": "Additional test 2", "Dropbox_УдалитьОбъект": "Dropbox_DeleteObject", -"идентификатор статуса": "status identifier", "Дополнительный тест 1": "Additional test 1", "ОбработатьКонецЗаписи": "ProcessRecordsEnd", "Стандартные реквизиты": "Common fields", @@ -4617,46 +4613,48 @@ "СоздатьСвойствоТовара": "CreateProductProperty", "ID поля для изменения": "Field ID for updating", "МассивЛишнихЭлементов": "UncorrectElements", -"ДобавитьContentLength": "AddContentLength", -"СформироватьКвитанцию": "CreateReceipt", -"Добавить видео товара": "Add product video", -"Тестовая таблица (изм": "Test table (changed", -"сслыка на руководство": "URL to manual", -"Dropbox_ПолучитьТокен": "Dropbox_GetToken", -"Площадь Победы, Минск": "Victory Square, Minsk", -"Идентификатор клиента": "Client identifier", -"ЗагрузитьМедиаЧастями": "UploadMediaInParts", -"СтруктураНастроекКода": "CodeSettingsStructure", -"ДобавитьТестовыйНабор": "AddTestSet", -"Сформировать штрихкод": "Create barcode", -"Проверка_ВКОбсуждение": "Check_VKDiscussion", -"СуществующийУдаленный": "ExistingRemote", -"ID целевого сообщения": "Target message ID", -"Установить тип данных": "Set data type", -"ВыполнитьЗапросСТелом": "ExecuteRequestWithBody", -"Заголовок приглашения": "Invitation title", -"Наименование кампании": "Campaign name", -"ПолучитьЧеклистЗадачи": "GetTasksChecklist", -"СоздатьМодель (запрос": "CreateModel (request", -"ДобавитьДанныеRelated": "AddDataAsRelated", -"количество повторений": "number of repetitions", +"ВКТ_ОтправкаСообщений": "VKT_MessagesSending", +"УдалитьВыбранныеФайлы": "DeleteSelectedFiles", +"Token для авторизации": "Token for authorization", +"Дополнительный тест 2": "Additional test 2", +"СтруктураПользователя": "UserStructure", "УстановитьТегиОбъекта": "PutObjectTagging", +"Получить историю чата": "Get chat history", +"Заголовок приглашения": "Invitation title", +"ВыполнитьЗапросСТелом": "ExecuteRequestWithBody", +"Установить тип данных": "Set data type", +"СуществующийУдаленный": "ExistingRemote", +"Проверка_ВКОбсуждение": "Check_VKDiscussion", +"ПолучитьЧеклистЗадачи": "GetTasksChecklist", +"Сформировать штрихкод": "Create barcode", +"СтруктураНастроекКода": "CodeSettingsStructure", +"ЗагрузитьМедиаЧастями": "UploadMediaInParts", +"Идентификатор клиента": "Client identifier", +"Площадь Победы, Минск": "Victory Square, Minsk", +"ПолучитьСтруктуруЛида": "GetLeadStructure", +"сслыка на руководство": "URL to manual", +"ДобавитьТестовыйНабор": "AddTestSet", +"СоздатьМодель (запрос": "CreateModel (request", +"ID целевого сообщения": "Target message ID", +"АТУдалениеКомментария": "ATCommentDeleting", +"Создать/Изменить базу": "Create/Edit database", +"количество повторений": "number of repetitions", +"ОтправитьФайл (цитата": "SendFile (quote", "Учет рабочего времени": "Timekeeping", "Отправляет файл в чат": "Sends the file to the chat", "ПодключениеРасширения": "ExtensionConnection", -"Создать/Изменить базу": "Create/Edit database", -"Проверка_ДропБоксФайл": "Check_DropboxFile", -"ID Файла для отправки": "File ID to send", +"Наименование кампании": "Campaign name", "НеобходимаяДлина Цикл": "RequiredLength Do", +"ID Файла для отправки": "File ID to send", "Получить чеки на дату": "Get cashbox checks by date", "Дата ожидания курьера": "Courier waiting date", "ДобавитьЗаголовокБазы": "AddDatabaseHeader", -"АТУдалениеКомментария": "ATCommentDeleting", +"ДобавитьДанныеRelated": "AddDataAsRelated", "УдалитьСвойствоТовара": "DeleteProductProperty", -"ПолучитьСтруктуруЛида": "GetLeadStructure", +"Проверка_ДропБоксФайл": "Check_DropboxFile", +"Тестовая таблица (изм": "Test table (changed", +"Dropbox_ПолучитьТокен": "Dropbox_GetToken", "Написать в обсуждение": "Write in discussion", -"ПолучитьСписокМоделей": "GetModelList", -"Получить историю чата": "Get chat history", "ПолучитьСтадииКанбана": "GetKanbanStages", "Получить теги объекта": "Get object tagging", "Разлогинивает инстанс": "Unlogging the instance", @@ -4669,30 +4667,29 @@ "Проверка_ТвиттерТекст": "Check_TwitterText", "СформироватьТекстDrop": "FormTextDrop", "Вернуть запрос !NOCLI": "Return request !NOCLI", -"ОткрытьСоединение (im": "CreateConnection (im", "Добавить внешний файл": "Add external file", "VK_ПолучитьСтатистику": "VK_GetStatistics", "ПолучитьСтруктуруЧата": "GetChatStructure", "НачалоФормированияXML": "StartFormingXML", +"Проверка_ВКОбъявление": "Check_VKAd", +"УдалитьТегиБакета (DB": "DeleteBucketTagging (DB", "ID рекламной кампании": "Advertising campaign ID", "Dropbox_ОбновитьТокен": "Dropbox_UpdateToken", "Путь сохранения файла": "File save path", "ПолучитьСписокЗаказов": "GetOrderList", "Главное подразделение": "Main department", +"ОткрытьСоединение (im": "CreateConnection (im", "ПолучитьСписокТоваров": "GetProductList", -"УдалитьТегиБакета (DB": "DeleteBucketTagging (DB", -"Заголовок базы данных": "Database title", +"ПолучитьСписокМоделей": "GetModelList", "CHAT (по приглашениям": "CHAT (private", "Изменить пользователя": "Update user", "ИнтерактивныеДействия": "InteractiveActions", "Отправить файл по URL": "Send file by URL", -"Проверка_ВКОбъявление": "Check_VKAd", +"Добавить видео товара": "Add product video", +"Заголовок базы данных": "Database title", "ПолучитьПредставления": "GetEmbeddings", -"ПолучитьОбновитьТокен": "GetUpdateToken", +"ОтправитьДокумент (ДД": "SendDocument (DD", "Перезапустить инстанс": "Reboot instance", -"id цели для изменения": "if of goal for updating", -"Твиттер_ОбновитьТокен": "Twitter_UpdateToken", -"ПолучитьЗначенияЯчеек": "GetCellValues", "Удаляет счетчик по ID": "Deletes a counter by ID", "Изменяет имя каталога": "Change folder name", "ОбработатьЗапрос (TLS": "ProcessRequest (TLS", @@ -4706,10 +4703,9 @@ "Ссылка получения кода": "Code retrieval link", "Получить список тегов": "Get list of tags", "В работе : checkbox": "In progress : checkbox", +"Сообщение с картинкой": "Message with picture", +"Твиттер_ОбновитьТокен": "Twitter_UpdateToken", "ТелоОтветаИзначальное": "ResponseBodyInitial", -"Проверка_БитриксВремя": "Check_BitrixTime", -"ЗаписатьЗначениеВФайл": "WriteValueToFile", -"Объект HTTPСоединение": "HTTPConnection object", "Получить список задач": "Get tasks list", "двоичные данные файла": "binary data of the file", "Кнопка для клавиатуры": "Button for keyboard", @@ -4723,25 +4719,27 @@ "ИзменитьЦветЧата (хук": "ChangeChatColor (wh", "ПолучитьОписаниеФайла": "GetFileDescription", "Переименовать каталог": "Rename folder", -"ВременноеСоответствие": "TempMap", -"Сообщение с картинкой": "Message with picture", +"Проверка_БитриксВремя": "Check_BitrixTime", +"ЗаписатьЗначениеВФайл": "WriteValueToFile", +"Объект HTTPСоединение": "HTTPConnection object", "ПоместитьФайлВКорзину": "MarkFileAsDeleted", -"GAPI_ОчередьСообщений": "GAPI_MessageQueue", -"Получить поле (флажок": "Get field (checkbox", -"Получение уведомлений": "Notifications receiving", -"заголовок руководства": "manual title", -"задача в отчете (Y|N)": "task in the report (Y|N)", -"ID пользователя Viber": "Viber User ID", -"ПолучитьПодразделения": "GetDepartments", -"ИспользоватьКодировку": "UseEncoding", -"СоответствиеАртикулов": "ArticlesMap", +"Слак_ПолучитьСписокВФ": "Slack_GetExternalFileList", +"ПолучитьЗначенияЯчеек": "GetCellValues", "ID магазина (кампании": "Market ID (campaignsId", -"Получить таблицы базы": "Get base tables", -"Комментарий к новости": "Comment for post", "ЗаписатьПараметрВФайл": "WriteParameterToFile", +"Комментарий к новости": "Comment for post", +"Получить таблицы базы": "Get base tables", +"СоответствиеАртикулов": "ArticlesMap", +"Получить поле (флажок": "Get field (checkbox", +"ПолучитьПодразделения": "GetDepartments", +"ID пользователя Viber": "Viber User ID", +"задача в отчете (Y|N)": "task in the report (Y|N)", +"заголовок руководства": "manual title", +"Получение уведомлений": "Notifications receiving", "ID чата для архивации": "Chat ID for archiving", +"ИспользоватьКодировку": "UseEncoding", "УправлениеТемойФорума": "ForumTopicManagement", -"ID асинхронной работы": "AsynchronousJobID", +"ПреобразоватьВложения": "ConvertAttachments", "ЗаписатьОбъявлениеXML": "WriteXMLDeclaration", "ЗаписатьКонецЭлемента": "WriteEndElement", "Использование методов": "Using methods", @@ -4749,18 +4747,18 @@ "Новое название канала": "New channel name", "Установить URL !NOCLI": "Set URL !NOCLI", "Удаляет заказ по UUID": "Deletes order by UUID", -"Слак_ПолучитьСписокВФ": "Slack_GetExternalFileList", +"МассивВариантовОпроса": "PollOptionsArray", "Удаляет файл на Slack": "Deletes a file on Slack", "СоздатьТоварыПоOzonID": "CreateProductByOzonID", "Массив описаний полей": "Array of field descriptions", "Новый текст заголовка": "New title", "ПолучитьСписокСобытий": "GetEventList", +"GAPI_ОчередьСообщений": "GAPI_MessageQueue", "Ноушн_СоздатьСтраницу": "Notion_CreatePage", -"ПреобразоватьВложения": "ConvertAttachments", -"МассивВариантовОпроса": "PollOptionsArray", -"БитриксМассивОбъектов": "BitrixObjectsArray", -"АрхивироватьТовары (2": "ArchiveProducts (2", -"ПолучитьСписокСкладов": "GetWarehousesList", +"ID асинхронной работы": "AsynchronousJobID", +"цвет текста календаря": "calendar text color", +"ВременноеСоответствие": "TempMap", +"Получить список меток": "Get tags list", "Проверка_ВКСтатистика": "Check_VKStatistic", "СтрГлобальныйПараметр": "StrGlobalParam", "Создать/Изменить поле": "Create/Edit field", @@ -4774,131 +4772,131 @@ "ID метки для удаления": "ID of the tag to be deleted", "GAPI_ЖурналыСообщений": "GAPI_MessageLogs", "ВернутьОтветКакСтроку": "ReturnResponseAsString", -"Создать копию объекта": "Create object copy", "ЭтоАвторизацияТокеном": "IsTokenAuth", "VK_ПолучитьТоварыПоИД": "VK_GetProductsByID", +"ПолучитьСписокБакетов": "ListBuckets", +"ПолучитьСписокКаналов": "GetChannelList", +"ПолучитьСписокСвойств": "GetPropertyList", +"АрхивироватьТовары (2": "ArchiveProducts (2", "ПолучитьИсториюЗадачи": "GetTaskHistory", "ОтправлятьУведомления": "SendNotifications", "Dropbox_ЗагрузитьФайл": "Dropbox_UploadFile", "ЭтоГлобальныйПараметр": "IsGlobalParam", +"ПолучитьСписокСкладов": "GetWarehousesList", "Другой заголовок чата": "Another title", -"Создать сервер !NOCLI": "Create server !NOCLI", -"ПолучитьСписокСвойств": "GetPropertyList", "Ошибка удаления файла": "File deletion error", +"ОбработатьПодключение": "ProcessConnection", "СоздатьУдалитьСобытие": "CreateDeleteEvent", "г.Бердск ул.Ленина 16": "Berdsk Lenina street 16", "ПолучитьПолеСтроковое": "GetStringField", "Установите приложение": "Install the application", -"ПолучитьСписокКаналов": "GetChannelList", -"ПолучитьСписокБакетов": "ListBuckets", +"Создать сервер !NOCLI": "Create server !NOCLI", "УстановитьПравилаЧата": "SetChatRules", -"ОбработатьПодключение": "ProcessConnection", -"Идентификатор объекта": "Object identifier", -"Получить цены товаров": "Get products prices", -"Получить список меток": "Get tags list", -"ТекстПервогоСообщения": "FirstMessageText", -"Перезапускает инстанс": "Restarts the instance", -"ПолучитьПользователей": "GetUsers", -"Управление счетчиками": "Counters management", -"Загрузить файл по URL": "Upload file by URL", -"МассивОписанийКолонок": "ColoumnsDescriptionArray", -"Google Workspace (ОПИ": "Google Workspace (OpenIntegrations", -"Орган выдачи паспорта": "Passport issuing authority", -"Новое имя файла 2.jpg": "New file name 2.jpg", +"Создать копию объекта": "Create object copy", "Идентификатор таблицы": "Table identifier", -"Получить товары по ID": "Get products by ID", -"Получить данные файла": "Get file data", -"ID чата создания темы": "Thread creation chat ID", "Время окончания обеда": "Lunch finish time", -"мПозиционныеПараметры": "mPositionParams", +"ID чата создания темы": "Thread creation chat ID", +"Получить данные файла": "Get file data", +"Получить товары по ID": "Get products by ID", +"Новое имя файла 2.jpg": "New file name 2.jpg", +"Орган выдачи паспорта": "Passport issuing authority", "ID поля для получения": "Field ID for retrieval", +"Google Workspace (ОПИ": "Google Workspace (OpenIntegrations", +"Загрузить файл по URL": "Upload file by URL", +"Управление счетчиками": "Counters management", +"ПолучитьПользователей": "GetUsers", +"Идентификатор объекта": "Object identifier", +"Перезапускает инстанс": "Restarts the instance", +"ТекстПервогоСообщения": "FirstMessageText", +"МассивОписанийКолонок": "ColoumnsDescriptionArray", +"Значение для проверки": "Value to check", +"мПозиционныеПараметры": "mPositionParams", +"МассивВариантовВыбора": "ChoiceOptionArray", "СортироватьПоЗначению": "SortByValue", "ДвоичныеДанные,Строка": "BinaryData,String", "СтруктураНаименования": "NameStructure", "ИзменитьЗаголовокЧата": "ChangeChatTitle", -"МассивВариантовВыбора": "ChoiceOptionArray", +"ОтправитьОпрос (канал": "SendPoll (channel", "Обновить цены товаров": "Update products prices", "ПолучитьОбъектЦеликом": "GetFullObject", "ВыполнитьСборкуМусора": "RunGarbageCollection", "ул. Лермонтова, д. 20": "Lermontov st., b. 20", "ЗагрузитьФайлВКаталог": "UploadFileToFolder", "ПолучениеДанныхТестов": "TestDataRetrieval", -"цвет текста календаря": "calendar text color", -"ОтправитьОпрос (канал": "SendPoll (channel", -"Значение для проверки": "Value to check", -"Разделитель строк тела": "Body line separator", -"Массив файлов картинок": "Image files array", +"id цели для изменения": "if of goal for updating", +"Получить цены товаров": "Get products prices", +"БитриксМассивОбъектов": "BitrixObjectsArray", "CommonModule.OPI_Тесты": "CommonModule.OPI_Tests", "Структура полей фильра": "Filter fields structure", -"Массив блоков вложений": "Array of attachments", -"ОтправитьЗапросБезТела": "SendRequestWithoutBody", "Получает список файлов": "Gets the list of files", -"ДропБокс_ЗагрузитьФайл": "DropboxAPI_UploadFile", +"Разделитель строк тела": "Body line separator", +"Массив блоков вложений": "Array of attachments", +"Массив файлов картинок": "Image files array", +"ОтправитьЗапросБезТела": "SendRequestWithoutBody", +"Фильтр по руководителю": "Filter by manager ID", +"ID рекламного кабинета": "Advertising account ID", "ДобавитьТоварВПодборку": "AddProductToCollection", "ID изменяемой страницы": "ID of the page being modified", "Отклоняет задачу по ID": "Disapprove task by ID", +"дата начала выполнения": "start date", "Получить подразделения": "Get departments", -"Bitrix24_ПринятьЗадачу": "Bitrix24_ApproveTask", -"OllamaИнформацияМодели": "OllamaModelInfo", -"ID рекламного кабинета": "Advertising account ID", +"ДропБокс_ЗагрузитьФайл": "DropboxAPI_UploadFile", "СоздатьТаблицу (запрос": "CreateTable (query", -"Комментарий к упаковке": "Package сommentary", -"OLLM_ОбработкаЗапросов": "OLLM_RequestsProcessing", "Secret для авторизации": "Secret for authorization", -"ЭтоСерверИлиОбработчик": "IsServerOrHandler", -"идентификатор компании": "company identifier", -"ИспользоватьСжатиеGzip": "UseGzipCompression", -"ТелоОтветаДляОбработки": "ResponseBodyProcessing", -"ID календаря приемника": "ID of the target calendar", -"Фильтр по руководителю": "Filter by manager ID", -"СтруктураЦеныДляСкидок": "PriceForDiscountsStructure", -"Отправить внешний файл": "Send external file", -"ОбработатьНачалоЗаписи": "ProcessRecordsStart", -"Цены и остатки товаров": "Prices and stocks", -"УдалитьБазуДанных (TLS": "DeleteDatabase (TLS", -"Консолидированный груз": "Consolidated cargo", "КопироватьКаталог (хук": "CopyFolder (wh", -"Изменить подразделение": "Update department", -"Описание : rich_text": "Description : rich_text", -"ИзменитьИмяГлавнойТемы": "ChangeMainTopicName", -"Установить теги бакета": "Put bucket tagging", -"значение для сравнения": "comparison value", -"ПреобразоватьЗаголовок": "ConvertHeader", -"СтандартныеЗависимости": "StandardDependencies", +"Консолидированный груз": "Consolidated cargo", +"УдалитьБазуДанных (TLS": "DeleteDatabase (TLS", +"Цены и остатки товаров": "Prices and stocks", +"ОбработатьНачалоЗаписи": "ProcessRecordsStart", +"Отправить внешний файл": "Send external file", +"Комментарий к упаковке": "Package сommentary", +"СтруктураЦеныДляСкидок": "PriceForDiscountsStructure", +"ID календаря приемника": "ID of the target calendar", +"ТелоОтветаДляОбработки": "ResponseBodyProcessing", +"ИспользоватьСжатиеGzip": "UseGzipCompression", +"идентификатор компании": "company identifier", +"ЭтоСерверИлиОбработчик": "IsServerOrHandler", +"Bitrix24_ПринятьЗадачу": "Bitrix24_ApproveTask", +"OLLM_ОбработкаЗапросов": "OLLM_RequestsProcessing", +"OllamaИнформацияМодели": "OllamaModelInfo", "Установить цель канала": "Set channel purpose", -"Получить запрос !NOCLI": "GetRequest !NOCLI", -"идентификатор контакта": "contact identifier", -"Сообщение из автотеста": "Message from autotest", -"Работа с уведомлениями": "Notifications management", -"ПолучитьХранилище (хук": "GetStorage (wh", -"отображать задачи: Y,N": "display tasks: Y,N", -"ЗагрузитьОбъектЦеликом": "UploadFullObject", -"Завершить учет времени": "Stop timekeeping", -"Обычный текстовый твит": "Regular text tweet", -"УправлениеБазамиДанных": "DatabaseManagement", -"Подробная документация": "Detailed documentation", +"Описание : rich_text": "Description : rich_text", "Проверка_ТелеграмВидео": "Check_TelegramVideo", +"Подробная документация": "Detailed documentation", +"УправлениеБазамиДанных": "DatabaseManagement", +"Обычный текстовый твит": "Regular text tweet", +"Завершить учет времени": "Stop timekeeping", +"ЗагрузитьОбъектЦеликом": "UploadFullObject", "Загружает файл на диск": "Uploads a file to the drive", +"отображать задачи: Y,N": "display tasks: Y,N", +"Работа с уведомлениями": "Notifications management", +"Сообщение из автотеста": "Message from autotest", +"идентификатор контакта": "contact identifier", +"Получить запрос !NOCLI": "GetRequest !NOCLI", +"СтандартныеЗависимости": "StandardDependencies", +"ЗаписатьJSONМультипарт": "WriteJSONMultipart", +"ПолучитьХранилище (хук": "GetStorage (wh", +"Изменить подразделение": "Update department", "ЗаполнитьДанныеПоСхеме": "FillDataBySchema", +"ПолучитьМассивПодборок": "GetSelectionArray", +"ИзменитьИмяГлавнойТемы": "ChangeMainTopicName", +"УстановитьОписаниеЧата": "SetChatDescription", "Работа с комментариями": "Comments management", "Значение Bearer токена": "Bearer token value", "ЗагрузитьФайл (в канал": "UploadFile (to channel", "ЗагрузитьОбъектЧастями": "UploadObjectInParts", +"Открыть/Закрыть диалог": "Open/Close dialog", "и почитать комментарии": "and read comments", -"ВК_СоздатьСсылкуТокена": "VKAPI_CreateTokenLink", -"УстановитьОписаниеЧата": "SetChatDescription", "Завершает задачу по ID": "Complete task by ID", +"значение для сравнения": "comparison value", "VK_НаписатьВОбсуждение": "VK_PostToDiscussion", "Путь к папке или файлу": "Path to folder or file", "ВыполнитьСинхронизацию": "MakeSynchronization", "ПолучитьТоварыМагазина": "GetCampaignProducts", -"ПолучитьМассивПодборок": "GetSelectionArray", -"Открыть/Закрыть диалог": "Open/Close dialog", -"дата начала выполнения": "start date", -"ЗаписатьJSONМультипарт": "WriteJSONMultipart", -"Получить представления": "Get embeddings", -"ID метки для изменения": "Tag ID to change", -"Возвращаемое значение:": "Returns:", +"ВК_СоздатьСсылкуТокена": "VKAPI_CreateTokenLink", +"Установить теги бакета": "Put bucket tagging", +"Создайте бота Telegram": "Create a Telegram bot", +"OllamaЗагрузкаВыгрузка": "OllamaLoadUnload", "ИзменитьСообщение (хук": "EditMessage (wh", "ПолучитьСписокРегионов": "GetRegionsList", "Проверка_БитриксЗадача": "Check_BitrixTask", @@ -4906,70 +4904,70 @@ "Получить блок картинки": "Get picture block", "ПолучитьЗаписи (ошибка": "GetRecords (error", "НаименованиеИзмененное": "EditedName", -"СтандартныеОсобенности": "DefaultFeatures", +"ПолучитьСписокХранилищ": "GetStoragesList", "Отображаемое имя файла": "Displayed file name", "id счетчика для отбора": "counter id for selection", "ЭтоИменованныйПараметр": "IsNamedParam", "Получить связанные SKU": "Get related SKUs", -"ОткрытьСоединение (TLS": "CreateConnection (TLS", "ТелеграмМестоположение": "TelegramLocation", "СоздатьБазуДанных (TLS": "CreateDatabase (TLS", -"ПолучитьЗаписи (отборы": "GetRecords (filters", +"ОткрытьСоединение (TLS": "CreateConnection (TLS", "ПромежуточныйРезультат": "InterimResult", -"Создайте бота Telegram": "Create a Telegram bot", +"ПолучитьТегиБакета (DB": "GetBucketTagging (DB", +"ПреобразоватьЗаголовок": "ConvertHeader", +"Сделать файл приватным": "Make file private", "Идентификаторы товаров": "Products identifier", "ПереименоватьХранилище": "RenameStorage", "Изменить свойства базы": "Edit database properties", "Получить данные !NOCLI": "Receive data !NOCLI", +"Возвращаемое значение:": "Returns:", "Создать текстовый твит": "Create text tweet", -"Сделать файл приватным": "Make file private", "СоответствиеШтрихкодов": "BarcodesMap", "ЗаменитьТекстСообщения": "ReplaceMessageText", -"ОтправитьДокумент (Имя": "SendDocument (name", +"ПолучитьЗаписи (отборы": "GetRecords (filters", "ПолучитьДвоичныеДанные": "GetBinaryData", "ПолучитьЗначениеДляCLI": "GetCLIFormedValue", "ПолучитьОписаниеТовара": "GetProductDescription", -"ПолучитьТегиБакета (DB": "GetBucketTagging (DB", -"ПолучитьСписокХранилищ": "GetStoragesList", +"ОтправитьДокумент (Имя": "SendDocument (name", +"СтандартныеОсобенности": "DefaultFeatures", +"РазбитьURL: Защищенное": "SplitURL: Secure", "Сообщение о завершении": "Completion message", -"пр. Ленинградский, д.4": "Ave. Leningradsky, 4", +"Проверка_БитриксСписок": "Check_BitrixList", "ПолучитьТоварыКабинета": "GetBusinessProducts", "СоздатьПодключение (im": "CreateConnection (im", "НачатьУчетВремени (хук": "StartTimekeeping (wh", "VK_СгруппироватьТовары": "VK_GroupProducts", "ОбластиДействияСтрокой": "ScopeAsString", +"пр. Ленинградский, д.4": "Ave. Leningradsky, 4", "Bitrix24_ОбновитьТокен": "Bitrix24_RefreshToken", -"Проверка_БитриксСписок": "Check_BitrixList", -"РаботаСФайламиИПапками": "FileAndFolderManagement", +"Принимает задачу по ID": "Approve task by ID", "ПолучитьСписокПодборок": "GetSelectionList", "Строка, ДвоичныеДанные": "String, BinaryData", "Массив изображений 360": "Array of 360 images", "название подразделения": "department name", "РаботаСЧеклистамиЗадач": "TasksChecklistsManagement", -"OllamaЗагрузкаВыгрузка": "OllamaLoadUnload", -"Принимает задачу по ID": "Approve task by ID", +"РаботаСФайламиИПапками": "FileAndFolderManagement", +"ID метки для изменения": "Tag ID to change", "Географическая долгота": "Geographic longitude", -"Фильтр по наименованию": "Filter by name", -"Дневной лимит в рублях": "Daily limit in rubles", +"Получить представления": "Get embeddings", +"ПутьУдаленногоОсновной": "PathOfRemotePrimary", "Соответствие Из Строка": "Map Of String", "СтруктураХаракетристик": "AttributesStructure", "ПолучитьСписокОбъектов": "ListObjects", "Получить таймслоты FBO": "Get FBO timeslots", "ПолеКоллекцииСуществет": "CollectionFieldExists", +"Дневной лимит в рублях": "Daily limit in rubles", "Адрес грузоотправителя": "Shippers address", -"ПутьУдаленногоОсновной": "PathOfRemotePrimary", -"Удаляет подборку по ID": "Deletes the selection by ID", +"Фильтр по наименованию": "Filter by name", "Создает TCP соединение": "Creates a TCP connection", "ID стадии для удаления": "ID of stage to dele", "ID календаря источника": "ID of the source calendar", "ID задачи для переноса": "ID of task to move", "цена цели по умолчанию": "goal default price", -"РазбитьURL: Защищенное": "SplitURL: Secure", +"Удаляет подборку по ID": "Deletes the selection by ID", "ЗагрузитьФайл (большой": "UploadFile (big", -"ID черновика (операции": "Draft (operation) ID", +"сообщением в этом чате": "of mesage in this chat", "Bitrix24_ПолучитьТокен": "Bitrix24_GetToken", -"ОтправитьОпрос (цитата": "SendPoll (quote", -"Тестовый товар (другой": "Test product (another", "Массив URL изображений": "Array of images URLs", "ШаблонЦветнойПодстроки": "ColoredSubstringPattern", "Установить тему канала": "Set channel topic", @@ -4986,40 +4984,41 @@ "Вайбер_ОтправитьСсылку": "Viber_SendLink", "ПроверитьЗагрузкуЧасти": "CheckPartUpload", "ДобавитьОписаниеДанных": "AddDataDescription", +"ПолучитьСписокОпераций": "GetActionsList", +"СформированноеОписание": "FormedDescription", "МассивКнопокКлавиатуры": "KeyboardButtonsArray", "УдалитьТоварыБезSKU (2": "DeleteProductsWithoutSKU (2", "ПолучитьШтрихкод (файл": "GetBarcode (file", "Проверка_ВККомментарий": "Check_VKComment", "Сделать файл публичным": "Make file public", +"Скачать файл сообщения": "Download message file", "ИзменитьКалендарь (хук": "UpdateCalendar (wh", -"СформированноеОписание": "FormedDescription", -"ПроверитьДоступКЗадаче": "CheckTaskAccesses", +"ДропбоксПубличнаяПапка": "DropboxPublicFolder", "ВыполнитьЗапросБезТела": "ExecuteRequestWithoutBody", "Структура полей задачи": "Task fields structure", "Тесты для YaxUnit (ОПИ": "Tests for YaxUnit (OpenIntegrations", "Bitrix24_СоздатьЗадачу": "Bitrix24_CreateTask", "ВозобновитьЗадачу (хук": "RenewTask (wh", -"ПолучитьСписокОпераций": "GetActionsList", -"Скачать файл сообщения": "Download message file", -"ДропбоксПубличнаяПапка": "DropboxPublicFolder", -"УдалитьЛишниеПоляБлока": "RemoveExtraBlockFields", -"Бакет источник объекта": "Source bucket name", -"Дата создания >= вчера": "Creation date >= yesterday", -"ПреобразоватьКодВТокен": "ConvertCodeToToken", -"Удалить стадию канбана": "ID of the stage to be deleted", -"СоответствиеПараметров": "ParameterMap", -"Получить список сделок": "Get deals list", -"возрастное ограничение": "age limit", -"ЗаписатьНачалоЭлемента": "WriteStartElement", -"Получить поле (телефон": "Get field (phone", +"ПроверитьДоступКЗадаче": "CheckTaskAccesses", +"ЗагрузитьВидеоНаСервер": "UploadVideoToServer", +"Тестовый товар (другой": "Test product (another", +"ЗагрузитьМодельВПамять": "LoadModelToMemory", "URL файла для отправки": "File URL", -"Новое имя главной темы": "New main thread name", -"МассивНеобходимыхПолей": "RequiredFieldsArray", -"ПереименоватьФайл (хук": "RenameFile (wh", "Загрузить/Удалить файл": "Upload/Delete file", +"ПереименоватьФайл (хук": "RenameFile (wh", +"МассивНеобходимыхПолей": "RequiredFieldsArray", +"Новое имя главной темы": "New main thread name", +"Получить поле (телефон": "Get field (phone", +"Дата создания >= вчера": "Creation date >= yesterday", +"возрастное ограничение": "age limit", +"Получить список сделок": "Get deals list", +"СоответствиеПараметров": "ParameterMap", +"Удалить стадию канбана": "ID of the stage to be deleted", +"ПреобразоватьКодВТокен": "ConvertCodeToToken", "СтруктураПовторяемости": "RepeatabilityStructure", +"ЗаписатьНачалоЭлемента": "WriteStartElement", "УдалитьТоварИзПодборки": "RemoveProductFromSelection", -"ИНН истинного продавца": "TIN of the true seller", +"Новое описание события": "New event description", "Проверка_БитриксСтрока": "Check_BitrixString", "Твиттер_ДанныеАккаунта": "TwitterAPI_AccountData", "ПолучитьИнформациюБота": "GetBotInformation", @@ -5027,55 +5026,54 @@ "ЗаписатьДвоичныеДанные": "WriteBinaryData", "ID каталога назначения": "ID of target folder", "VK_НаписатьКомментарий": "VK_WriteComment", -"ЗагрузитьМодельВПамять": "LoadModelToMemory", +"УдалитьЛишниеПоляБлока": "RemoveExtraBlockFields", "операции для изменения": "change actions", "Создает твит с опросом": "Creates a tweet with a poll", "ИзменитьСвойствоТовара": "EditProductProperty", "УстановитьИмяФайлаТела": "SetBodyFileName", "МинимальныйРазмерЧасти": "MinPartSize", "Получить настройки TLS": "Get TLS Settings", -"Новое описание события": "New event description", +"Бакет источник объекта": "Source bucket name", +"ИНН истинного продавца": "TIN of the true seller", +"Б24_РаботаСКалендарями": "B24_CalendarsManagement", "Dropbox_ПолучитьПревью": "Dropbox_GetPreview", -"ЗагрузитьВидеоНаСервер": "UploadVideoToServer", -"УстановитьДвоичноеТело": "SetBinaryBody", -"Все записи без отборов": "All records without filters", +"ОзонАПИ_РаботаСАкциями": "OzonAPI_PromotionsManagement", +"Массив Из Соответствие": "Array Of Map", "ИзменитьТекстСообщения": "EditMessageText", "Массив описаний блоков": "Array of block descriptions", "ПолучитьОписаниеЗаказа": "GetOrderDescription", "Получить список файлов": "Get list of files", "Другое описание задачи": "Another task description", +"УстановитьДвоичноеТело": "SetBinaryBody", "Отправить ответ !NOCLI": "SendResponse !NOCLI", -"Массив Из Соответствие": "Array Of Map", -"Сменить владельца чата": "Change chat owner", +"УстановитьРежимОтладки": "SetDebugMode", "Проверка_ТелеграмЧисло": "Check_TelegramNumber", "Начните диалог с ботом": "Start a dialog with the bot", "СформироватьКлавиатуру": "FormKeyboard", "Удалить товары без SKU": "Delete products without SKU", "Получает заказ по UUID": "Gets the order by UUID", +"Сменить владельца чата": "Change chat owner", "Б24_РаботаСПолямиЗадач": "B24_TasksFieldsManagement", -"УстановитьРежимОтладки": "SetDebugMode", "Массив Из Произвольный": "Array Of Arbitrary", -"Получить список офисов": "Get office list", -"Идентификатор каталога": "Folder identifier", +"HEX цвета новой стадии": "HEX of new stage color", +"Все записи без отборов": "All records without filters", "ТелеграмИнформацияБота": "TelegramBotInformation", "Пароль для подключения": "Password for connection", "Получает событие по ID": "Gets an event by ID", "Получить пользователей": "Get users", "ТелеграмУдалениеВебхук": "TelegramWebhookDeletion", +"Идентификатор каталога": "Folder identifier", "Загрузить/Удалить Файл": "Upload/Delete file", -"ДобавитьОбновитьТовары": "AddUpdateProducts", -"Ремонт и строительство": "Repair and building", +"Получить список офисов": "Get office list", "ПолучитьУдаляемыеФайлы": "GetDeletedFiles", "Разархивировать товары": "Unarchive products", "ОбработатьСекретыMySQL": "ProcessSecretsMySQL", "Сформировать квитанцию": "Create receipt", "Bitrix24_УдалитьЗадачу": "Bitrix24_DeleteTask", -"HEX цвета новой стадии": "HEX of new stage color", +"Ремонт и строительство": "Repair and building", "ПолучитьКодАвторизации": "GetAuthorizationCode", -"Структура полей сделки": "Deal fields structure", -"НоваяТаблицаПараметров": "NewParamsTable", -"Проверка_ТелеграмГифка": "Check_TelegramGif", -"ОзонАПИ_РаботаСАкциями": "OzonAPI_PromotionsManagement", +"ДобавитьОбновитьТовары": "AddUpdateProducts", +"Вернуть дочерние блоки": "Return child blocks", "Число, Массив Из Число": "Number, Array Of Number", "СоответствиеРасширений": "ExtensionMap", "Массив из Произвольный": "Array of Arbitrary", @@ -5084,53 +5082,55 @@ "Загружает файл в бакет": "Uploads the file to the bucket", "НачатьВыполнениеЗадачи": "StartTask", "ПолучитьСписокОбластей": "GetRegionList", -"Вернуть дочерние блоки": "Return child blocks", +"Структура полей сделки": "Deal fields structure", "ОтправитьСсылку (канал": "SendLink (channel", "GAPI_ОтправкаСообщений": "GAPI_MessageSending", "Проверка_ТелеграмАудио": "Check_TelegramAudio", "УстановитьПараметрыURL": "SetURLParams", -"СлакПользователиКанала": "SlackChannelUsers", "УстановитьТелоИзСтроки": "SetBodyFromString", "Массив из Строка,Число": "Array of String,Number", +"СлакПользователиКанала": "SlackChannelUsers", +"ЦветПоле.Позиция Тогда": "ColorField.Item Then", +"НоваяТаблицаПараметров": "NewParamsTable", +"Дата окончания периода": "End date of the period", "Соответствие из Строка": "Map of String", "Проверка_БитриксМассив": "Check_BitrixArray", -"СоздатьПодборкуТоваров": "CreateProductCollection", +"ОтправитьОпрос (цитата": "SendPoll (quote", "мПозицияВСпискеТокенов": "mTokenListPosition", "Получить токен по коду": "Get token by code", -"Создать/Удалить записи": "Create/Delete records", -"Дата окончания периода": "End date of the period", +"СоздатьПодборкуТоваров": "CreateProductCollection", "Проверка_БитриксИстина": "Check_BitrixTrue", +"Проверка_ТелеграмГифка": "Check_TelegramGif", "ДропБоксПубличнаяПапка": "DropboxPublicFolder", "Структура полей товара": "Product fields structure", -"сообщением в этом чате": "of mesage in this chat", +"ID черновика (операции": "Draft (operation) ID", "Массив участников чата": "Chat members array", -"ЦветПоле.Позиция Тогда": "ColorField.Item Then", -"Б24_РаботаСКалендарями": "B24_CalendarsManagement", +"Создать/Удалить записи": "Create/Delete records", +"Путь к объекту удаления": "Path to the object to delete", +"ДропБокс_СоздатьКаталог": "DropboxAPI_CreateFolder", "Проверка_ДвоичныеДанные": "Check_BinaryData", "Массив из Строка, Число": "Array of string, number", "ОбработатьСписокПозиций": "ProcessItemsList", "ВывестиСправкуПоМетодам": "DisplayMethodHelp", -"Путь к объекту удаления": "Path to the object to delete", "СдэкАПИ_РаботаСЗаказами": "CDEKAPI_OrdersManagement", -"ДропБокс_СоздатьКаталог": "DropboxAPI_CreateFolder", -"Прочитать строку !NOCLI": "Read line !NOCLI", +"Ошибка загрузки участка": "Chunk upload error", +"Название района региона": "Name of the area of the region", "ПолучитьПубличныйОбъект": "GetPublicObject", "РаботаСЧатамиИДиалогами": "ChatsAndDialogsManagement", "Новое значение свойства": "New property value", "ПолучитьОтветВКонтексте": "GetContextResponse", "СформироватьОсновнойURL": "FormPrimaryURL", -"идентификатор календаря": "calendar identifier", -"Название района региона": "Name of the area of the region", -"Проверка_ДропБоксСтатус": "Check_DropboxStatus", -"Проверка_ДропБоксРабота": "Check_DropboxWork", -"Слак_ПолучитьИнформацию": "SlackGetData", +"Прочитать строку !NOCLI": "Read line !NOCLI", +"Создать/Удалить каталог": "Create/Delete catalog", "Получить список моделей": "Get model list", +"Слак_ПолучитьИнформацию": "SlackGetData", +"идентификатор календаря": "calendar identifier", "ПроверитьОсновныеДанные": "CheckBasicData", "ОпределитьМетодОтправки": "DetermineSendMethod", "ДополнитьURLПараметрами": "CompleteURLWithParameters", "СоздатьЗапросМультипарт": "CreateMultipartRequest", "Скопированный файл.jpeg": "CopiedFile.jpeg", -"Ошибка загрузки участка": "Chunk upload error", +"Проверка_ДропБоксСтатус": "Check_DropboxStatus", "Получить список событий": "Get list of events", "ОтправитьКонтакт (канал": "SendContact (channel", "ГД_ЗагрузитьУдалитьФайл": "GD_UploadDeleteFile", @@ -5138,14 +5138,14 @@ "Изменить заголовок чата": "Change chat title", "Данные или путь к файлу": "File data or filepath", "ОбеспечитьПустойКаталог": "EnsureEmptyDirectory", +"Проверка_ДропБоксРабота": "Check_DropboxWork", "признак новой сделки (Y": "new deal flag (Y", -"Получить описание файла": "Get file description", +"Удалить выбранные файлы": "Delete selected files", "OPI_ПреобразованиеТипов": "OPI_TypeConversion", -"Создать обновить товары": "Create update product", "Идентификатор базы База": "Base identifier Base", "СтруктураДоговоренности": "AppointmentStructure", "Получить историю задачи": "Get task history", -"Получить данные о сайте": "Get site data", +"Отключить сервер !NOCLI": "Stop server !NOCLI", "идентификатор владельца": "owner identifier", "Является пунктом выдачи": "Its a shipping point", "ОтправитьДвоичныеДанные": "SendBinaryData", @@ -5159,96 +5159,95 @@ "Наименование обсуждения": "Discussion name", "Telegram_УдалитьWebhook": "Telegram_DeleteWebhook", "УдалитьСобытиеКалендаря": "DeleteCalendarEvent", +"Установить правила чата": "Set chat rules", "Получить список свойств": "Get property list", "Получить структуру чата": "Get chats structure", "для дальнейших действий": "for further actions", "Получает лог выполнения": "Gets the execution log", "Телеграм_ОтправитьОпрос": "TelegramAPI_SendPoll", +"Получить описание файла": "Get file description", "Новое имя стадии стадии": "New stage name", -"Установить правила чата": "Set chat rules", -"признак повторного лида": "repeat lead", +"Создать обновить товары": "Create update product", "ОтправитьСообщение (хук": "SendMessage", "ПолучитьСтатусОбработки": "GetProcessingStatus", "Получить список заказов": "Get order list", "ID события для удаления": "ID of the event to be deleted", "Массив вариантов опроса": "Poll options array", -"Удалить выбранные файлы": "Delete selected files", -"Создать/Удалить каталог": "Create/Delete catalog", +"признак повторного лида": "repeat lead", "ПолучитьПоследнююОшибку": "GetLastError", -"ГенераторОтчетаПокрытия": "CoverageReportGenerator", +"ID новости для удаления": "Id of post to remove", "ОтправитьЛокацию (канал": "SendLocation (channel", -"Telegram_ОтправитьГифку": "Telegram_SendGif", -"Установить теги объекта": "Put object tagging", -"ЗагрузитьФайлВХранилище": "UploadFileToStorage", -"ЗвершитьЗаписьMultipart": "EndMultipartBody", -"Вайбер_ОтправитьЛокацию": "Viber_SendLocation", -"адрес электронной почты": "email address", -"Не найден входной файл!": "Input File Not Found!", -"Удалить свойство товара": "Delete product property", -"ДФ=yyyy-MM-ddTHH:mm:ssZ": "DF=yyyy-MM-ddTHH:mm:ssZ", -"массив URL картинок 360": "array of 360 images URLs", -"ПолучитьСтруктуруДанных": "GetBasicDataStructure", -"YandexDisk_СоздатьПапку": "YandexDisk_CreateFolder", "Информация о выполнении": "Execution information", -"Telegram_ОтправитьОпрос": "Telegram_SendPoll", +"YandexDisk_СоздатьПапку": "YandexDisk_CreateFolder", +"ПолучитьСтруктуруДанных": "GetBasicDataStructure", +"массив URL картинок 360": "array of 360 images URLs", +"ДФ=yyyy-MM-ddTHH:mm:ssZ": "DF=yyyy-MM-ddTHH:mm:ssZ", "Создать/Удалить событие": "Create/Delete event", +"Удалить свойство товара": "Delete product property", +"адрес электронной почты": "email address", +"Вайбер_ОтправитьЛокацию": "Viber_SendLocation", +"ЗвершитьЗаписьMultipart": "EndMultipartBody", +"Установить теги объекта": "Put object tagging", +"Telegram_ОтправитьГифку": "Telegram_SendGif", +"Ответ сервера с ссылкой": "Server response with a URL", +"Не найден входной файл!": "Input File Not Found!", "Telegram_ОтправитьВидео": "Telegram_SendVideo", -"Получить список складов": "Get warehouses list", +"ЗагрузитьФайлВХранилище": "UploadFileToStorage", "Телеграм_ОтправитьАудио": "TelegramAPI_SendAudio", +"ПолучитьКвитанцию (файл": "GetReceipt (file", "УдалитьФайлы (каталог 2": "DeleteSelectedFiles (folder 2", "ОбработатьСтруктуруBlob": "ProcessBlobStructure", "СоздатьЗависимостьЗадач": "CreateTasksDependencies", "Тестовая таблица 2 (изм": "Test table 2 (change", "Получить поле (числовое": "Get field (numeric", +"Telegram_ОтправитьОпрос": "Telegram_SendPoll", "СкрытьГлавнуюТемуФорума": "HideMainForumTopic", -"ID новости для удаления": "Id of post to remove", "ПолучитьСтруктуруЗадачи": "GetTaskFieldsStructure", "Слак_ЗагрузитьУдалитьВФ": "Slack_UploadDeleteExternalFile", "Наименование новой базы": "New base name", "Отправить строку !NOCLI": "Send line !NOCLI", "ЗаписатьФайлыМультипарт": "WriteMultipartFiles", -"ПолучитьРазделительПути": "GetPathSeparator", +"Получить список складов": "Get warehouses list", "список активных токенов": "active token list", "Получить историю канала": "Get channel history", -"Ответ сервера с ссылкой": "Server response with a URL", +"ОтменитьЗагрузкуЧастями": "AbortMultipartUpload", "GAPI_УправлениеГруппами": "GAPI_GroupManagement", -"ПолучитьЗначениеИзФайла": "GetValueFromFile", -"СформироватьТекстDelete": "FormTextDelete", -"ВключитьЗвукЗадачи (хук": "UnmuteTask (wh", -"СкопироватьКаталог (хук": "MakeFolderCopy (wh", -"СтруктураХарактеристики": "AttributesStructure", -"СформироватьТекстInsert": "FormTextInsert", -"СоздатьЗаголовкиЗапроса": "CreateRequestHeaders", -"ИмяМедиа, ТекущиеДанные": "MediaName, CurrentData", -"ПрочитатьДвоичныеДанные": "ReadBinaryData", -"ПолучитьСтруктуруСделки": "GetDealStructure", -"идентификатор реквизита": "prop identifier", -"Bitrix24_ИзменитьЗадачу": "Bitrix24_UpdateTask", -"ПараметрыЗапросаВСтроку": "RequestParametersToString", -"Б24_РаботаСППолямиЗадач": "B24_TaskFieldsManagement", "АТ_СоздатьУдалитьЗаписи": "AT_CreateDeleteRecords", +"Б24_РаботаСППолямиЗадач": "B24_TaskFieldsManagement", +"ПараметрыЗапросаВСтроку": "RequestParametersToString", +"Bitrix24_ИзменитьЗадачу": "Bitrix24_UpdateTask", +"идентификатор реквизита": "prop identifier", +"ПолучитьСтруктуруСделки": "GetDealStructure", "Массив ID пользователей": "User ID Array", +"ПрочитатьДвоичныеДанные": "ReadBinaryData", +"СоздатьЗаголовкиЗапроса": "CreateRequestHeaders", +"СформироватьТекстInsert": "FormTextInsert", +"СтруктураХарактеристики": "AttributesStructure", +"СкопироватьКаталог (хук": "MakeFolderCopy (wh", +"ВключитьЗвукЗадачи (хук": "UnmuteTask (wh", +"СформироватьТекстDelete": "FormTextDelete", +"ИмяМедиа, ТекущиеДанные": "MediaName, CurrentData", +"Получить данные о сайте": "Get site data", "УдалитьЗаписи (проверка": "DeleteRecords (check", -"СоздатьСобытиеКалендаря": "CreateCalendarEvent", +"УстановитьЗаголовокЧата": "SetChatTitle", +"Postgres_ОсновныеМетоды": "Postgres_CommonMethods", "ЯМаркет_РаботаСТоварами": "YaMarket_ProductsManagement", "Проверка_ТелеграмИстина": "Check_TelegramTrue", "ИзменитьАватарЧата (URL": "ChangeChatPicture (URL", "ГринОтзывАдминистратора": "GreenAdminRemove", "СоединитьДвоичныеДанные": "ConcatBinaryData", +"СоздатьСобытиеКалендаря": "CreateCalendarEvent", "СоздатьКомментарий (хук": "CreateComment (wh", -"Postgres_ОсновныеМетоды": "Postgres_CommonMethods", -"УдалитьЗависимостьЗадач": "DeleteTasksDependencies", +"ПолучитьЗначениеИзФайла": "GetValueFromFile", "ID версии начала списка": "Version ID for the beginning of the list", -"СоздатьПроизвольныйТвит": "CreateCustomTweet", -"ОтменитьЗагрузкуЧастями": "AbortMultipartUpload", +"ГенераторОтчетаПокрытия": "CoverageReportGenerator", "Действия с обсуждениями": "Actions with discussions", "СоздатьУдалитьКалендарь": "CreateDeleteCalendar", "СформироватьМассивМедиа": "FormMediaArray", -"УстановитьЗаголовокЧата": "SetChatTitle", -"ПолучитьКвитанцию (файл": "GetReceipt (file", -"Отключить сервер !NOCLI": "Stop server !NOCLI", -"Создать канал приватным": "Create channel as private", -"Элемент фильтра записей": "Record filter element", +"УдалитьЗависимостьЗадач": "DeleteTasksDependencies", +"ПолучитьРазделительПути": "GetPathSeparator", +"Bitrix24_ОтложитьЗадачу": "Bitrix24_DeferTask", +"Проверка_БитриксНовость": "Check_BitrixPost", "Bitrix24_УдалитьНовость": "Bitrix24_DeletePost", "МассивURLФайловВложений": "ArrayOfAttachmentURLs", "Получить структуру лида": "Get lead structure", @@ -5266,14 +5265,13 @@ "Загрузить часть объекта": "Upload object part", "Лайк/Репост/Комментарий": "Like/Repost/Comment", "ВК_СоздатьТоварПодборку": "VKAPI_CreateProductSelection", -"Непредвиденная ошибка!:": "Unexpected Error!", "ПолучитьОписаниеОбъекта": "HeadObject", "Переименовать хранилище": "Rename storage", "Удаляет календарь по ID": "Deletes a calendar by ID", "Текст первого сообщения": "Text of the first message", "РазделитьДвоичныеДанные": "SplitBinaryData", "УникальныйИдентификатор": "UUID", -"ВключитьУведомленияЧата": "EnableChatNotifications", +"СформироватьТекстSelect": "FormTextSelect", "Добавить данные Related": "Add data as Related", "Массив вариантов ответа": "Array of answer options", "ID товаров для проверки": "Product IDs to be inspected", @@ -5281,10 +5279,10 @@ "УстановитьСтроковоеТело": "SetStringBody", "Получить список записей": "Get list of records", "ОтправитьКартинку (Путь": "SendPicture (Path", -"СформироватьТекстSelect": "FormTextSelect", "ИзменитьКалендарьСписка": "EditListCalendar", +"Непредвиденная ошибка!:": "Unexpected Error!", "ID файла для скачивания": "File ID for downloading", -"ПолучитьСтруктуруТовара": "GetProductStructure", +"20971520 байт (20 МБайт": "20971520 bytes (20 MB", "ОзонСписокХарактеристик": "OzonAttributesList", "Флаг анонимности опроса": "Survey anonymity flag", "Bitrix24_СоздатьНовость": "Bitrix24_CreatePost", @@ -5292,15 +5290,16 @@ "Удаляет сообщение по ID": "Deletes a message by ID", "Запустить сервер !NOCLI": "Start server !NOCLI", "Новое описание картинки": "New picture description", -"СпособКодированияСтроки": "StringEncodingMethod", -"Таймаут ожидания данных": "Data reading timeout", +"Создать канал приватным": "Create channel as private", "ПустаяСхемаDropDatabase": "EmptySchemeDropDatabase", "Б24_УчетРабочегоВремени": "B24_Timekeeping", "Bitrix24_УдалитьКаталог": "Bitrix24_DeleteFolder", "Вайбер_ОтправитьКонтакт": "Viber_SendContact", "Создать свойство товара": "Create product property", +"Таймаут ожидания данных": "Data reading timeout", +"СпособКодированияСтроки": "StringEncodingMethod", +"ВключитьУведомленияЧата": "EnableChatNotifications", "Новая картинка подборки": "New selection image", -"АтрибутыИХарактеристики": "AttributesAndFeatures", "ИзменитьПодборкуТоваров": "EditProductCollection", "ОтправитьМестоположение": "SendLocation", "Сформировать клавиатуру": "Create keyboard", @@ -5308,54 +5307,53 @@ "Изменить стадию канбана": "Change kanban stage", "Произвольный, HTTPОтвет": "Arbitrary, HTTPResponse", "Получить чеклист задачи": "Get tasks checklist", -"20971520 байт (20 МБайт": "20971520 bytes (20 MB", +"Новый заголовок новости": "New post title", "VK_СоздатьСоставнойПост": "VK_CreateCompositePost", "НайтиПользователей (хук": "FindUsers (wh", "ПолучитьИнформациюОЧате": "GetChatInfo", "УправлениеВнешнимФайлом": "ExternalFileManagement", "ТаблицаДляИспользования": "TableForUse", "Получить подборки по ID": "Get selections by ID", -"Новый заголовок новости": "New post title", -"ОткрытьСоединение (база": "CreateConnection (base", +"ПолучитьСтруктуруТовара": "GetProductStructure", +"АтрибутыИХарактеристики": "AttributesAndFeatures", "СформироватьТекстUpdate": "FormTextUpdate", -"Получить значения ячеек": "Get cell values", +"ОткрытьСоединение (база": "CreateConnection (base", "Другой заголовок задачи": "Another task title", -"УдалитьКомментарий (хук": "DeleteComment (wh", -"ДобавитьAWS4Авторизацию": "AddAWS4Authorization", -"Создает новый календарь": "Creates a new calendar", -"ПолучитьЧислоУчастников": "GetParticipantCount", -"ПолучитьИнформациюОБазе": "GetDatabaseInfo", -"ПереместитьКаталог (хук": "MoveFolder (wh", -"ИсключатьАрхивированные": "ExcludeArchived", -"и перейдите в настройки": "and go to the settings", -"УстановитьОбъектЗапроса": "SetRequestObject", -"ИзменитьАртикулыТоваров": "UpdateProductsArticles", -"ПолучитьПеременнуюСреды": "GetEnvironmentVariable", -"OPI_TCP.ОтправитьСтроку": "OPI_TCP.SendLine", -"ОтменитьПубликациюФайла": "CancelFilePublication", "Пустое описание товара:": "Empty product description:", +"ОтменитьПубликациюФайла": "CancelFilePublication", +"OPI_TCP.ОтправитьСтроку": "OPI_TCP.SendLine", +"ПолучитьПеременнуюСреды": "GetEnvironmentVariable", +"ИзменитьАртикулыТоваров": "UpdateProductsArticles", +"УстановитьОбъектЗапроса": "SetRequestObject", "ВходнойМассивПараметров": "InputParamsArray", +"и перейдите в настройки": "and go to the settings", +"ПереместитьКаталог (хук": "MoveFolder (wh", +"ПолучитьИнформациюОБазе": "GetDatabaseInfo", +"ПолучитьЧислоУчастников": "GetParticipantCount", +"Создает новый календарь": "Creates a new calendar", +"ДобавитьAWS4Авторизацию": "AddAWS4Authorization", +"УдалитьКомментарий (хук": "DeleteComment (wh", +"ИсключатьАрхивированные": "ExcludeArchived", +"СправкаВозможныеКоманды": "HelpAvailableCommand", "Имя файла с расширением": "File name with extension", -"ОтменитьЗаписьMultipart": "CancelMultipartBody", -"ПолучитьСписокКаталогов": "GetDirectoriesList", +"СоздатьПроизвольныйТвит": "CreateCustomTweet", "Данные файла для записи": "File data to be written", "Удаляет таблицу из базы": "Deletes a table from the database", "Какой ваш любимый цвет?": "What's your favorite color?", -"ВывестиСправкуПоКоманде": "ShowCommandHelp", "УдалитьШифрованиеБакета": "DeleteBucketEncryption", -"Bitrix24_ОтложитьЗадачу": "Bitrix24_DeferTask", -"Проверка_БитриксНовость": "Check_BitrixPost", "СформироватьТестыЯксCLI": "FormYAXTestsCLI", -"ЯДиск_ПереместитьОбъект": "YDisk_MoveObject", +"ПолучитьКалендарьСписка": "GetListCalendar", +"ОтменитьЗаписьMultipart": "CancelMultipartBody", "Идентификатор категории": "Category identifier", "Телеграм_ОтправитьВидео": "TelegramAPI_SendVideo", "Telegram_ОтправитьАудио": "Telegram_SendAudio", "ПолучитьСписокСчетчиков": "GetCountersList", "ОтправитьДокумент (Путь": "SendDocument (Path", -"ПолучитьКалендарьСписка": "GetListCalendar", -"СправкаВозможныеКоманды": "HelpAvailableCommand", +"ПолучитьСписокКаталогов": "GetDirectoriesList", +"ЯДиск_ПереместитьОбъект": "YDisk_MoveObject", "Выберите пункт External": "Choose External", -"ТелеграмУстановкаВебхук": "TelegramWebhookSetup", +"ВывестиСправкуПоКоманде": "ShowCommandHelp", +"ПолучитьПланЗадачНаДень": "GetDailyPlan", "Имя существующей модели": "Name of existing model", "Телеграм_ОтправитьГифку": "TelegramAPI_SendGIF", "Инициализировать !NOCLI": "Initialize !NOCLI", @@ -5366,31 +5364,33 @@ "СоздатьТоварСоСвойством": "CreateProductWithProp", "МассивОбязательныхПолей": "RequiredFieldsArray", "СтруктураАдресаДоставки": "DeliveryAddressStruct", -"Массив Из Строка, Число": "Array of String, Number", +"Bitrix24_ПолучитьЗадачу": "Bitrix24_GetTask", "Создать страницу в базу": "Create page in database", "ОбработатьСекретыOllama": "ProcessSecretsMySQLOllama", -"Bitrix24_ПолучитьЗадачу": "Bitrix24_GetTask", +"Получить значения ячеек": "Get cell values", "ПолеКоллекцииСуществует": "CollectionFieldExists", -"ЗаполнитьОчиститьЯчейки": "FillClearCells", -"Массив описаний товаров": "Array of product descriptions", +"ТелеграмУстановкаВебхук": "TelegramWebhookSetup", +"Массив Из Строка, Число": "Array of String, Number", "Выполнить запрос !NOCLI": "Execute request !NOCLI", -"ID удаляемого сообщения": "ID of message to delete", +"ЗаполнитьОчиститьЯчейки": "FillClearCells", "Проверка_ДропБоксМассив": "Check_DropboxArray", -"Идентификатор хранилища": "Storage ID", "ДелегироватьЗадачу (хук": "DelegateTask (wh", "МаксимальнаяВложенность": "MaximumNesting", "ПереместитьФайлВКаталог": "MoveFileToFolder", -"ПолучитьПланЗадачНаДень": "GetDailyPlan", "ПолучитьСписокМагазинов": "GetMarketsList", +"Идентификатор хранилища": "Storage ID", "Получить список бакетов": "List buckets", -"Проверка_ТелеграмМассив": "Check_TelegramArray", -"ДФ=yyyy-MM-ddThh:mm:ssZ": "DF=yyyy-MM-ddThh:mm:ssZ", -"Код формы собственности": "Form of ownership code", +"Элемент фильтра записей": "Record filter element", +"Массив описаний товаров": "Array of product descriptions", "HEX нового цвета стадии": "HEX of new stage color", -"Bitrix24_ИзменитьНовость": "Bitrix24_UpdatePost", +"Код формы собственности": "Form of ownership code", +"ID удаляемого сообщения": "ID of message to delete", +"ДФ=yyyy-MM-ddThh:mm:ssZ": "DF=yyyy-MM-ddThh:mm:ssZ", +"Проверка_ТелеграмМассив": "Check_TelegramArray", +"ОтправитьЛокацию (цитата": "SendLocation (quote", "Получить список хранилищ": "Get list of storages", "СформироватьТестыАссертс": "FormAssertsTests", -"ЗавершитьЗагрузкуЧастями": "FinishPartsUpload", +"СоздатьАрхивироватьКанал": "CreateArchiveChannel", "Создает каталог на диске": "Creates a directory on the disk", "фильтр по уровню доступа": "filter by access level", "Добавить обновить товары": "Add update products", @@ -5399,14 +5399,14 @@ "НаправлениеПоиска.СКонца": "SearchDirection.FromEnd", "всегда возвращает Истина": "always return True", "ID пользователя адресата": "Recipient user ID", -"ОтправитьЛокацию (цитата": "SendLocation (quote", +"ПолучитьПараметрыТвиттер": "GetTwitterParameters", +"ЗавершитьЗагрузкуЧастями": "FinishPartsUpload", +"Код региона по базе СДЭК": "Region code according to CDEK database", "ВК_ПолучитьСписокСвойств": "VKAPI_GetPropertyList", -"мМассивВходныхПараметров": "mEntryParamsArray", "МассивОтсутствующихПолей": "MissingFieldsArray", "ЗаполнитьЗначенияСвойств": "FillPropertyValues", "Проверка_ДропбоксАккаунт": "Check_DropboxAccount", "УдалитьЗаписи (получение": "DeleteRecords (get", -"Код региона по базе СДЭК": "Region code according to CDEK database", "ОзонАПИ_РаботаСоСкладами": "OzonAPI_WarehousesManagement", "асинхронный код счетчика": "asynchronous counter code", "номер документа на товар": "item document number", @@ -5415,12 +5415,12 @@ "Получить список областей": "Get region list", "Массив товаров или товар": "Array of products or product", "СоздатьДлиннуюКлавиатуру": "CreateLongKeyboard", -"СоздатьАрхивироватьКанал": "CreateArchiveChannel", "ПолучитьСписокКалендарей": "GetCalendarList", "ID файла для копирования": "Original file ID", -"Изменяет новость в ленте": "Change post data", -"Bitrix24_ПолучитьНовости": "Bitrix24_GetPosts", +"ДобавитьКалендарьВСписок": "AddCalendarToList", +"УправлениеАрхивациейЧата": "ChatArchivingManagement", "Выбрать пункт **Другое**": "Select **Other**", +"мМассивВходныхПараметров": "mEntryParamsArray", "СоздатьТвитКартинки (ИВФ": "CreateImageTweet (TFN", "ДобавитьЗаголовокOAuthV1": "AddOAuthV1Header", "ID события для получения": "Event ID to retrieve", @@ -5432,9 +5432,8 @@ "СинхронизироватьКаталоги": "SynchronizeFolders", "ГК_ПолучитьСписокСобытий": "GC_GetEventList", "ПолучитьДвоичныеИлиПоток": "GetBinaryOrStream", +"Тип чата OPEN (публичный": "Chat type OPEN (public", "Изменяет имя метки по ID": "Changes the tag name by ID", -"ДобавитьКалендарьВСписок": "AddCalendarToList", -"УправлениеАрхивациейЧата": "ChatArchivingManagement", "ДобавитьBasicАвторизацию": "AddBasicAuthorization", "Subsystem.OPI_Интеграция": "Subsystem.OPI_Integrations", "Новый каталог размещения": "New parent directory", @@ -5448,39 +5447,41 @@ "АргументыКоманднойСтроки": "CommandLineArguments", "Bitrix24_ОтклонитьЗадачу": "Bitrix24_DisapproveTask", "Другие товары сообщества": "Other items", -"Тип чата OPEN (публичный": "Chat type OPEN (public", +"Изменяет новость в ленте": "Change post data", "ПолучитьСтрокуЗаголовков": "GetHeadersString", -"Структура параметров URL": "URL parameters structure", -"Проверка_ТелеграмКонтакт": "Check_TelegramContact", -"ПолучитьСтатистикуПостов": "GetPostStatistics", "ставка ндс, например 0.2": "VAT rate, e.g. 0.2", +"Проверка_ТелеграмКонтакт": "Check_TelegramContact", +"ОбработатьОшибочныйВывод": "HandleErrorOutput", "Bitrix24_СкопироватьФайл": "Bitrix24_MakeFileCopy", "Откладывает задачу по ID": "Defer task by ID", "Создать товар и подборку": "Create product and selection", +"Bitrix24_ИзменитьНовость": "Bitrix24_UpdatePost", "ПолучитьЗаголовкиЗапроса": "GetRequestHeaders", "Проверка_БитриксВложение": "Check_BitrixAttachment", "Получить описание заказа": "Get order description", -"Изменить текст сообщения": "Change the message text", "ВывестиНачальнуюСтраницу": "DisplayStartPage", "Массив заголовков кнопок": "Array of button titles", "Получить данные аккаунта": "Get account data", "УдалитьКалендарьИзСписка": "DeleteCalendarFromList", "Bitrix24_ЗавершитьЗадачу": "Bitrix24_CompleteTask", -"НормализоватьАвторизацию": "NormalizeAuth", -"UUID заказа для удаления": "Order UUID for deletion", -"СоздатьТоварСоСвойствами": "CreateProductWithProperties", -"Использовать \"./internal": "Use \"./internal", -"UUID заявки для удаления": "UUID of the invitation for deletion", -"Изменяет текст сообщения": "Changes the text of the message", -"СоздатьРекламнуюКампанию": "CreateAdvertisingCampaign", -"ТекущаяУниверсальнаяДата": "CurrentUniversalDate", -"VK_ПолучитьСписокТоваров": "VK_GetProductList", -"ВК_ПолучитьСписокТоваров": "VKAPI_GetProductList", -"СоздатьУдалитьТемуФорума": "CreateDeleteForumTopic", -"ПреобразоватьДанныеФайла": "ConvertFileData", +"ПолучитьСтатистикуПостов": "GetPostStatistics", +"Изменить текст сообщения": "Change the message text", "VK_ПолучитьСписокСвойств": "VK_GetPropertyList", -"ОбработатьОшибочныйВывод": "HandleErrorOutput", -"Логин пользователя mysql": "MySQL user", +"НормализоватьАвторизацию": "NormalizeAuth", +"СоздатьУдалитьТемуФорума": "CreateDeleteForumTopic", +"ВК_ПолучитьСписокТоваров": "VKAPI_GetProductList", +"VK_ПолучитьСписокТоваров": "VK_GetProductList", +"ТекущаяУниверсальнаяДата": "CurrentUniversalDate", +"СоздатьРекламнуюКампанию": "CreateAdvertisingCampaign", +"ПреобразоватьДанныеФайла": "ConvertFileData", +"UUID заявки для удаления": "UUID of the invitation for deletion", +"Использовать \"./internal": "Use \"./internal", +"Изменяет текст сообщения": "Changes the text of the message", +"СоздатьТоварСоСвойствами": "CreateProductWithProperties", +"ПриостановитьЗадачу (хук": "PauseTask (wh", +"UUID заказа для удаления": "Order UUID for deletion", +"Bitrix24_ПолучитьНовости": "Bitrix24_GetPosts", +"ПолучитьСписокРазрешений": "GetPermissionsList", "ПолучитьСобытиеКалендаря": "GetCalendarEvent", "ID чата для разархивации": "Chat ID for dearchiving", "Идентификаторы кластеров": "Clusters identifiers", @@ -5493,28 +5494,28 @@ "Установить прокси !NOCLI": "Set proxy !NOCLI", "Секретный ключ (Password": "Secret key (Password", "Создать/Изменить таблицу": "Create/Edit table", -"ПолучитьСписокРазрешений": "GetPermissionsList", "РезультатПроверкиСтрокой": "CheckResultAsString", "УбратьЗадачуИзИзбранного": "RemoveTaskFromFavorites", +"Логин пользователя mysql": "MySQL user", "HTTP_УстановкаЗаголовков": "HTTP_HeadersSetting", -"ID целевого пользователя": "Target user ID", "СохранитьКартинкуВАльбом": "SaveImageToAlbum", "Язык штрихкода: RUS, ENG": "Barcode language: RUS, ENG", "ПолучитьСтрокуПараметров": "GetParamsString", "ПолучитьШифрованиеБакета": "GetBucketEncryption", "МаксимальныйРазмер Тогда": "MaxSize Then", -"СохранитьУдалитьКартинку": "SaveDeleteImage", "Путь к целевому каталогу": "Path to the target directory", "РаботаСПодборкамиТоваров": "ProductSelectionManagement", "Б24_РаботаСУведомлениями": "B24_NotificationsManagement", "цвет текста на информере": "informer text color", "УстановитьТегиБакета (DB": "PutBucketTagging (DB", "произвольный комментарий": "arbitrary comment", +"Структура параметров URL": "URL parameters structure", "Новая рекламная кампания": "New ads campaign", -"ПриостановитьЗадачу (хук": "PauseTask (wh", -"ПолучитьПараметрыТвиттер": "GetTwitterParameters", -"VK_СоздатьСвойствоТовара": "VK_CreateProductProperty", -"ИзменитьСвойстваСтраницы": "EditPageProperties", +"ID целевого пользователя": "Target user ID", +"ВыполнитьЗапросSQL (файл": "ExecuteSQLQuery (file", +"СохранитьУдалитьКартинку": "SaveDeleteImage", +"Строка, Массив Из Строка": "String, Array of String", +"ID файла для перемещения": "File ID", "СоздатьЧерновикЗаявкиFBO": "CreateFBODraft", "Метод в документации API": "Method at API documentation", "Получить список регионов": "Get regions list", @@ -5527,9 +5528,8 @@ "Ноушн_СоздатьУдалитьБлок": "Notion_CreateDeleteBlock", "признак цифрового товара": "digital attribute", "ОбработатьТелоДляЗапроса": "ProcessRequestBody", -"Наличие терминала оплаты": "Availability of payment terminal", -"ПоместитьКаталогВКорзину": "MarkFolderAsDeleted", "Строка, Массив из Строка": "String, Array of String", +"ПолучитьСписокЗадач (хук": "GetTasksList (wh", "ПолучитьКатегорииТоваров": "GetProductCategories", "Bitrix24_ПолучитьКаталог": "Bitrix24_GetFolder", "Новый тестовый заголовок": "NewTestTitle", @@ -5543,43 +5543,43 @@ "Управление базами данных": "Database management", "сохранение страниц сайта": "page saving", "СформироватьТекстФильтра": "FormFilterText", -"Отправить запрос с телом": "Send request with body", -"ПолучитьСписокЗадач (хук": "GetTasksList (wh", +"Наличие терминала оплаты": "Availability of payment terminal", +"ПоместитьКаталогВКорзину": "MarkFolderAsDeleted", "ПолучитьСтруктуруТаблицы": "GetTableStructure", -"количество грузовых мест": "number of cargo spaces", -"ПоследнийКодУспеха Тогда": "LastSuccessCode Then", -"ПолучитьОтвет (параметры": "GetResponse (parameter", -"КонечныйМассивПараметров": "FinalParamsArray", -"ГК_СоздатьУдалитьСобытие": "GC_CreateDeleteEvent", +"СформироватьБлокКартинку": "GenerateImageBlock", +"VK_СоздатьСвойствоТовара": "VK_CreateProductProperty", +"VK_ПолучитьСписокЗаказов": "VK_GetOrderList", +"Признак рекламного поста": "Sign of an advertising post", +"Получить товары кабинета": "Get business products", +"Блоки в документации API": "Blocks at API documentation", +"Данные файл для загрузки": "Data file for upload", "ВК_ПолучитьСписокЗаказов": "VKAPI_GetOrderList", "Изменяет название канала": "Changes the name of the channel", -"ЗагрузитьОбъект (частями": "PutObject (parts", -"Данные файл для загрузки": "Data file for upload", -"Блоки в документации API": "Blocks at API documentation", -"Получить товары кабинета": "Get business products", -"Признак рекламного поста": "Sign of an advertising post", -"VK_ПолучитьСписокЗаказов": "VK_GetOrderList", +"ГК_СоздатьУдалитьСобытие": "GC_CreateDeleteEvent", +"КонечныйМассивПараметров": "FinalParamsArray", "ОписаниеПримитивногоПоля": "PrimitiveFieldDescription", +"ПоследнийКодУспеха Тогда": "LastSuccessCode Then", +"ЗагрузитьОбъект (частями": "PutObject (parts", "НоушнАпи_СоздатьСтраницу": "NotionAPI_CreatePage", +"ПолучитьОтвет (параметры": "GetResponse (parameter", "Получить список подборок": "Get selection list", "ПолучитьИнформациюОФайле": "GetFileInformation", "Создает новое обсуждение": "Creates a new discussion", "Создать подборку товаров": "Create product selection", "список параметров модели": "model parameter list", -"Настройки прокси запроса": "Request proxy settings", "ПолучитьИнформациюОДиске": "GetDiskInformation", "УстановитьКартинкуГруппы": "SetGroupPicture", -"ВыполнитьЗапросSQL (файл": "ExecuteSQLQuery (file", "ПриостановитьУчетВремени": "PauseTimekeeping", "Проверка_ВКГруппаТоваров": "Check_VKProductsGroup", "ПолучитьКодПодтверждения": "GetConfirmationCode", "ДобавитьЗадачуВИзбранное": "AddTaskToFavorites", -"СформироватьБлокКартинку": "GenerateImageBlock", "загрузка страниц в плеер": "page load to player", -"ID файла для перемещения": "File ID", +"количество грузовых мест": "number of cargo spaces", +"Настройки прокси запроса": "Request proxy settings", "Получить код авторизации": "Get authorization code", -"Вайбер_ОтправитьКартинку": "Viber_SendImage", +"Отправить запрос с телом": "Send request with body", "Получить заказ по номеру": "Get order by number", +"ПолучитьИмяОсновногоПоля": "GetPrimaryFieldName", "КодировкаВыходногоПотока": "OutputEncoding", "УдалитьКомментарийЗадачи": "DeleteTaskComment", "https://example.com/путь": "https://example.com/path", @@ -5590,16 +5590,14 @@ "ДобавитьПараметрКартинки": "AddImageParameter", "Заменить текст сообщения": "Replace message text", "ПолучитьОчередьСообщений": "GetMessageQueue", -"КвадратныеСкобкиМассивов": "ArraysSquareBrackets", "ОчиститьОчередьСообщений": "ClearMessageQueue", "Пустая строка параметров": "Empty parameter string", +"РаботаСУдаленнымиФайлами": "ExternalFilesManagement", "ID элемента для удаления": "ID of deleted element", -"Строка, Массив Из Строка": "String, Array of String", "ПолучитьСписокЛидов (хук": "GetLeadsList (wh", "ОбработанноеСоответствие": "ProcessedMap", "Структура учетных данных": "Credentials structure", "РазложитьОбъектыПодробно": "BreakDownObjectsInDetail", -"Получить поле (строковое": "Get field (string", "Для работы через Webhook": "To work via Webhook", "ИсключитьУчастникаГруппы": "ExcludeGroupMember", "Загрузить объект целиком": "Upload full object", @@ -5608,13 +5606,14 @@ "ОтправитьКонтакт (цитата": "SendContact (quote", "ДобавитьПараметрВТаблицу": "AddPramToTable", "ДобавитьКомментарий (хук": "CreateComment (wh", +"Получить поле (строковое": "Get field (string", "ДобавитьПараметрыКоманды": "AddCommandParameters", -"ПолучитьИмяОсновногоПоля": "GetPrimaryFieldName", -"РаботаСУдаленнымиФайлами": "ExternalFilesManagement", "Dropbox_КопироватьОбъект": "Dropbox_CopyObject", -"Обработать запрос !NOCLI": "Process request !NOCLI", -"Получить информацию бота": "Get bot information", +"Вайбер_ОтправитьКартинку": "Viber_SendImage", +"КвадратныеСкобкиМассивов": "ArraysSquareBrackets", "Создает пустой календарь": "Creates an empty calendar", +"Получить информацию бота": "Get bot information", +"D:\\GD\\Мой диск\\data.json": "D:\\GD\\My Drive\\data.json", "Адрес истинного продавца": "The address of the true seller", "Загрузить фото на сервер": "Upload photo to server", "ОпределитьТекущуюКоманду": "DetermineCurrentCommand", @@ -5623,39 +5622,38 @@ "Набор тестов для YAxUnit": "Test suite for YAxUnit", "СоздатьПользователя (хук": "CreateUser (wh", "ТекущийПараметрКоллекция": "CurrentCollectionParam", -"Изменить свойство товара": "Edit product property", "ТаблицаСправкаПоКомандам": "CommandsHelpTable", "Установить описание чата": "Set chat description", +"Обработать запрос !NOCLI": "Process request !NOCLI", "Поместить файл в корзину": "Mark file as deleted", -"D:\\GD\\Мой диск\\data.json": "D:\\GD\\My Drive\\data.json", -"Файл источник обновления": "File source for update", +"Изменить свойство товара": "Edit product property", "ДобавитьРодителяСтраницы": "AddPageParent", -"Удалено %1 лишних файлов": "Removed %1 unnecessary files", -"ДобавитьУчастникаВГруппу": "AddGroupMember", -"ОтправитьСтроку (таймаут": "SendLine (timeout", -"ВывестиСправкуПоКомандам": "ShowCommandsHelp", -"Получить описание товара": "Get product description", -"Наименование нового поля": "New field name", -"Отправить местоположение": "Send location", -"СоздатьВысокуюКлавиатуру": "CreateTallKeyboard", -"ОтключитьУведомленияЧата": "DisableChatNotifications", +"ИзменитьСвойстваСтраницы": "EditPageProperties", "ID счетчика для удаления": "Counter ID for deletion", -"Получить календарь списка": "Get list calendar", +"Файл источник обновления": "File source for update", +"СоздатьВысокуюКлавиатуру": "CreateTallKeyboard", +"Отправить местоположение": "Send location", +"Наименование нового поля": "New field name", +"Получить описание товара": "Get product description", +"ОтключитьУведомленияЧата": "DisableChatNotifications", +"ОтправитьСтроку (таймаут": "SendLine (timeout", +"ДобавитьУчастникаВГруппу": "AddGroupMember", +"Удалено %1 лишних файлов": "Removed %1 unnecessary files", +"ВывестиСправкуПоКомандам": "ShowCommandsHelp", "РаботаСоСвойствамиТоваров": "ProductPropertiesManagement", -"VK_СформироватьКлавиатуру": "VK_FormKeyboard", -"Проверка_БитриксРезультат": "Check_BitrixResult", -"ПоказатьГлавнуюТемуФорума": "ShowMainForumTopic", -"Новый альбом из автотеста": "NewAlbumFromAutoTest", -"Удаляет записи из таблицы": "Deletes records from the table", -"ИзменитьПользователя (хук": "UpdateUser (wh", -"Соответствие файлов: Ключ": "Map: Key", -"ID пользователей(я) Viber": "Viber User(s) ID", -"VK_ЗагрузитьВидеоНаСервер": "VK_UploadVideoToServer", -"URL для получения объекта": "URL for object retrieving", "первый IP-адрес диапазона": "first IP address of the range", +"URL для получения объекта": "URL for object retrieving", +"VK_ЗагрузитьВидеоНаСервер": "VK_UploadVideoToServer", +"Соответствие файлов: Ключ": "Map: Key", +"ИзменитьПользователя (хук": "UpdateUser (wh", +"Новый альбом из автотеста": "NewAlbumFromAutoTest", +"ПоказатьГлавнуюТемуФорума": "ShowMainForumTopic", +"Проверка_БитриксРезультат": "Check_BitrixResult", +"VK_СформироватьКлавиатуру": "VK_FormKeyboard", "Coverage_ЗапускВсехТестов": "Coverage_StartAllTests", +"Удаляет записи из таблицы": "Deletes records from the table", "ЗавершитьУчетВремени (хук": "StopTimekeeping (wh", -"См. ПолучитьОписаниеФайла": "See GetFileDescription", +"ПолучитьСобытияКалендарей": "GetCalendarEvents", "НачатьЗаписьТелаMultipart": "StartMultipartBody", "Изменить подборку товаров": "Edit product selection", "Номер рекламной категории": "Advertising category number", @@ -5668,14 +5666,14 @@ "МобильноеПриложениеКлиент": "MobileAppClient", "идентификатор наблюдателя": "auditor identifier", "ПолучитьИнформациюОКанале": "GetChannelInformation", -"ПолучитьСобытияКалендарей": "GetCalendarEvents", -"ЭкранированиеСимволовJSON": "JSONCharactersEscapeMode", -"УдалитьСтадиюКанбана (хук": "DeleteKanbanStage (wh", -"ОтменитьПубликациюОбъекта": "CancelObjectPublication", -"Удалить шифрование бакета": "Delete bucket encryption", -"ID задачи приемника связи": "To task ID", -"Уникальный номер инстанса": "Unique instance number", +"Получить календарь списка": "Get list calendar", +"признак доступен для всех": "feature is available for all", +"См. ПолучитьОписаниеФайла": "See GetFileDescription", +"ДобавитьПользователейВЧат": "AddUsersToChat", "Данные части для загрузки": "Part content for uploading", +"УдалитьСтадиюКанбана (хук": "DeleteKanbanStage (wh", +"Уникальный номер инстанса": "Unique instance number", +"МобильноеПриложениеСервер": "MobileAppServer", "МассивПараметровОбработки": "ProcessingParameterArray", "Изменяет существующий лид": "Modifies an existing lead", "Управление пользователями": "Users management", @@ -5686,8 +5684,8 @@ "УстановитьАлгоритмOAuthV1": "SetOAuthV1Algorithm", "ПолучениеДанныхИНастройка": "DataRetrievalAndSettings", "ссылка на картинку товара": "product picture link", +"Удалить шифрование бакета": "Delete bucket encryption", "ЗакрытьВходящееСоединение": "CloseIncomingConnection", -"дата последнего изменения": "date of last modification", "Получить структуру товара": "Get product structure", "УстановитьПеременнуюСреды": "SetEnvironmentVariable", "ДействияПубличныхОбъектов": "PublicObjectActions", @@ -5701,16 +5699,16 @@ "CommonModule.OPI_ТестыCLI": "CommonModule.OPI_TestsCLI", "Создать/Удалить календарь": "Create/Delete calendar", "УправлениеПодразделениями": "DepartmentsManagement", -"признак доступен для всех": "feature is available for all", -"МобильноеПриложениеСервер": "MobileAppServer", -"ПолучитьПользователейЧата": "GetChatMembers", -"БитриксСписокКомментариев": "BitrixCommentsList", +"дата последнего изменения": "date of last modification", +"ОтменитьПубликациюОбъекта": "CancelObjectPublication", +"ЭкранированиеСимволовJSON": "JSONCharactersEscapeMode", +"ID пользователей(я) Viber": "Viber User(s) ID", +"идентификатор темы форума": "forum topic identifier", +"GAPI_ПолучениеУведомлений": "GAPI_NotificationsReceiving", "ПолучитьКоличествоТоваров": "GetProductsStocks", -"РаботаСРекламнымКабинетом": "AdAccountManagement", +"Слак_ПолучитьСписокФайлов": "Slack_GetFileList", "Отправить запрос без тела": "Send request without body", "Команда + \"\"#color=Бирюза": "Command + \"\"#color=Aqua", -"ID сообщения для удаления": "ID of the message to be deleted", -"Создает твит без вложений": "Creates a tweet without attachments", "ДобавитьКомментарийЗадачи": "AddTaskComment", "ОтправитьУдалитьСообщение": "SendDeleteMessage", "Удаляет уведомление по ID": "Delete notification by ID", @@ -5719,26 +5717,26 @@ "ЯДиск_СоздатьКопиюОбъекта": "YDisk_CreateObjectCopy", "Копирует файл или каталог": "Copies file or directory", "СменитьВладельцаЧата (хук": "ChangeChatOwner (wh", -"Удалить событие календаря": "Delete calendar event", +"ID сообщения для удаления": "ID of the message to be deleted", +"РаботаСРекламнымКабинетом": "AdAccountManagement", "ВернутьИмяФайлаТелаОтвета": "ReturnResponseFilename", +"Удалить зависимость задач": "Delete tasks dependencies", +"ДобавитьЗаголовокСтраницы": "AddPageHeader", +"ИзменитьНаименованиеКниги": "EditSpreadsheetTitle", +"Получить список каталогов": "Get list of directories", +"Получить структуру задачи": "Get task fields structure", +"MIME тип для Content-Type": "MIME type for Content-Type", +"Обновленное описание базы": "Updated base description", "Добавить/Удалить картинку": "Add/Delete image", "ПоказыватьВыводНемедленно": "ShowOutputImmediately", -"Статус : Соответствие": "Status : Map", -"Обновленное описание базы": "Updated base description", "ПолучитьРазмерСодержимого": "GetContentSize", -"Получить структуру задачи": "Get task fields structure", -"Получить список каталогов": "Get list of directories", -"ИзменитьНаименованиеКниги": "EditSpreadsheetTitle", -"MIME тип для Content-Type": "MIME type for Content-Type", -"ДобавитьЗаголовокСтраницы": "AddPageHeader", -"идентификатор темы форума": "forum topic identifier", -"Удалить зависимость задач": "Delete tasks dependencies", +"Статус : Соответствие": "Status : Map", +"ID задачи приемника связи": "To task ID", "Не удалось получить файл!": "Failed to retrieve the file!", +"Удалить событие календаря": "Delete calendar event", "ДобавитьBearerАвторизацию": "AddBearerAuthorization", -"Слак_ПолучитьСписокФайлов": "Slack_GetFileList", +"Отменить публикацию папки": "Unpublish folder", "ОбработатьСекретыBitrix24": "ProcessSecretsBitrix24", -"Проверка_ТелеграмКартинка": "Check_TelegramImage", -"GAPI_ПолучениеУведомлений": "GAPI_NotificationsReceiving", "Ссылка на последний релиз": "To the latest release", "подробное описание товара": "detailed product description", "ПолучитьСписокРезультатов": "GetResultsList", @@ -5761,18 +5759,18 @@ "ОтправитьУдалитьЭфемерное": "SendDeleteEphemeral", "UUID заказа для изменение": "Order UUID for updating", "Изменить имя главной темы": "Change main topic name", -"Отменить публикацию папки": "Unpublish folder", "Telegram_УдалитьСообщение": "Telegram_DeleteMessage", "ID записи о трудозатратах": "Time record ID", "Загрузить модель в память": "Load model to memory", "OPI_ПолучениеДанныхТестов": "OPI_TestDataRetrieval", +"ПолучитьПользователейЧата": "GetChatMembers", "ВосстановитьОбъектКВерсии": "RestoreObjectToVersion", +"Проверка_ТелеграмКартинка": "Check_TelegramImage", +"БитриксСписокКомментариев": "BitrixCommentsList", "Добавить заголовок !NOCLI": "Add header !NOCLI", -"ДобавитьПользователейВЧат": "AddUsersToChat", +"Создает твит без вложений": "Creates a tweet without attachments", "УдалитьПодразделение (хук": "DeleteDepartment (wh", -"ОбновитьИзображенияТовара": "UpdateProductImages", -"СкрытьПоказатьГлавнуюТему": "HideShowMainTopic", -"ВК_ПолучитьСписокПодборок": "VKAPI_GetSelectionList", +"Как EDT проект расширения": "As an EDT extension project", "Получить структуру сделки": "Get deal structure", "ID задачи источника связи": "From task ID", "Открытый Пакет Интеграций": "Open Integrations Package", @@ -5785,8 +5783,8 @@ "ID удаляемого комментария": "ID of comment to remove", "Прочитать двоичные данные": "Read binary data", "фильтровать по поддоменам": "subdomain filter", +"СкрытьПоказатьГлавнуюТему": "HideShowMainTopic", "ПолучитьСтруктуруСчетчика": "GetCounterStructure", -"Dropbox_ПереместитьОбъект": "Dropbox_MoveObject", "Выбор по ID подразделения": "Selection by department ID", "ДействиеСУчастникомГруппы": "GroupMemberAction", "Идентификатор базы данных": "Database identifier", @@ -5800,25 +5798,25 @@ "Наименование новой стадии": "New stage name", "Получить последнюю ошибку": "Get last error", "ПолучитьВнешнююКомпоненту": "GetAddInObject", +"Dropbox_ПереместитьОбъект": "Dropbox_MoveObject", "ОтправитьОписанияОбъектов": "SendObjectsDescription", -"ПолучитьСоответствиеТипов": "GetTypesMap", +"ВК_ПолучитьСписокПодборок": "VKAPI_GetSelectionList", "ЗаменитьОписаниеСообщения": "ReplaceMessageCaption", -"Работа с заявками курьера": "Courier invitations management", +"ВыполнитьЗапросМультипарт": "ExecuteMultipartRequest", "Заполнить/Очистить ячейки": "Fill/Clear cells", -"ПолучитьКаталогФайловЧата": "GetChatFilesFolder", -"Телеграм_ОтправитьКонтакт": "TelegramAPI_SendContact", -"СоздатьПодразделение (хук": "CreateDepartment (wh", -"календарь для приглашений": "invitation calendar", -"VK_СоздатьПодборкуТоваров": "VK_CreateProductCollection", -"Путь назначения для копии": "Destination path for the copy", -"идентификатор комментария": "comment identifier", -"ПолучитьСписокСделок (хук": "GetDealsList (wh", -"Описание тестового товара": "Test item description", -"ПолучитьКомменатрийЗадачи": "GetTaskComment", "ПолучитьСписокФайлов (Все": "GetFilesList (All", +"ПолучитьКомменатрийЗадачи": "GetTaskComment", +"Описание тестового товара": "Test item description", +"ПолучитьСписокСделок (хук": "GetDealsList (wh", +"идентификатор комментария": "comment identifier", +"VK_СоздатьПодборкуТоваров": "VK_CreateProductCollection", +"календарь для приглашений": "invitation calendar", +"СоздатьПодразделение (хук": "CreateDepartment (wh", +"ПолучитьКаталогФайловЧата": "GetChatFilesFolder", "РаботаСоСпискомКалендарей": "CalendarListManagement", +"Путь назначения для копии": "Destination path for the copy", "Получить описание объекта": "Head object", -"УстановитьНастройкиSelect": "SetSelectOptions", +"УдалитьТрудозатратыЗадачи": "DeleteTaskTimeAccounting", "цвет стрелки на информере": "arrow color on the informer", "Структура JSON полей базы": "The structure of the JSON database fields", "Загрузить видео на сервер": "Upload video to server", @@ -5830,20 +5828,19 @@ "ОчиститьТаблицу (проверка": "ClearTable (check", "ОтдельныеЭлементыМассивов": "SplitArrayParams", "МассивНастроекНапоминаний": "ReminderSettingsArray", -"УдалитьТрудозатратыЗадачи": "DeleteTaskTimeAccounting", +"Работа с заявками курьера": "Courier invitations management", "ОжидатьВходящиеСоединения": "WaitIncomingConnections", -"Как EDT проект расширения": "As an EDT extension project", +"УстановитьНастройкиSelect": "SetSelectOptions", +"ПолучитьСоответствиеТипов": "GetTypesMap", "Получить структуру данных": "Get basic data structure", -"Устанавливает тему канала": "Sets the channel topic", +"Телеграм_ОтправитьКонтакт": "TelegramAPI_SendContact", "Тестовый товар измененный": "EditedTestProduct", -"ПолучитьСсылкуАвторизации": "GetAuthorizationLink", "ID счетчика для изменения": "Counter ID to change", "Преобразование типов (OPI": "Type conversion (OpenIntegrations", "Изменить артикулы товаров": "Update products articles", "Использовать \"../../tools": "Use \"../../tools", "Создать товары по Ozon ID": "Create products by Ozon ID", "Идентификатор комментария": "Comment identifier", -"ВыполнитьЗапросМультипарт": "ExecuteMultipartRequest", "ОформитьКлиентскийВозврат": "CreateCustomerRefund", "ПустаяСхемаDeleteDatabase": "EmptySchemeDeleteDatabase", "Получить публичный объект": "Get public object", @@ -5861,20 +5858,21 @@ "Изменить календарь списка": "Edit list calendar", "ПолучитьИнформациюОТоваре": "GetProductInformation", "Включить уведомления чата": "Enable chat notifications", -"VK_ПолучитьСписокПодборок": "VK_GetSelectionList", "ОбновитьКоличествоТоваров": "UpdateProductsStocks", "ПолучитьСписокФайлов (все": "GetFilesList (full", "ПереключениеОбщегоДоступа": "TogglePublicAccess", "Новое наименование стадии": "New stages name", +"Устанавливает тему канала": "Sets the channel topic", +"Получить число участников": "Get participant count", +"ПолучитьСсылкуАвторизации": "GetAuthorizationLink", "URL для установки Webhook": "URL for setting up Webhook", -"НаправлениеПоиска.СНачала": "SearchDirection.FromBegin", +"VK_ПолучитьСписокПодборок": "VK_GetSelectionList", "Проверка_БитриксХранилища": "Check_BitrixStorage", -"ПолучитьИнформациюОМодели": "GetModelInformation", "Проверка_ТелеграмДокумент": "Check_TelegramDocument", +"НаправлениеПоиска.СНачала": "SearchDirection.FromBegin", "ПолучитьНастройкиМагазина": "GetCampaignSettings", "ДобавитьИдентификаторЧата": "AddChatIdentifier", "Получить список магазинов": "Get markets list", -"VK_УдалитьТоварИзПодборки": "VK_RemoveProductFromCollection", "VK_ДобавитьТоварВПодборку": "VK_AddProductToCollection", "Получить описание события": "Get event description", "УстановитьБезопасныйРежим": "SetSafeMode", @@ -5883,50 +5881,52 @@ "СоздатьУдалитьКомментарий": "CreateDeleteComment", "openintegrations.dev/docs": "en.openintegrations.dev/docs", "текст после ответа модели": "text after the model's response", -"VK_ИзменитьСвойствоТовара": "VK_EditProductProperty", -"ПолучитьИнформациюОГруппе": "GetGroupInformation", +"ПолучитьИнформациюОМодели": "GetModelInformation", +"VK_УдалитьТоварИзПодборки": "VK_RemoveProductFromCollection", "Проверить доступ к задаче": "Check task acesses for users", +"VK_ИзменитьСвойствоТовара": "VK_EditProductProperty", +"ОбновитьИзображенияТовара": "UpdateProductImages", +"ДобавитьПараметрКоллекция": "AddCollectionParam", +"СформироватьТекстTruncate": "FormTextTruncate", +"Преобразование типов (ОПИ": "Type conversion (OpenIntegrations", +"Тестовый комментарий (изм": "Test comment (change", +"ПолучитьНастройкиКабинета": "GetBusinessSettings", +"Преобразовать код в токен": "Convert code to token", "Открытый пакет интеграций": "OpenIntegrations", "Идентификатор типа товара": "Item type identifier", -"Создать событие календаря": "Create calendar event", -"Преобразовать код в токен": "Convert code to token", "УстановитьКартинкуПрофиля": "SetProfilePicture", -"Тестовый комментарий (изм": "Test comment (change", -"Преобразование типов (ОПИ": "Type conversion (OpenIntegrations", -"СформироватьТекстTruncate": "FormTextTruncate", -"ПолучитьНастройкиКабинета": "GetBusinessSettings", -"ДобавитьПараметрКоллекция": "AddCollectionParam", -"Получить число участников": "Get participant count", +"Создать событие календаря": "Create calendar event", "ОбработатьСписокКластеров": "ProcessClustersList", -"Токен авторизации (Api-Key": "Authorization token (Api-Key", -"Telegram_ОтправитьКартинку": "Telegram_SendPicture", -"Telegram_ОтправитьДокумент": "Telegram_SendDocument", +"ПолучитьИнформациюОГруппе": "GetGroupInformation", "УдалитьПустыеПоляКоллекции": "RemoveEmptyCollectionFields", "ПолучитьСтадииКанбана (хук": "GetKanbanStages (wh", -"ДобавитьСтадиюКанбана (хук": "AddKanbanStage (wh", +"Telegram_ОтправитьДокумент": "Telegram_SendDocument", "ГК_СоздатьУдалитьКалендарь": "GC_CreateDeleteCalendar", +"Telegram_ОтправитьКартинку": "Telegram_SendPicture", "Возврат лога в виде строки": "Return the log as a string", "Скрыть главную тему форума": "Hide main forum thread", "Сформировать блок картинку": "Generate image block", "Telegram_УстановитьWebhook": "Telegram_SetWebhook", -"Телеграм_УстановитьWebhook": "TelegramAPI_SetWebhook", -"Не удалось заменить origin": "Cant replace origin", +"Выгрузить модель из памяти": "Unload model from memory", +"ДобавитьСтадиюКанбана (хук": "AddKanbanStage (wh", +"ВыполнитьЗапросSQL (Insert": "ExecuteSQLQuery (Insert", "Неподдерживаемое сообщение": "Unsupported message", "СлужебныеПроцедурыИфункции": "ServiceProceduresAndFunctions", "ДобавитьКомментарийНовости": "AddPostComment", "ПолучитьПользователей (хук": "GetUsers (wh", -"ВыполнитьЗапросSQL (Insert": "ExecuteSQLQuery (Insert", "ЗагрузитьФайлВКаталог (хук": "UploadFileToFolder (wh", "ПолучитьСписокКомментариев": "GetCommentList", "ПодключитьРасширение (путь": "ConnectExtension (path", "Дата установки трудозатрат": "Date the record was set", +"Токен авторизации (Api-Key": "Authorization token (Api-Key", "Полужирный текст сообщения": "Bold text", "ВывестиСообщениеИсключения": "DisplayExceptionMessage", -"МинимальныйРазмерДляПотока": "MinimumStreamSize", -"Создает TCP/TLS соединение": "Creates a TCP/TLS connection", +"Телеграм_УстановитьWebhook": "TelegramAPI_SetWebhook", +"Загрузить файл в хранилище": "Upload file to a storage", +"ПолучитьСтруктуруЛида (хук": "GetLeadStructure (wh", "ДобавитьOAuthV1Авторизацию": "AddOAuthV1Authorization", -"ТекущийПуть, ТекущиеДанные": "CurrentPath, CurrentData", "ПолучитьИнформациюОбУценке": "GetDiscountInformation", +"Не удалось заменить origin": "Cant replace origin", "ВывестиСправкуПоПараметрам": "DisplayParameterHelp", "Bitrix24_КопироватьКаталог": "Bitrix24_CopyFolder", "Создать рекламную кампанию": "Create advertising campaign", @@ -5936,9 +5936,8 @@ "Это сообщение было удалено": "This message was deleted", "ID чата для отправки файла": "Chat ID for sending", "ИмяФайла, Вид + Расширение": "FileName, View + Extension", +"Создает TCP/TLS соединение": "Creates a TCP/TLS connection", "ПолучитьИсториюЗадачи (хук": "GetTaskHistory (wh", -"ПолучитьСтруктуруЛида (хук": "GetLeadStructure (wh", -"Фильтры для отбора товаров": "Product filters", "Access key для авторизации": "Access key for authorization", "Очищает значение в ячейках": "Clears the value in cells", "ПолучитьЗначенияРекурсивно": "GetValuesRecursively", @@ -5949,39 +5948,39 @@ "УстановитьШифрованиеБакета": "PutBucketEncryption", "ЗаполнитьПоляЗапросаТовара": "FillProductRequestFields", "ЯДиск_ЗагрузитьУдалитьФайл": "YDisk_UploadDeleteFile", -"Выгрузить модель из памяти": "Unload model from memory", +"ТекущийПуть, ТекущиеДанные": "CurrentPath, CurrentData", +"Фильтры для отбора товаров": "Product filters", "СформироватьСтруктуруТегов": "FormTagsStructure", -"ПроверитьДоступностьБакета": "HeadBucket", +"ПолучитьСтруктуруКалендаря": "GetCalendarStructure", "Название компании контакта": "Name of the contact company", -"ПолучитьСтатусУчетаВремени": "GetTimekeepingStatus", "НормализоватьТекстовыйВвод": "NormalizeTextInput", "Получить информацию канала": "Get channel info", "ID сообщения для изменения": "ID of the message to be edited", "Очистить очередь сообщений": "Clear message queue", "Telegram_СоздатьТемуФорума": "Telegram_CreateForumTopic", -"Проверка_ВККартинкаАльбома": "Check_VKAlbumPicture", "ОтправитьМедиагруппу (доки": "SendMediaGroup (docs", "СоздатьПост (одна картинка": "CreatePost (one picture", "Ожидать подключения !NOCLI": "Await connections !NOCLI", "ГринДобавлениеПользователя": "GreenAddMember", "ID оригинального сообщения": "Original message ID", +"Проверка_ВККартинкаАльбома": "Check_VKAlbumPicture", +"ПолучитьСтатусУчетаВремени": "GetTimekeepingStatus", "СформироватьЗначенияВыбора": "FormSelectionValues", -"Получить шифрование бакета": "Get bucket encryption", -"Телефон истинного продавца": "The true sellers phone number", -"ПолучитьИнформациюОТаблице": "GetTableInformation", -"ОтправитьУведомлениеОВводе": "SendWritingNotification", -"СтруктураАдресаОтправления": "SendingAddressStructure", -"Исключить участника группы": "Exclude group member", -"ПолучитьДанныеПользователя": "GetUserData", -"ЗапросТипУстановленВручную": "RequestTypeSetManualy", -"КраткоеПредставлениеОшибки": "BriefErrorDescription", "ИсключитьПользователейЧата": "RemoveChatMembers", +"КраткоеПредставлениеОшибки": "BriefErrorDescription", +"ЗапросТипУстановленВручную": "RequestTypeSetManualy", +"ПолучитьДанныеПользователя": "GetUserData", "ПоместитьФайлВКорзину (хук": "MarkFileAsDeleted (wh", +"ОтправитьУведомлениеОВводе": "SendWritingNotification", +"ПолучитьИнформациюОТаблице": "GetTableInformation", +"Телефон истинного продавца": "The true sellers phone number", +"Получить шифрование бакета": "Get bucket encryption", +"СтруктураАдресаОтправления": "SendingAddressStructure", +"ЯМетрика_УправлениеМетками": "YaMetrika_TagsManagement", "Bitrix24_ВозобновитьЗадачу": "Bitrix24_RenewTask", +"МинимальныйРазмерДляПотока": "MinimumStreamSize", "Локальный каталог источник": "Local source catalog", -"ПолучитьСтруктуруКалендаря": "GetCalendarStructure", "Если вам необходим чат-бот": "If you need a chatbot", -"Получает комментарий по ID": "Gets comment by ID", "ДобавитьПользователяКФайлу": "AddUserToFile", "Отключает уведомлений чата": "Disable chat notifications", "Изменить событие календаря": "Update calendar event", @@ -5995,7 +5994,6 @@ "Отключить уведомления чата": "Disable chat notifications", "Массив соответствий файлов": "Array of file mappings", "Телеграм_ОтправитьКартинку": "TelegramAPI_SendImage", -"Добавляет записи в таблицу": "Adds new rows to the table", "Мне больше нравится желтый": "I like yellow more", "Структура заполнения опции": "Data structure for option", "Получить описание контакта": "Get contact description", @@ -6005,11 +6003,13 @@ "РаботаССобытиямиКалендарей": "CalendarEventsManagement", "Структура Из КлючИЗначение": "Structure Of KeyAndValue", "ЯДиск_ПолучитьСписокФайлов": "YDisk_GetFileList", -"ЯМетрика_УправлениеМетками": "YaMetrika_TagsManagement", -"Загрузить файл в хранилище": "Upload file to a storage", -"ПолучитьСсылкуНаСкачивание": "GetDownloadLink", -"Получить очередь сообщений": "Get message queue", -"Secret key для авторизации": "Secret key for authorization", +"ПроверитьДоступностьБакета": "HeadBucket", +"Получает комментарий по ID": "Gets comment by ID", +"Добавляет записи в таблицу": "Adds new rows to the table", +"Исключить участника группы": "Exclude group member", +"Закрыть подключение !NOCLI": "Close connection !NOCLI", +"ЗакрытьПодключение (запрос": "CloseConnection (query", +"ОбновитьЗаписи (количество": "UpdateRecords (amount", "ОдобритьЗаявкуНаВступление": "ApprovePending", "Признак использования gzip": "Flag for gzip using", "ВыполнитьЗапросSQL (Create": "ExecuteSQLQuery (Create", @@ -6019,9 +6019,8 @@ "Получить событие календаря": "Get calendar event", "Ноушн_СоздатьСтраницуВБазу": "Notion_CreatePageInDatabase", "ПолучитьВнешнююСсылкуФайла": "GetFileExternalLink", +"ЗагрузитьЧастьОбъекта (ЗЗЧ": "UploadObjectPart (FPU", "СоздатьРекламноеОбъявление": "CreateAd", -"СлужебныеПроцедурыИФункции": "Private", -"ГринИсключениеПользователя": "GreenExcludeMember", "Массив файлов для загрузки": "Array of files to be uploaded", "Создать подключение !NOCLI": "Create connection !NOCLI", "СформироватьКнопкуДействия": "MakeActionButton", @@ -6033,36 +6032,37 @@ "ЗакрытьТемуФорума (главная": "CloseForumTopic (main", "ЧислоСтандартныхПараметров": "NumberOfStandardParameters", "Удаляет набор тегов бакета": "Deletes the bucket tag set", +"Secret key для авторизации": "Secret key for authorization", "ИзменитьСтатусПользователя": "ChangeUserStatus", -"ЗагрузитьЧастьОбъекта (ЗЗЧ": "UploadObjectPart (FPU", -"Приостановить учет времени": "Stop timekeeping", -"Получить статистику постов": "Get post statistics", -"ИзменитьПодразделение (хук": "UpdateDepartment (wh", -"Добавляет товар в подборку": "Adds a product to the selection", +"ГринИсключениеПользователя": "GreenExcludeMember", +"Telegram_ОткрытьТемуФорума": "Telegram_OpenForumTopic", +"ПолучитьСсылкуНаСкачивание": "GetDownloadLink", "Неопределено, Произвольный": "Undefined, Arbitrary", "Получить список календарей": "Get list of calendars", -"ПолучитьЧеклистЗадачи (хук": "GetTasksChecklist (wh", +"Добавляет товар в подборку": "Adds a product to the selection", "Скопируйте новый **токен**": "Copy the new **token**", +"ИзменитьПодразделение (хук": "UpdateDepartment (wh", "массив URL картинок товара": "array of product images URLs", "Изменить свойства страницы": "Edit page properties", "признак повторного лида (Y": "reused lead flag (Y", "Тип календаря: user, group": "Calendar type: user, group", -"Telegram_ОткрытьТемуФорума": "Telegram_OpenForumTopic", -"ДобавитьВидеообложкуТовара": "AddProductVideoCover", +"ПолучитьЧеклистЗадачи (хук": "GetTasksChecklist (wh", +"СлужебныеПроцедурыИФункции": "Private", +"Телеграм_ОтправитьДокумент": "TelegramAPI_SendDocument", "Разрешен наложенный платеж": "Cash on delivery allowed", "ПреобразоватьВариантВыбора": "ConvertSelectionOption", "Создать/Архивировать канал": "Create/Archive channel", -"Телеграм_ОтправитьДокумент": "TelegramAPI_SendDocument", "ОтправитьСообщение (диалог": "SendMessage (dialog", "Telegram_ЗакрытьТемуФорума": "Telegram_CloseForumTopic", "Этот календарь был изменен": "This calendar has been changed", "ПолучитьТипыКолонокТаблицы": "GetTableColumnTypes", "Управление подразделениями": "Departments management", +"Получить статистику постов": "Get post statistics", "Завершить загрузку частями": "Finish parts upload", "ПолучитьИнформациюОТоварах": "GetProductsInformation", -"ОбновитьЗаписи (количество": "UpdateRecords (amount", +"ДобавитьВидеообложкуТовара": "AddProductVideoCover", "Получить код подтверждения": "Get confirmation code", -"ПолучитьТрудозатратыЗадачи": "GetTaskTimeAccounting", +"Приостановить учет времени": "Stop timekeeping", "Слак_ПолучитьСписокКаналов": "Slack_GetChannelList", "Наименование новой таблицы": "New table name", "ИспользоватьКодированиеURL": "UseURLEncoding", @@ -6073,65 +6073,63 @@ "Bitrix24_ПолучитьХранилище": "Bitrix24_GetStorage", "Код КЛАДР. Устаревшее поле": "CLADR code. Deprecated field", "УдалитьПустыеКлючиЗначения": "RemoveEmptyKeyValues", -"Документация Neocities API": "Neocities API docs", "УстановитьПроизвольноеПоле": "SetCustomField", +"Проверка_ВКВариантСвойства": "Check_VKPropVariant", "ГарантироватьТелоКоллекцию": "GuaranteeBodyCollection", -"ЗакрытьПодключение (запрос": "CloseConnection (query", "Dropbox_ЗагрузитьФайлПоURL": "Dropbox_UploadFileByURL", "Число знаков после запятой": "Number of decimal places", "VK_ИзменитьПодборкуТоваров": "VK_EditProductCollection", "ИзменитьСтадиюКанбана (хук": "UpdateKanbansStage (wh", "Bitrix24_ПереименоватьФайл": "Bitrix24_RenameFile", "ОткрытьТемуФорума (главная": "OpenForumTopic (main", -"Закрыть подключение !NOCLI": "Close connection !NOCLI", "ОбработатьТабуляциюСправки": "HandleHelpTabulation", "Получить информацию о чате": "Get information about the chat room", "ОжидатьЗавершенияОбработки": "WaitForProcessingCompletion", +"Получить категории товаров": "Get product categories", "URL к видео для добавления": "URL of the video", "ОтправитьФайлПоURL (цитата": "SendFileByURL (quote", -"Проверка_ВКВариантСвойства": "Check_VKPropVariant", "Описание тестового события": "TestEventDescription", -"УстановитьОтметкуПрочтения": "SetReadMark", -"Получить категории товаров": "Get product categories", -"ИспользоватьПоляТелаВOAuth": "UseBodyFiledsAtOAuth", +"Документация Neocities API": "Neocities API docs", +"Ошибка удаления файла базы": "Database file deletion error", "Мой другой новый календарь": "My other new calendar", +"ПолучитьТрудозатратыЗадачи": "GetTaskTimeAccounting", "ЗагрузкаИОбновлениеТоваров": "UploadingAndUpdatingProducts", "VK_СоздатьТоварСоСвойством": "VK_CreateProductWithProp", "ПолучитьПодразделения (хук": "GetDepartments (wh", "ТаблицаСправкаПоПараметрам": "ParamsHelpTable", "Создать ссылку-приглашение": "Create invitation link", -"Ошибка удаления файла базы": "Database file deletion error", "ИзменитьТрудозатратыЗадачи": "UpdateTaskTimeAccounting", "Установить картинку группы": "Set group picture", "Telegram_УдалитьТемуФорума": "Telegram_DeleteForumTopic", "Текст сообщения под файлом": "Message text below the file", -"ДобавитьТрудозатратыЗадачи": "AddTaskTimeAccounting", "Наименование подразделения": "Department name", +"УстановитьОтметкуПрочтения": "SetReadMark", "Получить ответ в контексте": "Get context response", -"Content ID, если необходим": "Content ID, if required", -"ПреобразоватьПользователей": "ConvertUsers", -"Получить информацию о боте": "Get bot information", -"Структура из КлючИЗначение": "Structure of KeyAndValue", +"ДобавитьТрудозатратыЗадачи": "AddTaskTimeAccounting", +"Получить очередь сообщений": "Get message queue", +"УстановитьФайлОтвета (тело": "SetResponseFile (body", +"Бренд на иностранном языке": "Brand in a foreign language", "СледующийОбязательныйТокен": "NextRequiredToken", "ПолучитьИмяВременногоФайла": "GetTempFileName", -"Бренд на иностранном языке": "Brand in a foreign language", -"УстановитьФайлОтвета (тело": "SetResponseFile (body", -"OPI получение данных тестов": "OPI test data retrieval", -"ДобавитьПолучателейКНовости": "AddPostRecipients", -"Добавить участника в группу": "Add group member", -"Твиттер_СоздатьТвитСОпросом": "Twitter_CreateTweetWithPoll", -"Тип отправляемого сообщения": "TypeOfSentMessage", -"НачатьВыполнениеЗадачи (хук": "StartTask (wh", -"Удаляет набор тегов объекта": "Deletes an objects tag set", -"НайтиЗначенияХарактеристики": "SearchAttributeValue", -"Тестовый запрос для сервера": "Test request for server", -"ОбновлятьТокенКаждыеДваЧаса": "UpdateTokenEveryTwoHours", -"ПолучитьСтруктуруЦеныТовара": "GetProductPriceStructure", +"Получить информацию о боте": "Get bot information", +"ПреобразоватьПользователей": "ConvertUsers", +"Content ID, если необходим": "Content ID, if required", +"Структура из КлючИЗначение": "Structure of KeyAndValue", +"ИспользоватьПоляТелаВOAuth": "UseBodyFiledsAtOAuth", "Забытый в прошлый раз текст": "The text I forgot last time", "ГК_ПолучитьСписокКалендарей": "GC_GetCalendarList", +"ОбновлятьТокенКаждыеДваЧаса": "UpdateTokenEveryTwoHours", +"НайтиЗначенияХарактеристики": "SearchAttributeValue", +"Тестовый запрос для сервера": "Test request for server", +"УдалитьБазуДанных (закрытие": "DeleteDatabase (close", +"НачатьВыполнениеЗадачи (хук": "StartTask (wh", +"Тип отправляемого сообщения": "TypeOfSentMessage", +"Твиттер_СоздатьТвитСОпросом": "Twitter_CreateTweetWithPoll", "Очистить основной календарь": "Clear primary calendar", -"Создать каталог в хранилище": "Create folder at the storage", -"Получить комменатрий задачи": "Get task comment", +"Добавить участника в группу": "Add group member", +"Удаляет набор тегов объекта": "Deletes an objects tag set", +"ДобавитьПараметрФлагКоманды": "AddCommandFlagParameter", +"Описание в документации API": "Description in the API documentation", "Задача изменена, расходимся": "The task has been changed, let's split up", "Методы работы с Notion (ОПИ": "Notion methods (OpenIntegrations", "Проверка_БитриксСписокЗадач": "Check_BitrixTasksList", @@ -6141,16 +6139,15 @@ "Установить JSON тело !NOCLI": "Set JSON body !NOCLI", "РаботаСВнешнимиКомпонентами": "AddinsManagement", "ОтправитьГолосовоеСообщение": "SendVoice", -"Описание в документации API": "Description in the API documentation", "ДобавитьПользователейКПапке": "AddUsersToFolder", -"УдалитьБазуДанных (закрытие": "DeleteDatabase (close", +"ДобавитьПолучателейКНовости": "AddPostRecipients", +"Создать каталог в хранилище": "Create folder at the storage", "Новое наименование каталога": "New folders name", -"Ключ > ID, Значение > Emoji": "Key > ID, Value > Emoji", +"Структура JSON данных ячеек": "The structure of the JSON cells data", "ДополнитьКомплексныйАтрибут": "CompleteComplexAttribute", -"Получить информацию о диске": "Get disk information", +"Получить комменатрий задачи": "Get task comment", "!OInt МБайт = КБайт * КБайт": "!OInt MB = KB * KB", "Удалить картинку из альбома": "Deletes an image from the album", -"Структура JSON данных ячеек": "The structure of the JSON cells data", "CommonModule.OPI_ЗапросыSQL": "CommonModule.OPI_SQLQueries", "!OInt ВыполнитьСборкуМусора": "!OInt RunGarbageCollection", "СоздатьБазуДанных (открытие": "CreateDatabase (open", @@ -6160,8 +6157,8 @@ "дата публикации комментария": "comment publication date", "ОтозватьПраваАдминистратора": "RevokeAdminRights", "Логин пользователя postgres": "Postgres user login", +"Ключ > ID, Значение > Emoji": "Key > ID, Value > Emoji", "СоздатьСистемноеУведомление": "CreateSystemNotification", -"Начать наблюдать за задачей": "Start watching a task", "Разложить JSON на параметры": "Parse JSON to Parameters", "ПолучитьМетаданныеКалендаря": "GetCalendarMetadata", "Кодировка получаемых данных": "Encoding of received data", @@ -6169,44 +6166,45 @@ "ПолучитьСтатусЗагрузкиПоURL": "GetUploadStatusByURL", "Проверка_БитриксАвторизация": "Check_BitrixAuth", "Удаляет сообщение в диалоге": "Deletes a dialog message", -"Получить настройки инстанса": "Get instance settings", +"ДропБокс_ЗагрузитьФайлПоURL": "DropboxAPI_UploadFileByURL", "ID чата приемника сообщения": "Message receiver chat ID", "Получает набор тегов бакета": "Gets the bucket tag set", "Получить структуру счетчика": "Get counter structure", -"ДобавитьПараметрФлагКоманды": "AddCommandFlagParameter", +"Получить информацию о диске": "Get disk information", +"Начать наблюдать за задачей": "Start watching a task", "Поместить каталог в корзину": "Mark folder as deleted", -"НастройкиСовместногоДоступа": "SharedAccessSettings", +"Проверка_ВКСтатистикаПостов": "Check_VKPostsStatistic", "СоздатьЗаголовокАвторизации": "CreateAuthorizationHeader", -"Получить информацию о файле": "Get information about file", +"УправлениеЭлементомЧеклиста": "ChecklistElementManagement", "Сохранить картинку в альбом": "Save image to album", "Bitrix24_ВключитьЗвукЗадачи": "Bitrix24_UnmuteTask", -"Включает уведомления в чате": "Enable chat notifications", "Создать/Удалить кооментарий": "Create/Delete Comment", "Обновить количество товаров": "Update products stocks", "СформироватьТекстКоличества": "FormCountText", "ПолучитьСписокВерсийОбъекта": "GetObjectVersionList", "Массив соответствий товаров": "Array of product maps", "Telegram_ЗакрепитьСообщение": "Telegram_PinMessage", -"Получить настройки кабинета": "Get business settings", +"OPI получение данных тестов": "OPI test data retrieval", "Получает QR-код авторизации": "Receives authorization QR code", "УстановитьНастройкиИнстанса": "SetInstanceSettings", +"Получить информацию о файле": "Get information about file", +"Включает уведомления в чате": "Enable chat notifications", "ОтправитьЭфемерноеСообщение": "SendEphemeralMessage", -"Структура настроек инстанса": "Structure of instance settings", -"ОтветитьНаСобытиеКлавиатуры": "AnswerButtonEvent", -"Bitrix24_СкопироватьКаталог": "Bitrix24_MakeFolderCopy", -"НастройкиИАдминистрирование": "SettingsAndAdministartion", -"Признак использования HTTPS": "HTTPS usage flag", -"URL для кнопки под историей": "URL for button under the story", -"ПолучитьИнформациюОКаталоге": "GetFolderInformation", -"Добавить комментарий задачи": "Add comment to task", -"СформироватьТекстСортировки": "FormSortingText", "Добавить задачу в избранное": "Add task to favorites list", +"Добавить комментарий задачи": "Add comment to task", +"ПолучитьИнформациюОКаталоге": "GetFolderInformation", +"URL для кнопки под историей": "URL for button under the story", +"СформироватьТекстСортировки": "FormSortingText", +"НастройкиИАдминистрирование": "SettingsAndAdministartion", +"Bitrix24_СкопироватьКаталог": "Bitrix24_MakeFolderCopy", +"ОтветитьНаСобытиеКлавиатуры": "AnswerButtonEvent", +"Признак использования HTTPS": "HTTPS usage flag", "ПодключитьсяИПолучитьДанные": "ConnectAndReceiveData", -"Проверка_ВКСтатистикаПостов": "Check_VKPostsStatistic", +"Удаляет существующую модель": "Deletes an existing model", +"Структура настроек инстанса": "Structure of instance settings", +"ПолучитьСтруктуруЦеныТовара": "GetProductPriceStructure", "Получает информацию о файле": "Gets information about the file", -"УправлениеЭлементомЧеклиста": "ChecklistElementManagement", "интервал между повторениями": "repetition interval", -"ПолучитьОтложенныеСообщения": "GetScheduledMessages", "Telegram_ОткрепитьСообщение": "Telegram_UnpinMessage", "ВК_СоздатьРекламнуюКампанию": "VKAPI_CreateAdCampaign", "Телеграм_ПереслатьСообщение": "TelegramAPI_ForwardMessage", @@ -6219,26 +6217,26 @@ "Оформить клиентский возврат": "Create customer refund", "ПолучитьСодержимоеХранилища": "GetStorageObjects", "ИзменитьМетаданныеКалендаря": "EditCalendarMetadata", +"ЗакрепитьОткрепитьСообщение": "PinUnpinMessage", "Страница выборки результата": "Result page", -"Получает состояние инстанса": "Gets instance status", "ПолучитьИнформациюОбОбъекте": "GetObjectInformation", "ВыполнитьЗапрос (выполнение": "ExecuteRequest (execution", "ДобавитьПользователейКФайлу": "AddUsersToFile", "цена товара с учётом скидок": "product price with discounts", "ОзонАПИ_ЦеныИОстаткиТоваров": "OzonAPI_PricesAndStocks", "ЗаписатьПараметрыМультипарт": "WriteMultipartParameters", -"ЗакрепитьОткрепитьСообщение": "PinUnpinMessage", "VK_СохранитьКартинкуВАльбом": "VK_SavePictureToAlbum", "ПодключитьВнешнююКомпоненту": "AttachAddIn", "ОсновноеУправляющееДействие": "PrimaryControlAction", "Новый импортированный товар": "New imported product", -"Удаляет существующую модель": "Deletes an existing model", -"ДропБокс_ЗагрузитьФайлПоURL": "DropboxAPI_UploadFileByURL", -"URL для перехода в браузере": "URL for browser transition", -"ВК_ПолучитьКатегорииТоваров": "VKAPI_GetProductCategories", -"ПолучитьСписокХранилищ (хук": "GetStoragesList (wh", +"НастройкиСовместногоДоступа": "SharedAccessSettings", +"ПолучитьОтложенныеСообщения": "GetScheduledMessages", +"Получает состояние инстанса": "Gets instance status", +"Получить настройки инстанса": "Get instance settings", +"НоушнАпи_СоздатьУдалитьБлок": "NotionAPI_CreateDeleteBlock", +"Ноушн_ПолучитьПользователей": "Notion_GetUsers", +"электронная почта заполнена": "email address is filled in", "Конец периода в формате ISO": "Period end in ISO format", -"Установить картинку профиля": "Set profile picture", "Dropbox_ПолучитьСписокТегов": "Dropbox_GetTagList", "СоздатьБазуДанных (удаление": "CreateDatabase (deleting", "Имя поля БД c обычным типом": "Name of field with regular type", @@ -6248,8 +6246,8 @@ "Получить состояние инстанса": "Get instance status", "Получить пользователей чата": "Get chat members", "Получить ссылку авторизации": "Get authorization link", +"ОтправитьДокумент (с именем": "SendDocument (with name", "Изменить комментарий задачи": "Update task comment", -"Массив каналов для отправки": "Array of channels for sending", "Код населенного пункта СДЭК": "CDEC locality code", "разрешение на методы Sheets": "Sheets methods permission", "Создет новое поле в таблице": "Creates a new field in the table", @@ -6262,25 +6260,24 @@ "ID альбома, если необходимо": "Album ID, if necessary", "Telegram_ПереслатьСообщение": "Telegram_ForwardMessage", "ПолучитьИнформациюОСтранице": "GetPageInfo", +"ПолучитьСписокХранилищ (хук": "GetStoragesList (wh", "Б24_УправленеПользователями": "B24_UsersManagement", -"ОтправитьДокумент (с именем": "SendDocument (with name", +"Установить картинку профиля": "Set profile picture", "ID пользователя исполнителя": "ID of responsible user", -"Описание структур см. здесь": "Structure description at", -"Путь к публикуемому объекту": "Path to the object to be published", -"ПереслатьГолосовоеСообщение": "ResendVoice", -"ЗаменитьКлавиатуруСообщения": "ReplaceMessageKeyboard", +"Получить количество товаров": "Get products stocks", +"ОбработатьПараметрКоллекцию": "ProcessCollectionParameter", +"ПолучитьСписокФайлов (Отбор": "GetFilesList (Filter", +"Путь к файлу для скачивания": "Path to the file for downloading", +"Код со страницы авторизации": "Code from the authorization page", +"Создать/Удалить тему форума": "Create/Delete forum topic", "Bitrix24_ДелегироватьЗадачу": "Bitrix24_DelegateTask", "Помечает новость как важную": "Mark post as important", +"ЗаменитьКлавиатуруСообщения": "ReplaceMessageKeyboard", +"ПереслатьГолосовоеСообщение": "ResendVoice", "УдалитьБазуДанных (открытие": "DeleteDatabase (open", -"Создать/Удалить тему форума": "Create/Delete forum topic", -"Код со страницы авторизации": "Code from the authorization page", -"Путь к файлу для скачивания": "Path to the file for downloading", -"ПолучитьСписокФайлов (Отбор": "GetFilesList (Filter", -"ОбработатьПараметрКоллекцию": "ProcessCollectionParameter", -"Получить количество товаров": "Get products stocks", "ПолучитьСписокСообщенийЧата": "GetChatMessagesList", -"СформироватьМассивИменЯчеек": "FormCellNameArray", -"Телеграм_ПолучитьОбновления": "TelegramAPI_GetUpdates", +"Массив каналов для отправки": "Array of channels for sending", +"ВыгнатьПользователяИзКанала": "KickUserFromChannel", "Получает квитанцию к заказу": "Gets a receipt for the order", "ID задачи добавления товара": "Add product task ID", "ОбработатьСекретыPostgreSQL": "ProcessSecretsPostgreSQL", @@ -6290,11 +6287,12 @@ "Установить заголовки !NOCLI": "Set headers !NOCLI", "Эта база была создана из 1С": "This base is from 1C", "VK_ПолучитьСтатистикуПостов": "VK_GetPostStatistics", -"ВыгнатьПользователяИзКанала": "KickUserFromChannel", "ВернутьСтандартныеПараметры": "ReturnStandardParameters", -"электронная почта заполнена": "email address is filled in", +"Описание структур см. здесь": "Structure description at", +"СформироватьМассивИменЯчеек": "FormCellNameArray", +"Телеграм_ПолучитьОбновления": "TelegramAPI_GetUpdates", "Проверка_ДропБоксМетаданные": "Check_DropboxMetadata", -"Telegram_ПолучитьОбновления": "Telegram_GetUpdates", +"Путь к публикуемому объекту": "Path to the object to be published", "УдалитьЗаявкуНаВызовКурьера": "DeleteCourierInvitation", "Получить настройки магазина": "Get campaign settings", "VK_СоздатьРекламнуюКампанию": "VK_CreateAdCampaign", @@ -6308,28 +6306,28 @@ "ОтклонитьЗаявкуНаВступление": "DisapprovePending", "Bitrix24_УдалитьКомментарий": "Bitrix24_DeleteComment", "ЗаписатьБуферДвоичныхДанных": "WriteBinaryDataBuffer", -"Загрузить по URL и получить": "Upload by URL and get", -"Ноушн_ПолучитьПользователей": "Notion_GetUsers", +"ID стены расположения поста": "ID of the wall where the post is located", +"ИсключитьПользователяИзЧата": "DeleteUserFromChat", "Удалить календарь из списка": "Remove calendar from list", "Временная отметка сообщения": "Message timestamp", "УдалитьУведомлениеИзОчереди": "DeleteNotificationFromQueue", "ЗакрытьПотокИПолучитьДанные": "CloseStreamReceiveData", "СоздатьЗаявкуНаВызовКурьера": "CreateCourierInvitation", "ПолучитьОбъект (большой, ДД": "GetObject (big, BD", -"Bitrix24_СоздатьКомментарий": "Bitrix24_CreateComment", "Удаляет подразделение по ID": "Delets department by ID", "Проверка_БитриксКомментарий": "Check_BitrixComment", "ID целевой стены или группы": "ID of the target wall or group", "Получить список результатов": "Get results list", "Отменить публикацию объекта": "Unpublish object", -"ID стены расположения поста": "ID of the wall where the post is located", -"ИсключитьПользователяИзЧата": "DeleteUserFromChat", +"Получить настройки кабинета": "Get business settings", +"Загрузить по URL и получить": "Upload by URL and get", "СоздатьТвитВидео (одиночная": "CreateVideoTweet (single", -"Bitrix24_ПереместитьКаталог": "Bitrix24_MoveFolder", +"Bitrix24_СоздатьКомментарий": "Bitrix24_CreateComment", +"Создает новое подразделение": "Creates a new department", "CommonModule.OPI_Компоненты": "CommonModule.OPI_AddIns", +"Telegram_ПолучитьОбновления": "Telegram_GetUpdates", "важность: high, normal, low": "importance: high, normal, low", "Методы интеграции с VK (ОПИ": "VK integration methods (OpenIntegrations", -"ПолучитьСсылкуДляСкачивания": "GetDownloadLink", "ПолучитьСписокПользователей": "GetUserList", "ПереслатьСообщение (простое": "ForwardMessage (simple", "ВК_СохранитьУдалитьКартинку": "VKAPI_SaveDeleteImage", @@ -6337,47 +6335,49 @@ "Отправить/Удалить сообщение": "Send/Delete message", "Создать черновик заявки FBO": "Create FBO draft", "`УстановитьАлгоритмOAuthV1`": "`SetOAuthV1Algorithm`", -"НоушнАпи_СоздатьУдалитьБлок": "NotionAPI_CreateDeleteBlock", -"СоздатьТвитГифки (одиночная": "CreateGifTweet (single", -"Создает новое подразделение": "Creates a new department", +"URL для перехода в браузере": "URL for browser transition", +"Bitrix24_ПереместитьКаталог": "Bitrix24_MoveFolder", +"ПолучитьСсылкуДляСкачивания": "GetDownloadLink", "СформироватьТестыАссертсCLI": "FormAssertsTestsCLI", -"ID уведомления для удаления": "Notification ID", -"Истина > BOM будет добавлен": "True > BOM will be added", -"УправлениеПубличнымДоступом": "ManagePublicAccess", -"Получить план задач на день": "Get users daily tasks plan", -"Получить события календарей": "Get calendar events", -"ВК_СоздатьТоварСоСвойствами": "VKAPI_CreateProductWithProperties", -"ДобавитьИменованныйПараметр": "AddNamedParam", -"Добавить календарь в список": "Add calendar to list", +"СоздатьТвитГифки (одиночная": "CreateGifTweet (single", "ОчиститьКоллекциюРекурсивно": "ClearCollectionRecursively", +"ДобавитьИменованныйПараметр": "AddNamedParam", +"ВК_СоздатьТоварСоСвойствами": "VKAPI_CreateProductWithProperties", +"ВК_ПолучитьКатегорииТоваров": "VKAPI_GetProductCategories", +"Добавить календарь в список": "Add calendar to list", +"Получить план задач на день": "Get users daily tasks plan", +"УправлениеПубличнымДоступом": "ManagePublicAccess", +"Истина > BOM будет добавлен": "True > BOM will be added", +"ID уведомления для удаления": "Notification ID", +"Получить события календарей": "Get calendar events", "ОткрытьСоединение (закрытие": "CreateConnection (closing", "Наименование нового каталога": "Name of new folder", "Создает новую таблицу в базе": "Creates a new table in the base", +"Другой комментарий к новости": "Another comment", "ИзменитьИмяГлавнойТемыФорума": "EditMainForumTopicName", "Получить статус пользователя": "Get user status", "ПолучитьСписокВерсийОбъектов": "ListObjectVersions", "Получить информацию о товаре": "Get product information", -"ГринНазначениеАдминистратора": "GreenAdminSet", "Изменить статус пользователя": "Change user status", "ПолучитьНаборыЛокальныхПутей": "GetLocalPathsSets", "Слак_ПолучитьИнформациюОБоте": "Slack_GetBotInfo", -"Другой комментарий к новости": "Another comment", -"Добавить видеообложку товара": "Add product video cover", +"Установить шифрование бакета": "Put bucket encryption", "Получить черновик заявки FBO": "Get FBO draft", "Получить информацию о группе": "Get group information", "Время ожидания новых событий": "Waiting time for new events", -"Установить шифрование бакета": "Put bucket encryption", "Получить ссылку на сообщение": "Get message link", "ПереместитьФайлВКаталог (хук": "MoveFileToFolder (wh", "шаблон промптов новой модели": "new model prompt template", "признак доступен для всех (Y": "feature is available for all (Y", +"СледующаяВложенностьДоступна": "NextNestingAvailable", "СоздатьСобытиеКалендаря (хук": "CreateCalendarEvent (wh", -"ПолучитьСтруктуруКомментария": "GetCommentStructure", "ПолучитьЗаявкуНаВызовКурьера": "GetCourierInvitation", -"Mongo_УправлениеБазамиДанных": "Mongo_DatabaseManagement", -"Подробнее в документации API": "More details in the API documentation", -"ЗагрузитьКодыАктивацииТовара": "UploadProductActivationCodes", +"Добавить видеообложку товара": "Add product video cover", +"ПолучитьСтруктуруКомментария": "GetCommentStructure", +"DataProcessor.OPI_HTTPКлиент": "DataProcessor.OPI_HTTPClient", +"Массив соответствий подборок": "Array of selection maps", "НоушнАпи_СоздатьИзменитьБазу": "NotionAPI_CreateUpdateBase", +"CommonModule.OPI_ЗапросыHTTP": "CommonModule.OPI_HTTPRequests", "ПолучитьСтруктуруСделки (хук": "GetDealStructure (wh", "СоздатьТаблицу (ошибка имени": "CreateTable (name error", "Новый массив блоков вложений": "New blocks array", @@ -6387,7 +6387,6 @@ "ПрекратитьНаблюдатьЗаЗадачей": "StopWatchingTask", "Изменяет параметры календаря": "Changes the calendar settings", "Пароль пользователя postgres": "Postgres user password", -"DataProcessor.OPI_HTTPКлиент": "DataProcessor.OPI_HTTPClient", "URL картинки иконки страницы": "URL of the page icon image", "Отправить группу медиафайлов": "Send media group", "Результат выполнения запроса": "Result of query execution", @@ -6397,36 +6396,36 @@ "TODO: Вернуть проверку позже": "TODO: Return check later", "Создать рекламное объявление": "Create advertising post", "Новый текст пункта чек-листа": "New elements text", -"Массив соответствий подборок": "Array of selection maps", -"CommonModule.OPI_ЗапросыHTTP": "CommonModule.OPI_HTTPRequests", -"Проверка_ТелеграмМедиагруппа": "Check_TelegramMediaGroup", -"Аватар чата в base64 формате": "Base64 chat picture", -"массив обновляемых атрибутов": "array of updatable attributes", -"ID каталога размещения копии": "ID of copy destination folder", +"Подробнее в документации API": "More details in the API documentation", +"Mongo_УправлениеБазамиДанных": "Mongo_DatabaseManagement", +"ГринНазначениеАдминистратора": "GreenAdminSet", "Добавить комментарий новости": "Add comment to post", +"Добавляет новый внешний файл": "Adds a new external file", +"ID каталога размещения копии": "ID of copy destination folder", "Удалять только у отправителя": "Delete for sender only", -"Номер страницы выдачи списка": "Issue page number of the list", "Получить данные пользователя": "Get user data", "Bitrix24_ОтключитьЗвукЗадачи": "Bitrix24_MuteTask", "CommonTemplate.OPI_TCPКлиент": "CommonTemplate.OPI_TCPClient", "Получает описание поля с URL": "Gets the description of a URL field", "Получить список файлов папки": "Get list of folder files", "ГВ_ПолучитьСсылкуАвторизации": "GV_GetAuthorizationLink", -"Эти токены обновлять не надо": "These tokens do not need to be updated", +"Номер страницы выдачи списка": "Issue page number of the list", "идентификатор рабочей группы": "workgroup identifier", -"Получает информацию о канале": "Gets information about the channel", -"Работа с польз. полями задач": "Working with custom task fields", -"Получить трудозатраты задачи": "Get task time accounting", -"ПолучитьТекущегоПользователя": "GetCurrentUser", -"HEX основного цвета (#ffffff": "HEX primary color (#ffffff", -"Установить отметку прочтения": "Set read mark", -"Один или массив UUID заказов": "One or an array of order UUIDs", "ПолучитьСписокОтправленийFBO": "GetFBOShipmentsList", -"Структура параметров доступа": "Structure of access parameters", +"Один или массив UUID заказов": "One or an array of order UUIDs", +"Эти токены обновлять не надо": "These tokens do not need to be updated", +"Установить отметку прочтения": "Set read mark", +"HEX основного цвета (#ffffff": "HEX primary color (#ffffff", +"ПолучитьТекущегоПользователя": "GetCurrentUser", +"массив обновляемых атрибутов": "array of updatable attributes", +"Получить трудозатраты задачи": "Get task time accounting", +"Работа с польз. полями задач": "Working with custom task fields", +"Получает информацию о канале": "Gets information about the channel", +"ЗагрузитьКодыАктивацииТовара": "UploadProductActivationCodes", "ОтправитьСообщение (картинка": "SendMessage (picture", +"Аватар чата в base64 формате": "Base64 chat picture", +"Структура параметров доступа": "Structure of access parameters", "Не удалось заменить секреты!": "Failed to replace the secrets!", -"Проверка_БитриксНеопределено": "Check_BitrixUndefined", -"Добавляет новый внешний файл": "Adds a new external file", "ПреобразоватьBase64ВДвоичные": "ConvertBase64ToBinary", "Добавить трудозатраты задачи": "Add task time accounting", "Bitrix24_ДобавитьФайлВЗадачу": "Bitrix24_AttachFileToTopic", @@ -6436,23 +6435,24 @@ "ID сообщения для закрепления": "ID of the message to be pinned", "HEX цвет кнопок с # в начале": "HEX color of buttons with # at the beginning", "Скрывает главную тему форума": "Hides the main forum thread", +"Проверка_БитриксНеопределено": "Check_BitrixUndefined", "ПолучитьСоответствиеКартинки": "GetImageMap", -"УдалитьСобытиеКалендаря (хук": "DeleteCalendarEvent (wh", "Установить тип данных !NOCLI": "Set data type !NOCLI", "последний IP-адрес диапазона": "last IP address of the range", "Изменяет существующую сделку": "Modifies an existing deal", -"БитриксНастройкиУчетаВремени": "BitrixTimekeepingSettings", -"JSON массива описаний блоков": "JSON array of block descriptions", "СформироватьПараметрыДоступа": "FormAccessParameters", "УстановитьРеакциюНаСообщение": "SetMessageReaction", "Обсуждаем: какой цвет лучше?": "Discussing: Which color is better?", "Тестовый товар (со свойством": "Test product (with prop", "ПолучитьСписокАватаровФорума": "GetForumAvatarsList", +"Проверка_ТелеграмМедиагруппа": "Check_TelegramMediaGroup", +"УдалитьСобытиеКалендаря (хук": "DeleteCalendarEvent (wh", +"JSON массива описаний блоков": "JSON array of block descriptions", "Bitrix24_ПолучитьСписокЗадач": "Bitrix24_GetTasksList", -"СледующаяВложенностьДоступна": "NextNestingAvailable", +"БитриксНастройкиУчетаВремени": "BitrixTimekeepingSettings", "Наименование группового чата": "Name of the group chat", -"СоздатьЗависимостьЗадач (хук": "CreateTasksDependencies (wh", "СформироватьТекстTableSchema": "FormTextTableSchema", +"Новое наименование хранилища": "New storage name", "ОтветитьНаЗаявкуНаВступление": "ResolvePending", "ПутьУдаленногоДополнительный": "PathOfRemoteSecondary", "Сформировать кнопку действия": "Make action button", @@ -6462,7 +6462,6 @@ "Получить информацию о модели": "Get model information", "ВключитьУведомленияЧата (хук": "EnableChatNotifications (wh", "Восстановить объект к версии": "Restore object to version", -"Изменяет существующую задачу": "Update a task", "УдалитьВариантСвойстваТовара": "DeleteProductPropertyVariant", "ПолучитьСтандартныеЗаголовки": "GetDefaultHeaders", "Получает набор тегов объекта": "Gets the tag set of the object", @@ -6475,32 +6474,32 @@ "ВыполнитьЗапросSQL (удаление": "ExecuteSQLQuery (deleting", "JSON файлов или путь к .json": "File JSON or path to .json", "НормализоватьНаборПараметров": "NormaliseParameterSet", -"ПолучитьСписокОпубликованных": "GetPublishedList", -"Твиттер_СоздатьТекстовыйТвит": "Twitter_CreateTextTweet", +"Изменяет существующую задачу": "Update a task", +"Идентификатор/артикул товара": "Product ID/article", +"Показать главную тему форума": "Show main forum thread", "Получить структуру календаря": "Get calendar structure", "Результат выполнения команды": "Result of command execution", +"Получить каталог файлов чата": "Get chat files folder", "C:\\GDrive\\Мой диск\\data.json": "C:\\GDrive\\My Drive\\data.json", "Consumer key для авторизации": "Consumer key for authorization", "Затраченное время в секундах": "Time spent in seconds", -"и OpenSSL версии 1.1 или 3.x": "and OpenSSL version 1.1 or 3.x", "идентификатор ответственного": "responsible person identifier", "Копирует существующую модель": "Copies an existing model", "Проверка_ТелеграмПриглашение": "Check_TelegramInvitation", -"Получить каталог файлов чата": "Get chat files folder", -"Идентификатор/артикул товара": "Product ID/article", +"ID сообщения для открепления": "ID of the message to be unpinned", "Адрес и порт для подключения": "Address and port", "Данные или путь к расширению": "Extension data or filepath", "Получить список внеш. файлов": "Get external file list", -"ID сообщения для открепления": "ID of the message to be unpinned", "Изменяет данные пользователя": "Updates user data", "Массив сформированных кнопок": "Array of formed buttons", "Mime тип записываемых данных": "MIME type of data", "ПодробноеПредставлениеОшибки": "DetailErrorDescription", +"Твиттер_СоздатьТекстовыйТвит": "Twitter_CreateTextTweet", "Bitrix24_ВосстановитьКаталог": "Bitrix24_RestoreFolder", "УстановитьСтатусПользователя": "SetUserStatus", -"Новое наименование хранилища": "New storage name", +"ПолучитьСписокОпубликованных": "GetPublishedList", "ДобавитьЗаголовок (с заменой": "AddHeader (replace", -"ПолучитьСписокИконокАватаров": "GetAvatarIconList", +"и OpenSSL версии 1.1 или 3.x": "and OpenSSL version 1.1 or 3.x", "ОткрытьСоединение (TLS игнор": "CreateConnection (TLS ignore", "ПолучитьТокенServiceАккаунта": "GetServiceAccountToken", "Установить алгоритм OAuth V1": "Set OAuth V1 algorithm", @@ -6512,76 +6511,75 @@ "РазобратьИменованныйПараметр": "ParseNamedParam", "Метод в документации MongoDB": "Method in MongoDB documentation", "Изменить трудозатраты задачи": "Update task time accounting", +"Получить информацию о канале": "Get channel information", "УдалитьСообщение (отложенное": "DeleteMessage (scheduled", -"Путь к файлу с телом запроса": "Path to the file with the request body", "ГД_СоздатьУдалитьКомментарий": "GD_CreateDeleteComment", "ПреобразоватьПараметрВСтроку": "ConvertParameterToString", -"Показать главную тему форума": "Show main forum thread", "РаботаСМетаданнымиКалендарей": "CalendarMetadataManagement", "ПолучитьСтруктуруАвторизации": "GetAuthStructure", -"SHA256 дайджест нужного BLOB": "SHA256 BLOB digest", "Добавляет новый лист в книгу": "Adds a new sheet to the spreadsheet", "ПолучитьПланЗадачНаДень (хук": "GetDailyPlan (wh", "УдалитьПустыеЭлементыМассива": "RemoveEmptyArrayElements", "Признак успешного выполнения": "Flag of successful delivery", -"Получить информацию о канале": "Get channel information", "Добро пожаловать в новый чат": "Welcome to new chat", -"Проверить доступность бакета": "Head bucket", -"Начало периода в формате ISO": "Period start in ISO format", "ВернутьОтветКакJSONКоллекцию": "ReturnResponseAsJSONObject", -"МассивОшибок,СчетчикУспешных": "ErrorsArray,SuccessCount", +"Путь к файлу с телом запроса": "Path to the file with the request body", +"Проверить доступность бакета": "Head bucket", +"SHA256 дайджест нужного BLOB": "SHA256 BLOB digest", +"Начало периода в формате ISO": "Period start in ISO format", +"ПолучитьСписокИконокАватаров": "GetAvatarIconList", "Б24_УправлениеПользователями": "B2_UsersManagement", "Методы работы с Twitter (ОПИ": "Twitter methods (OpenIntegrations", "CommonModule.OPI_Инструменты": "CommonModule.OPI_Tools", -"Объявленная стоимость товара": "Declared product price", "Изменяет сообщение в диалоге": "Edit dialog message content", "Скрыть/Показать главную тему": "Hide/Show main topic", "Подключить расширение !NOCLI": "Connect extension !NOCLI", "Выполняет команду на сервере": "Executes the command on the server", "Загрузить/Удалить внеш. файл": "Upload/Delete external file", "MIME тип записываемых данных": "MIME type of data", -"Ожидается значение параметра": "Expected parameter value", +"Объявленная стоимость товара": "Declared product price", "УдалитьЗависимостьЗадач (хук": "DeleteTasksDependencies (wh", -"НазначитьПраваАдминистратора": "SetAdminRights", -"идентификатор характеристики": "attribute ID", -"СоздатьСсылкуПолученияТокена": "CreateTokenRetrievalLink", -"ПолучитьИнформациюОбАккаунте": "GetAccountInformation", -"ДобавлятьГлобальныеПараметры": "AddGlobalParams", -"ПредыдущееЗначениеЦветаТекта": "PreviousTextColorValue", +"СоздатьЗависимостьЗадач (хук": "CreateTasksDependencies (wh", "СледующийПозиционныйПараметр": "NextPositionParam", +"Ожидается значение параметра": "Expected parameter value", +"ПредыдущееЗначениеЦветаТекта": "PreviousTextColorValue", +"ДобавлятьГлобальныеПараметры": "AddGlobalParams", +"ПолучитьИнформациюОбАккаунте": "GetAccountInformation", +"МассивОшибок,СчетчикУспешных": "ErrorsArray,SuccessCount", +"СоздатьСсылкуПолученияТокена": "CreateTokenRetrievalLink", +"идентификатор характеристики": "attribute ID", +"НазначитьПраваАдминистратора": "SetAdminRights", +"ОткрытьСоединение (TLS ошибка": "CreateConnection (TLS error", "Получить внешнюю ссылку файла": "Get external link for a file", "Формат печати: A4, A5, A6, A7": "Print format: A4, A5, A6, A7", "Удаляет ранее созданный товар": "Deletes a previously created product", -"ЯМетрика_УправлениеСчетчиками": "YaMetrika_CountersManagement", +"TCP сервер. См. СоздатьСервер": "TCP server. See CreateServer", "ПолучитьСписокКалендарей (хук": "GetCalendarList (wh", "Получить статистику по постам": "Get post statistics", "разрешение на методы Calendar": "Calendar methods permission", "Наименование объекта в бакете": "Name of the object in the bucket", +"ID пользователя для получения": "User ID", "От лица группы. Должен быть 1": "On behalf of the group. It should be set to 1", -"ПолучитьВнешнююСсылкуКаталога": "GetFolderExternalLink", "Б24_УправлениеПодразделениями": "B24_DepartmentsManagement", -"Изменяет картинку аватар чата": "Changes the chat avatar picture", +"Имя пользователя (опционально": "Users name (optional", "Ноушн_ПолучитьИнформациюОБазе": "Notion_GetDatabaseInfo", "Ошибка в данных описания поля": "Error in field description data", "Идентификатор группового чата": "Group chat identifier", -"ОтключитьПроверкуСертификатов": "DisableCertVerification", "Получить администраторов чата": "Get chat admins", -"Имя пользователя (опционально": "Users name (optional", -"ОткрытьСоединение (TLS ошибка": "CreateConnection (TLS error", -"ID пользователя для получения": "User ID", -"Приостанавливает задачу по ID": "Pause a task by ID", -"Получить список пользователей": "Get user list", -"Проверка_ДропбоксПространство": "Check_DropboxSpace", +"ОтключитьПроверкуСертификатов": "DisableCertVerification", +"Изменяет картинку аватар чата": "Changes the chat avatar picture", +"Email для оповещений RFC 2822": "Email for alerts as RFC 2822", +"ПолучитьТелоКакДвоичныеДанные": "GetBodyAsBinaryData", "Описания полей в документации": "Field descriptions in the documentation", "ПригласитьПользователейВКанал": "InviteUsersToChannel", +"ПолучитьВнешнююСсылкуКаталога": "GetFolderExternalLink", "РаботаСЗаявкамиНаВызовКурьера": "CourierInvitationsManagement", "ДобавитьЭлементЧеклистаЗадачи": "AddTasksChecklistElement", "Получить типы колонок таблицы": "Get table column types", "ПолучитьКонтентРейтингТоваров": "GetProductsContentRating", "ПолучитьИнформациюОФайле (хук": "GetFileInformation (wh", -"Не удалось создать Соединение": "Failed to create Connection", -"ИзменитьСобытиеКалендаря (хук": "UpdateCalendarEvent (wh", -"Email для оповещений RFC 2822": "Email for alerts as RFC 2822", +"Приостанавливает задачу по ID": "Pause a task by ID", +"Получить список пользователей": "Get user list", "ВернутьОтветКакДвоичныеДанные": "ReturnResponseAsBinaryData", "ID каталога нового размещения": "ID of new destination folder", "ПолучитьСтруктуруФильтраЛидов": "GetLeadFilterStructure", @@ -6589,32 +6587,33 @@ "Установить настройки инстанса": "Set instance settings", "Найти значения характеристики": "Search attribute value", "Структура JSON данных объекта": "The structure of the JSON object data", -"ПолучитьТелоКакДвоичныеДанные": "GetBodyAsBinaryData", +"ИзменитьСобытиеКалендаря (хук": "UpdateCalendarEvent (wh", +"Не удалось создать Соединение": "Failed to create Connection", "СоздатьКаталогВХранилище (хук": "CreateStorageFolder (wh", -"ПоместитьКаталогВКорзину (хук": "MarkFolderAsDeleted (wh", +"УдалитьКомментарийЗадачи (хук": "DeleteTaskComment (wh", "ПолучитьОписаниеФильтраОфисов": "GetOfficeFilterDescription", -"Получить данные о базе данных": "Get database information", -"Отправляет сообщение в диалог": "Send message to dialog", -"ПодключитьКомпонентуНаСервере": "AttachAddInOnServer", "Слак_СоздатьАрхивироватьКанал": "Slack_CreateArchiveChannel", "ID блока или сам блок образец": "Block ID or block sample itself", "Создать системное уведомление": "Create system notification", "Отправить голосовое сообщение": "Send voice", "ПолучитьЛимитыРаботыСТоварами": "GetProductsRequestsLimits", "ПолучитьЗапросыВступленияЧата": "GetChatJoinRequests", -"Telegram_ОтправитьМеидагруппу": "Telegram_SendMediaGroup", +"Отправляет сообщение в диалог": "Send message to dialog", "ПолучитьОписаниеЗаявкиКурьера": "GetCourierInvitationsDescription", -"ПолучитьСсылкуЗагрузкиОбъекта": "GetObjectUploadLink", -"ДобавитьЗадачуВИзбранное (хук": "StopWatchingTask (wh", -"СоздатьЗаголовокАвторизацииV1": "CreateAuthorizationHeaderV1", -"Получает список доступных баз": "Gets the list of available bases", -"ПолучитьОбъект (большой, файл": "GetObject (big, file", -"НачатьНаблюдатьЗаЗадачей (хук": "StartWatchingTask (wh", +"ПодключитьКомпонентуНаСервере": "AttachAddInOnServer", "ОтключитьУведомленияЧата (хук": "DisableChatNotifications (wh", -"УдалитьКомментарийЗадачи (хук": "DeleteTaskComment (wh", +"НачатьНаблюдатьЗаЗадачей (хук": "StartWatchingTask (wh", +"ПолучитьОбъект (большой, файл": "GetObject (big, file", +"Получить данные о базе данных": "Get database information", +"СоздатьЗаголовокАвторизацииV1": "CreateAuthorizationHeaderV1", +"ДобавитьЗадачуВИзбранное (хук": "StopWatchingTask (wh", +"ПолучитьСсылкуЗагрузкиОбъекта": "GetObjectUploadLink", +"Проверка_ДропбоксПространство": "Check_DropboxSpace", +"Получает список доступных баз": "Gets the list of available bases", +"Telegram_ОтправитьМеидагруппу": "Telegram_SendMediaGroup", "Удаляет внешний файл из Slack": "Deletes an external file from Slack", +"Получить статус учета времени": "Get timekeeping status", "ПолучитьСтатусДобавленияКодов": "GetCodesUploadStatus", -"ОткрытьСтандартныйПотокВывода": "OpenStandardOutput", "Получить ссылку на скачивание": "Get download link", "ДополнитьЗаголовкиАвторизации": "CompleteAuthHeaders", "ПеренестиЗадачуВСтадиюКанбана": "MoveTaskToKanbanStage", @@ -6623,32 +6622,31 @@ "**Открытый пакет интеграций**": "**Open Integrations Package**", "УдалитьБазуДанных (отключение": "DeleteDatabase (Shutdown", "ДобавитьФайлMultipartFormData": "AddMultipartFormDataFile", +"ОткрытьСтандартныйПотокВывода": "OpenStandardOutput", "Отправить эфемерное сообщение": "Send ephemeral message", -"Мобильные телефоны и планшеты": "Mobile phones and tablets", -"Отозвать права администратора": "Revoke admin rights", "ЗавершитьЗагрузкуЧастями (ЗЧО": "FinishPartsUpload (UOP", "URL картинки обложки страницы": "URL of the page cover image", "ЯМетрика_УправлениеОперациями": "YaMetrika_ActionsManagement", "JSON описание товара или путь": "JSON description of the product or path", "Набор изменяемых полей заказа": "Set of changing order fields", "ИзменитьВариантСвойстваТовара": "EditProductPropertyVariant", -"Получить статус учета времени": "Get timekeeping status", "мПозицияПозиционныхПараметров": "mPositionParamsPosition", +"ПоместитьКаталогВКорзину (хук": "MarkFolderAsDeleted (wh", +"Отозвать права администратора": "Revoke admin rights", +"ЯМетрика_УправлениеСчетчиками": "YaMetrika_CountersManagement", "ДобавитьВариантСвойстваТовара": "AddProductPropertyVariant", -"TCP сервер. См. СоздатьСервер": "TCP server. See CreateServer", +"Отправить текстовое сообщение": "Send text message", "Получить онлайн пользователей": "Get online users", -"Проверка_ВКИнформацияОТоварах": "Check_VKProductData", -"СформироватьМассивДанныхЯчеек": "FormCellDataArray", "Результат закрытия соединения": "Result of connection termination", +"СформироватьТекстDropDatabase": "FormTextDropDatabase", "Соответствие из КлючИЗначение": "Map of KeyAndValue", "УдалитьРезультатИзКомментария": "DeleteResultFromComment", "Переслать голосовое сообщение": "Resend voice", "Исключает участника из группы": "Excludes a member from the group", "Изменяет существующее событие": "Edits an existing event", +"ЗавершитьЗагрузкуЧастями (ИЗЧ": "FinishPartsUpload (IPU", +"СформироватьМассивДанныхЯчеек": "FormCellDataArray", "ID пользователя для изменения": "User ID", -"ПолучитьСтурктуруПользователя": "GetUserFieldsStructure", -"Проверка_ТелеграмСозданиеТемы": "Check_TelegramCreateTopic", -"ПриостановитьУчетВремени (хук": "StopTimekeeping (wh", "СформироватьСтрокуПодключения": "GenerateConnectionString", "Создает пустую таблицу в базе": "Creates an empty table in the database", "ОтправитьКартинку (клавиатура": "SendImage (keyboard", @@ -6656,32 +6654,33 @@ "Соответствие Из КлючИЗначение": "Map Of KeyAndValue", "Отправить уведомление о вводе": "Send write notification", "СлужебныйПрограммныйИнтерфейс": "Internal", +"ПолучитьСтурктуруПользователя": "GetUserFieldsStructure", +"ПриостановитьУчетВремени (хук": "StopTimekeeping (wh", +"ПолучитьЭлементЧеклистаЗадачи": "GetTasksChecklistElement", "ID подборки, если нужен отбор": "Selection ID, if filtering is needed", -"ЗавершитьЗагрузкуЧастями (ИЗЧ": "FinishPartsUpload (IPU", +"Создает новую новость в ленте": "Create a new post at news feed", "Создает твит с видеовложением": "Creates a tweet with a video attachment", "СоздатьРезультатИзКомментария": "CreateResultFromComment", "Необходим прозвон отправителя": "Need to call the sender", -"app_id из настроек приложения": "app_id from application settings", +"Мобильные телефоны и планшеты": "Mobile phones and tablets", "!OInt Сообщить(ОписаниеОшибки": "!OInt Message(ErrorDescription", "VK_СоздатьРекламноеОбъявление": "VK_CreateAd", "Время жизни токена в секундах": "Token lifetime in seconds", "Закрывает существующий диалог": "Closes an existing dialog", +"Проверка_ТелеграмСозданиеТемы": "Check_TelegramCreateTopic", "скрывать нерабочее время: Y,N": "hide off hours: Y,N", -"Название компании отправителя": "Name of senders company", "временной тип: min, hour, day": "time type: min, hour, day", "Получить информацию об уценке": "Get discount information", -"Создает новую новость в ленте": "Create a new post at news feed", +"ПолучитьРеестрыПлатежейНаДату": "GetDeliveryCashRegistry", "Установить файл ответа !NOCLI": "Set response file", "ID Файла голосового сообщения": "File ID of voice message", "Данные или текст для отправки": "Data or text to be sent", -"ID подразделения для удаления": "Department ID for deletion", "ПолучитьСобытиеКалендаря (хук": "GetCalendarEvent (wh", -"ПолучитьРеестрыПлатежейНаДату": "GetDeliveryCashRegistry", -"СформироватьТекстDropDatabase": "FormTextDropDatabase", -"ПолучитьЭлементЧеклистаЗадачи": "GetTasksChecklistElement", -"ID руководителя подразделения": "ID of department manager", -"УбратьЗадачуИзИзбранного (хук": "RemoveTaskFromFavorites (wh", -"Твиттер_СоздатьТвитСКартинкой": "Twitter_CreateTweetWithImage", +"ID подразделения для удаления": "Department ID for deletion", +"Название компании отправителя": "Name of senders company", +"Телеграм_ОтправитьМедиагруппу": "TelegramAPI_SendMediaGroup", +"app_id из настроек приложения": "app_id from application settings", +"ПолучитьНастройкиУчетаВремени": "GetTimekeepingSettings", "ID товаров для восстановления": "Product IDs for recovery", "Получить хранилище приложения": "Get storage for application data", "Получает информацию о таблице": "Gets information about the table", @@ -6690,155 +6689,156 @@ "Массив соответствий каталогов": "Array of directory mappings", "Получить отложенные сообщения": "Get scheduled messages", "ПолучитьСписокРабочихОбластей": "GetWorkspaceList", +"Твиттер_СоздатьТвитСКартинкой": "Twitter_CreateTweetWithImage", "Загрузка и обновление товаров": "Uploading and updating products", -"Отправить текстовое сообщение": "Send text message", -"Получает структуру полей чата": "Get chat fields structure", "СоздатьЗаголовокАвторизацииV2": "CreateAuthorizationHeaderV2", "Одобрить заявку на вступление": "Approve pending", "Bitrix24_ПереименоватьКаталог": "Bitrix24_RenameFolder", "Дополнить комплексный атрибут": "Complete the complex attribute", "Изменяет текст заголовка чата": "Change text of chat title", "ОбновитьХарактеристикиТоваров": "UpdateProductsAttributes", -"ЗаблокироватьПользователяЧата": "BlockChatUser", +"ID руководителя подразделения": "ID of department manager", +"УбратьЗадачуИзИзбранного (хук": "RemoveTaskFromFavorites (wh", +"Получает структуру полей чата": "Get chat fields structure", "Альтернативный текст картинки": "Alternate text of the image", -"Есть ли в офисе приём заказов": "Is there an office to take orders", -"Телеграм_ОтправитьМедиагруппу": "TelegramAPI_SendMediaGroup", +"ЗаблокироватьПользователяЧата": "BlockChatUser", "список страниц для сохранения": "save page list", -"РазделитьМассивНаПараметрыURL": "SplitArrayAsURLParameters", -"ПолучитьНастройкиУчетаВремени": "GetTimekeepingSettings", -"ПолучитьСписокСкладовОтгрузки": "GetShippingWarehousesList", -"Получить содержимое хранилища": "Get a list of child storage objects", +"Есть ли в офисе приём заказов": "Is there an office to take orders", "Добавить пользователя к файлу": "Add user to file", "ПолучитьСтруктуруФильтраЗадач": "GetTasksFilterStructure", "Уникальный идентификатор ФИАС": "Unique FIAS identifier", "Путь (имя) в бакете источнике": "Path (name) in the source bucket", "CommonModule.OPI_Криптография": "CommonModule.OPI_Cryptography", +"РазделитьМассивНаПараметрыURL": "SplitArrayAsURLParameters", "ТекстСообщенияБезЦветныхПолей": "TextColorWithoutColoredFields", +"Получить содержимое хранилища": "Get a list of child storage objects", +"Структура JSON данных события": "The structure of the JSON event data", "Время начала ожидания курьера": "Start time of waiting for the courier", "Закрепить/Открепить сообщение": "Pin/Unpin message", -"Структура JSON данных события": "The structure of the JSON event data", -"Заменить клавиатуру сообщения": "Replace message keyboard", -"ДобавитьПолеMultipartFormData": "AddMultipartFormDataField", -"Получить информацию о таблице": "Get table information", -"Проверка_ВКИНформацияОТоварах": "Check_VKProductData", "Отбор по ID каталога родителя": "Filter by parent directory ID", -"ПроверитьОбязательныеПоляСхемы": "CheckSchemeRequiredFields", +"Проверка_ВКИнформацияОТоварах": "Check_VKProductData", +"ПолучитьСписокСкладовОтгрузки": "GetShippingWarehousesList", +"Получить информацию о таблице": "Get table information", +"ДобавитьПолеMultipartFormData": "AddMultipartFormDataField", +"Заменить клавиатуру сообщения": "Replace message keyboard", +"Проверка_ВКИНформацияОТоварах": "Check_VKProductData", +"Идентификатор удаляемого листа": "IdentifierOfSheetToDelete", +"ПодключитьРасширение (проверка": "ConnectExtension (check", "ПолучитьКомменатрийЗадачи (хук": "GetTaskComment (wh", "ВыполнитьЗапросSQL (соединение": "ExecuteSQLQuery (connect", "Удаляет файл или каталог по ID": "Deletes file or directory by ID", "Соответствие заголовков ответа": "Response headers mapping", "ПодключитьРасширение (двоичные": "ConnectExtension (binary", -"ПолучитьСтрокуИзДвоичныхДанных": "GetStringFromBinaryData", -"ПолучитьСтатусДобавленияТовара": "GetProductCreationStatus", +"Добавить получателей к новости": "Add new recipients to a post", "Нормализовать набор параметров": "Normalise parameter set", -"Получить структуру комментария": "Get comment structure", "Сформировать параметры доступа": "Form access parameters", "Получает информацию о каталоге": "Get folder information", "ВыполнитьЗапросSQL (расширение": "ExecuteSQLQuery (extension", "ЯДиск_ПолучитьИнформациюОДиске": "YDisk_GetDiskInfo", -"календарь событий по умолчанию": "default event calendar", "СохранитьКартинкуВАльбом (путь": "SavePictureToAlbum (path", -"ЗаменитьСтандартныеОсобенности": "ReplaceDefaultFeatures", -"Разделять массивы в URL !NOCLI": "Split arrays in URL", +"календарь событий по умолчанию": "default event calendar", +"ПолучитьСтрокуИзДвоичныхДанных": "GetStringFromBinaryData", +"Получить структуру комментария": "Get comment structure", +"Ограничение выборки результата": "Limiting the result selection", "СоздатьТвитКартинки (одиночная": "CreateImageTweet (single", -"Получить описание файла !NOCLI": "Get file description !NOCLI", +"ПолучитьСтатусДобавленияТовара": "GetProductCreationStatus", "Добавить пользователей к папке": "Add users to folder", "ОтправитьМестоположение (канал": "SendLocation (channel", "Нельзя замешивать разные типы!": "Different types cannot be mixed!", "Проверка_БитриксМассивНовостей": "Check_BitrixPostsArray", "флаг скрытия списка участников": "flag to hide the list of participants", "тип: employee, extranet, email": "type: employee, extranet, email", +"Разделять массивы в URL !NOCLI": "Split arrays in URL", "РазблокироватьПользователяЧата": "UnblockChatUser", -"Имя поля БД с выбором значения": "Name of field with a value selection", "Структура, Массив Из Структура": "Structure, Array of Structure", -"Ограничение выборки результата": "Limiting the result selection", "Добавить файл multipart !NOCLI": "Add Multipart file !NOCLI", "Выгнать пользователя из канала": "Kick user from channel", "ПолучитьЗначенияХарактеристики": "GetAttributeValues", "Алгоритм шифрования: HMAC, RSA": "Encryption algorithm: HMAC, RSA", "ПолучитьСтрокуКлючейЗаголовков": "GetHeadersKeysString", -"Добавить получателей к новости": "Add new recipients to a post", +"Получить описание файла !NOCLI": "Get file description !NOCLI", +"Имя поля БД с выбором значения": "Name of field with a value selection", "электронная почта заполнена (Y": "Email is filled (Y", -"Ноушн_ИзменитьСвойстваСтраницы": "Notion_EditPageProperties", +"ID пользователя для блокировки": "User ID to be blocked", "Получить информацию об объекте": "Get object information", -"ID родительского подразделения": "ID of parent department", "Получить список версий объекта": "Get list of object versions", "Получить информацию о странице": "Get page info", "Проверка_БитриксМассивОбъектов": "Check_BitrixObjectsArray", "ОбработкаОбъект.OPI_HTTPКлиент": "DataProcessorObject.OPI_HTTPClient", -"ВыполнитьЭлементЧеклистаЗадачи": "CompleteTasksChecklistElement", "Техническое наименование видео": "Technical name of the video", "Скачивает модель из библиотеки": "Downloads a model from the library", +"ID родительского подразделения": "ID of parent department", +"Получить текущего пользователя": "Get current user", "КоличествоПараметров - 1 Тогда": "NumberOfParameters - 1 Then", -"ПодключитьРасширение (проверка": "ConnectExtension (check", -"ДобавитьЗаписи (без транзакции": "AddRecords (no tr", "Добавить данные Related !NOCLI": "Add data as Related !NOCLI", "Идентификатор удаляемого файла": "ID of removing file", "ДобавитьКомментарийЗадачи (хук": "AddTaskComment (wh", "Явно завершает процесс сервера": "Explicitly terminates the server process", "ТолстыйКлиентОбычноеПриложение": "ThickClientOrdinaryApplication", "Bitrix24_ЗагрузитьФайлВКаталог": "Bitrix24_UploadFileToFolder", -"Получить текущего пользователя": "Get current user", -"ПолучитьСписокРезультатов (хук": "GetResultsList (wh", -"ОткрытьСоединение (перед базой": "CreateConnection (before base", +"Значение заголовка ContentType": "ContentType header value", +"ДобавитьЗаписи (без транзакции": "AddRecords (no tr", +"ЗаменитьСтандартныеОсобенности": "ReplaceDefaultFeatures", +"ВыполнитьЭлементЧеклистаЗадачи": "CompleteTasksChecklistElement", +"Удаляет существующий календарь": "Deletes an existing calendar", "Целевой путь создания каталога": "Target path for creating the directory", "Отметить пункт как выполненный": "Mark as completed", "file\"\" + ИспользуемоеИмя, Файл": "file\"\" + DisplayedName, File", "ДобавитьПользователейВЧат (хук": "AddUsersToChat (wh", "СоздатьПерсональноеУведомление": "CreatePersonalNotification", "Размер файла в случае отправке": "File size in case of sending", -"ID пользователя для блокировки": "User ID to be blocked", "Идентификатор записи в таблице": "Record identifier in the table", -"Удаляет ранее созданный альбом": "Deletes a previously created album", -"Удаляет существующий календарь": "Deletes an existing calendar", +"ПолучитьСписокРезультатов (хук": "GetResultsList (wh", +"ОткрытьСоединение (перед базой": "CreateConnection (before base", "ПолучитьКоллекциюКлючИЗначение": "GetKeyValueCollection", "Добавить пользователей к файлу": "Add users to file", "Получить список опубликованных": "Get published list", "ПолучитьСтатусПаспортныхДанных": "GetPassportDataStatus", "МаксимальныйУровеньВложенности": "MaximumNestingLevel", "Идентификатор заказа в ИС СДЭК": "Order identifier in CDEK system", -"Значение заголовка ContentType": "ContentType header value", -"Идентификатор удаляемого листа": "IdentifierOfSheetToDelete", -"ID события календаря источника": "ID of the source calendar event", -"ПолучитьОписаниеДоговоренности": "GetAppointmentDescription", +"Ноушн_ИзменитьСвойстваСтраницы": "Notion_EditPageProperties", +"Удаляет ранее созданный альбом": "Deletes a previously created album", +"СохранитьПубличныйОбъектНаДиск": "SavePublicObjectToDisk", +"ПроверитьОбязательныеПоляСхемы": "CheckSchemeRequiredFields", +"Текст комментария трудозатраты": "Comment text", "Пароль для базовой авторизации": "Password for basic authorization", "Структура, Массив из Структура": "Structure, Array of Structure", -"СохранитьПубличныйОбъектНаДиск": "SavePublicObjectToDisk", +"Буквенно-цифровой код ПВЗ СДЭК": "Alphanumeric code of CDEK POZ", "ПолучитьЗанятостьПользователей": "GetUserBusy", "Исключить пользователя из чата": "Delete user from chat", "ПолучитьСписокТегов (одиночный": "GetTagList (single", +"Ожидается именованный параметр": "Expected named parameter", "Структура JSON данных страницы": "The structure of the JSON page data", -"Параметр дополнительной услуги": "Additional service parameter", "Дополнительный текст сообщения": "Additional message text", -"ПолучитьЗаписи (без параметров": "GetRecords (no params", "СформироватьСтрокуВызоваМетода": "FormMethodCallString", "ПреобразоватьИсточникВЗначение": "ConvertSourceToValue", "ВыполнитьЗапросSQL (удаление 1": "ExecuteSQLQuery (deleting 1", "Идентификатор клиента (Account": "Client identifier (Account", "УдалитьУведомление (приложение": "DeleteNotification (app", "JSON описания или путь к .json": "JSON description or path to .json", +"Методы интеграции с Viber (ОПИ": "Viber integration methods (OpenIntegrations", "Получить список внешних файлов": "Get list of external files", -"Ожидается именованный параметр": "Expected named parameter", -"ПолучитьДвоичныеДанныеИзСтроки": "GetBinaryDataFromString", +"ПолучитьЗаписи (без параметров": "GetRecords (no params", +"Изменяет ранее созданный товар": "Edits a previously created product", +"ID события календаря источника": "ID of the source calendar event", "ЗакрытьИПолучитьДвоичныеДанные": "CloseAndGetBinaryData", "file|\" + ИспользуемоеИмя, Файл": "file|\" + DisplayedName, File", "Отклонить заявку на вступление": "Disapprove pending", "ДропБокс_ПолучитьОбновитьТокен": "DropboxAPI_GetUpdateToken", "Добавить поле multipart !NOCLI": "Add Multipart field !NOCLI", "ИзменитьКомментарийЗадачи (хук": "UpdateTaskComment (wh", +"Параметр дополнительной услуги": "Additional service parameter", "Удалить уведомление из очереди": "Delete notification from queue", -"УстановитьТелоИзДвоичныхДанных": "SetBodyFromBinaryData", -"Изменяет ранее созданный товар": "Edits a previously created product", "ID пользователя для добавления": "User ID to add", -"Получить информацию о каталоге": "Get information about folder", "Слак_ОтправитьУдалитьСообщение": "Slack_SendDeleteMessage", "ПолучитьКаталогФайловЧата (хук": "GetChatFilesFolder", "Задача невыполнима, расходимся": "Task impossible, let's split up", "ПолучитьСтруктуруФильтраСделок": "GetDealsFilterStructure", +"ПолучитьДвоичныеДанныеИзСтроки": "GetBinaryDataFromString", "показывать отклоненные события": "show rejected events", -"Методы интеграции с Viber (ОПИ": "Viber integration methods (OpenIntegrations", +"УстановитьТелоИзДвоичныхДанных": "SetBodyFromBinaryData", "Ответить на событие клавиатуры": "Answer button event", -"единица измерения: YEAR, MONTH": "unit: YEAR, MONTH", +"Получить информацию о каталоге": "Get information about folder", "ПолучитьУчаствующиеТоварыАкции": "GetCurrentPromoProducts", "ПолучитьСобытияКалендарей (хук": "GetCalendarEvents (wh", "Отправляет http запрос с телом": "Send http request with body", @@ -6846,47 +6846,47 @@ "Получить структуру цены товара": "Get product price structure", "Создать/Удалить составной пост": "Create/Delete composite post", "Bitrix24_ПоместитьФайлВКорзину": "Bitrix24_MarkFileAsDeleted", -"ЗаполнитьПараметрыЗагрузкиФото": "FillPhotoUploadParameters", +"НоушнАпи_ПолучитьПользователей": "NotionAPI_GetUsers", +"Установить статус пользователя": "Set user status", "ПолучитьОписаниеЗаказа (Пустая": "GetOrderDescription (Empty", -"Текст комментария трудозатраты": "Comment text", -"ПолучитьПереводыПлатежейНаДату": "GetDeliveryCashTransfers", "УстановитьСтандартныеНастройки": "SetDefaultSettings", "Bitrix24_ПолучитьИсториюЗадачи": "Bitrix24_GetTaskHistory", "Путь или набору путей к файлам": "Path or set of paths to the files", "УправлениеСостояниемТемыФорума": "ManageForumThreadState", "О механизме в документации AWS": "Process at AWS documentation", "Слак_ОтправитьУдалитьЭфемерное": "Slack_SendDeleteEphemeral", -"Установить статус пользователя": "Set user status", -"НоушнАпи_ПолучитьПользователей": "NotionAPI_GetUsers", "УдалитьТрудозатратыЗадачи (хук": "DeleteTaskTimeAccounting (wh", +"ПолучитьПереводыПлатежейНаДату": "GetDeliveryCashTransfers", "УдалитьБазуДанных (подключение": "DeleteDatabase (connect", -"Получить ссылку для скачивания": "Get download link", -"Копирует один каталог в другой": "Copy one folder to another", +"ЗаполнитьПараметрыЗагрузкиФото": "FillPhotoUploadParameters", +"Задача изменена, не расходимся": "The task has been changed, do not split up", +"единица измерения: YEAR, MONTH": "unit: YEAR, MONTH", "включение автоматических целей": "auto-targeting", "Использовать поля тела в OAuth": "Use body fields at OAuth", "ОтправитьСообщение (отложенное": "SendMessage (scheduled", "Методы работы с Yandex ID (ОПИ": "Yandex ID methods (OpenIntegrations", -"Задача изменена, не расходимся": "The task has been changed, do not split up", "ПодключитьРасширение (закрытие": "ConnectExtension (closing", +"Получить ссылку для скачивания": "Get download link", +"Копирует один каталог в другой": "Copy one folder to another", "СоздатьБазуДанных (подключение": "CreateDatabase (connect", -"Получить список сообщений чата": "Get chat messages list", -"Назначить права администратора": "Set admin rights", "ID счетчика для восстановления": "Counter ID for restoring", "Ошибка удаления файла картинки": "Error deleting a picture file", "Один или несколько SKU товаров": "One or array of SKUs", "Подключиться и получить данные": "Connect and receive data", "ID чата для отправки сообщения": "Chat ID for message sending", -"Буквенно-цифровой код ПВЗ СДЭК": "Alphanumeric code of CDEK POZ", -"идентификатор предыдущей задачи": "previous task identifier", -"ПолучитьСписокПользователейЧата": "GetChatUsers", -"ПолучитьТрудозатратыЗадачи (хук": "GetTaskTimeAccounting (wh", -"ДобавитьДополнительныеЗаголовки": "AddAdditionalHeaders", -"УстановитьЗаголовки (перезапись": "SetHeaders (rewrite", -"запись содержимого полей и форм": "recording the contents of fields and forms", +"ПолучитьОписаниеДоговоренности": "GetAppointmentDescription", +"Получить список сообщений чата": "Get chat messages list", +"Назначить права администратора": "Set admin rights", "СоздатьЗапросМультипартРелэйтед": "CreateMultipartRelatedRequest", -"Стойка для акустической системы": "Speaker stand", -"Получить список версий объектов": "List object versions", +"запись содержимого полей и форм": "recording the contents of fields and forms", +"УстановитьЗаголовки (перезапись": "SetHeaders (rewrite", "Проверка_ДропБоксПубличнаяПапка": "Check_DropboxPublicFolder", +"ПолучитьТрудозатратыЗадачи (хук": "GetTaskTimeAccounting (wh", +"Стойка для акустической системы": "Speaker stand", +"Получает информацию об аккаунте": "Gets account information", +"ДобавитьДополнительныеЗаголовки": "AddAdditionalHeaders", +"Исключает пользователей из чата": "Removes users from the chat", +"Соответствие заголовков запроса": "Request headers mapping", "Открывает новое соединения RCON": "Opens a new RCON connection", "Создает заказ по описанию полей": "Creates an order based on field descriptions", "ПолучитьСтатусПользователя (хук": "GetUserStatus (wh", @@ -6894,22 +6894,21 @@ "ПолучитьОтветВКонтексте (сид, 2": "GetContextResponse (seed, 2", "VK_УдалитьВариантСвойстваТовара": "VK_DeleteProductPropertyVariant", "ПолучитьСтруктуруФильтраТоваров": "GetProductsFilterStructure", -"Соответствие заголовков запроса": "Request headers mapping", +"идентификатор предыдущей задачи": "previous task identifier", +"Получить список версий объектов": "List object versions", "См.ПолучитьСтандартныеПараметры": "See GetStandardParameters", -"Исключает пользователей из чата": "Removes users from the chat", -"Функция вернула пустое значение": "Function Returned Empty Value", -"Проверка_ТелеграмУдалениеВебхук": "Check_TelegramWebhookDeletion", -"Получить список отправлений FBO": "Get FBO shipments list", -"ИспользоватьMultipartПоляВOAuth": "UseMultipartFieldsAtOAuth", "Получить информацию об аккаунте": "Get account information", +"Целевой путь для нового объекта": "Target path for the new object", +"ИзменитьСтатусПользователя (хук": "ChangeUserStatus (wh", +"Получить список отправлений FBO": "Get FBO shipments list", "Телеграм_ПолучитьИнформациюБота": "TelegramAPI_GetBotInfo", "Получить статус загрузки по URL": "Get upload status by URL", "Массив из Строка,ДвоичныеДанные": "Array of String, BinaryData", "ВыполнитьЗапрос (без выполнения": "ExecuteRequest (no execution", "ПолучитьОтветВКонтексте (сид, 3": "GetContextResponse (seed, 3", +"Проверка_ТелеграмУдалениеВебхук": "Check_TelegramWebhookDeletion", +"Функция вернула пустое значение": "Function Returned Empty Value", "Проверка_ДропбоксПубличнаяПапка": "Check_DropboxPublicFolder", -"ПолучитьСписокЗапущенныхМоделей": "ListRunningModels", -"Секция в URL, если присутствует": "Section in the URL if present", "Получить доступные товары акции": "Get available promo products", "VK_СоздатьСсылкуПолученияТокена": "VK_CreateTokenRetrievalLink", "Наименование истинного продавца": "Name of the true seller", @@ -6917,43 +6916,43 @@ "ID первого справочника в ответе": "ID of the first catalog in the response", "ПолучитьВнешнююСсылкуФайла (хук": "GetFileExternalLink (wh", "Целевой путь файла на Neocities": "File path on Neocities", -"Целевой путь для нового объекта": "Target path for the new object", -"ИзменитьСтатусПользователя (хук": "ChangeUserStatus (wh", -"Создает новое событие календаря": "Creates a new calendar event", -"Получает историю сообщений чата": "Retrieves the chat message history", -"Обновить характеристики товаров": "Update products attributes", +"ПолучитьСписокЗапущенныхМоделей": "ListRunningModels", +"Секция в URL, если присутствует": "Section in the URL if present", +"ПолучитьСписокПользователейЧата": "GetChatUsers", +"Получает данные группового чата": "Gets group chat data", +"ПреобразоватьМножественныйВыбор": "ConvertMultipleChoice", +"Двоичные данные или путь к фото": "Binary data or path to photo", "Получить список иконок-аватаров": "Get avatar icon list", "ПолучитьСписокТрудозатратЗадачи": "GetTaskTimeAccountingList", "ПолучитьСтруктуруОстатковТовара": "GetProductStocksStructure", "ПолучитьСписокТоваровРекурсивно": "GetProductListRecursively", -"Получает значения ячеек таблицы": "Gets cell values of the table", "Идентификатор каталога родителя": "Parent folder identifier", "Полученные данные в виде строки": "Received data as string", "ПолучитьСписокЗаказовРекурсивно": "GetOrderListRecursively", +"Обновить характеристики товаров": "Update products attributes", +"Получает значения ячеек таблицы": "Gets cell values of the table", "Сформировать строку подключения": "Generate connection string", -"ПолучитьЖурналВходящихСообщений": "GetIncomingMessageLog", -"ID задачи для добавления затрат": "ID of task for time accounting", -"дата окончания события (строкой": "event end date (as string", -"Использовать сжатие gzip !NOCLI": "Use Gzip compression !NOCLI", -"Получает данные группового чата": "Gets group chat data", -"Задача выполнима, не расходимся": "Task uninpossible, don't split up", "Восстанавливает файл из корзины": "Restore file from recycle bin", +"Задача выполнима, не расходимся": "Task uninpossible, don't split up", +"QR код или информация об ошибке": "QR code or error information", "По умолчанию используется UTF-8": "UTF-8 is used by default", +"дата окончания события (строкой": "event end date (as string", +"ID задачи для добавления затрат": "ID of task for time accounting", +"Использовать сжатие gzip !NOCLI": "Use Gzip compression !NOCLI", +"ПолучитьЖурналВходящихСообщений": "GetIncomingMessageLog", +"Получает историю сообщений чата": "Retrieves the chat message history", "Загружает файл на сервера Slack": "Uploads a file to Slack servers", -"Двоичные данные или путь к фото": "Binary data or path to photo", "ИзменитьТекстСообщения (простое": "EditMessageText (simple", -"Вид сервиса, если отличен от s3": "Type of service, if different from s3", -"ПреобразоватьМножественныйВыбор": "ConvertMultipleChoice", "Получить ссылку для авторизации": "Get authorization link", "в виде `{'blob':Base64 строка}`": "as `{'blob':Base64 string}`", "ДобавитьКомментарийНовости (хук": "AddPostComment (wh", "ПолучитьСтруктуруНастроекМодели": "GetModelSettingsStructure", "Сохраните сгенерированный токен": "Save the generated token", -"маркетинговый цвет для картинок": "marketing color for pictures", +"Создает новое событие календаря": "Creates a new calendar event", "Вернуть ответ как строку !NOCLI": "Return response as string !NOCLI", +"Вид сервиса, если отличен от s3": "Type of service, if different from s3", +"маркетинговый цвет для картинок": "marketing color for pictures", "Новые трудозатраты по обработке": "New time record", -"ОзонАПИ_АтрибутыИХарактеристики": "OzonAPI_AttributesAndFeatures", -"Устанавливает новый URL запроса": "Sets the new request URL", "Коды активации цифрового товара": "Digital product activation codes", "Telegram_ПолучитьИнформациюБота": "Telegram_GetBotInformation", "идентификатор привязанного лида": "linked lead identifier", @@ -6961,21 +6960,21 @@ "Описание тестового события (изм": "Test event description (change", "Создать ссылку получения токена": "Create token retrieval link", "СформироватьТекстCreateDatabase": "FormTextCreateDatabase", -"QR код или информация об ошибке": "QR code or error information", -"Получает информацию об аккаунте": "Gets account information", -"Получить список аватаров форума": "Get forum avatars list", -"ПолучитьСсылкуСкачиванияОбъекта": "GetObjectDownloadLink", -"СформироватьТекстНастроекSelect": "ForSelectOptionsText", +"ОзонАПИ_АтрибутыИХарактеристики": "OzonAPI_AttributesAndFeatures", +"Устанавливает новый URL запроса": "Sets the new request URL", "Привязывает штрихкоды к товарам": "Binds barcodes to products", -"Служебный программный интерфейс": "Service", +"ИспользоватьMultipartПоляВOAuth": "UseMultipartFieldsAtOAuth", +"Курьеру необходима доверенность": "The courier needs a letter of attorney", +"Загрузить коды активации товара": "Upload product activations codes", +"СформироватьТекстНастроекSelect": "ForSelectOptionsText", "Заблокировать пользователя чата": "Block chat user", "СформироватьСсылкуПолученияКода": "FormCodeRetrievalLink", "ДобавитьТрудозатратыЗадачи (хук": "AddTaskTimeAccounting (wh", "ID чата оригинального сообщения": "Chat ID of the original message", "Consumer secret для авторизации": "Consumer secret for authorization", "ОбработатьОсобенныеСекретыОпций": "ProcessSpecialOptionsSecrets", -"СформироватьПараметрыСоединения": "FormConnectionParameters", -"Проверка_ТелеграмИнформацияБота": "Check_TelegramBotInformation", +"ОтметитьСообщениеКакПрочитанное": "MarkMessageAsReaded", +"Dropbox_ОтменитьПубликациюФайла": "Dropbox_CancelFilePublication", "Путь назначение для перемещения": "Destination path for moving", "ВыполнитьЗапросSQL (Select, код": "ExecuteSQLQuery (Select, code", "Bitrix24_ПолучитьСписокХранилищ": "Bitrix24_GetStoragesList", @@ -6984,19 +6983,20 @@ "ВыполнитьЗапросSQL (Transaction": "ExecuteSQLQuery (Transaction", "ПолучитьЗначениеДляCLI(Значение": "GetCLIFormedValue(Value", "ID сообщения для редактирования": "Message ID for editing", -"ОтметитьСообщениеКакПрочитанное": "MarkMessageAsReaded", -"Dropbox_ОтменитьПубликациюФайла": "Dropbox_CancelFilePublication", -"tools/Modules/OPI_Компоненты.os": "tools/Modules/OPI_AddIns.os", -"Обновляет двоичные данные файла": "Updates file binary data", -"Быстрый переход по документации": "Fast navigation", -"https://en.openintegrations.dev": "https://openintegrations.dev", -"Удалить вариант свойства товара": "Delete product property variant", -"Отправляет файл в выбранный чат": "Sends the file to the selected chat room", -"Bitrix24_НачатьВыполнениеЗадачи": "Bitrix24_StartTask", -"только конкретному пользователю": "only to a specific user", -"Добавляет текущего бота в канал": "Adds the current bot to the channel", -"Удаляет текущего бота из канала": "Removes the current bot from the channel", +"СформироватьПараметрыСоединения": "FormConnectionParameters", +"Проверка_ТелеграмИнформацияБота": "Check_TelegramBotInformation", +"Служебный программный интерфейс": "Service", "ПолучитьСтатусУчетаВремени (хук": "GetTimekeepingStatus (wh", +"только конкретному пользователю": "only to a specific user", +"Получить список аватаров форума": "Get forum avatars list", +"Отправляет файл в выбранный чат": "Sends the file to the selected chat room", +"ПолучитьИнформациюОТаблице (TLS": "GetTableInformation (TLS", +"https://en.openintegrations.dev": "https://openintegrations.dev", +"Добавляет текущего бота в канал": "Adds the current bot to the channel", +"Быстрый переход по документации": "Fast navigation", +"Удалить вариант свойства товара": "Delete product property variant", +"tools/Modules/OPI_Компоненты.os": "tools/Modules/OPI_AddIns.os", +"Удаляет текущего бота из канала": "Removes the current bot from the channel", "Загружает файл на облачный диск": "Uploads a file to the cloud drive", "ЗагрузитьПоАдресуПолучитьОбъект": "UploadByUrlAndGetObject", "Удаляет каталог с подкаталогами": "Remove folder with subfolders", @@ -7004,11 +7004,10 @@ "Имя базы данных для подключения": "Name of the database to connect", "Добавляет комментарий к новости": "Adds a comment to the post", "Создает пустую подборку товаров": "Creates an empty product selection", +"Обновляет двоичные данные файла": "Updates file binary data", "ОтправитьУведомлениеОВводе (хук": "SendWritingNotification (wh", -"ПолучитьИнформациюОТаблице (TLS": "GetTableInformation (TLS", -"Загрузить коды активации товара": "Upload product activations codes", "ПолучитьСписокСобытийРекурсивно": "GetEventsListRecursively", -"Установить двоичное тело !NOCLI": "Set binary body !NOCLI", +"Bitrix24_НачатьВыполнениеЗадачи": "Bitrix24_StartTask", "ОтправитьОпрос (строчный массив": "SendPoll (string array", "Проверка_ТелеграмМестоположение": "Check_TelegramLocation", "ID пользователей для добавления": "New members IDs", @@ -7016,10 +7015,10 @@ "Удалить заявку на вызов курьера": "Delete courier invitation", "Получить стурктуру пользователя": "Get user fields structure", "Отправка в канал или в чат бота": "Sending to channel or bot chat", -"Copyright (c) 2019, ООО 1С-Софт": "Copyright (c) 2019, LLC 1C-Soft", +"Строка подключения к базе MySQL": "MySQL database connection string", "Создать заявку на вызов курьера": "Create courier invitation", -"Получить токен service аккаунта": "Get service account token", -"Курьеру необходима доверенность": "The courier needs a letter of attorney", +"МинимальныйРазмер).Равно(Истина": "MinimumSize).Equal(True", +"ИзменитьТрудозатратыЗадачи (хук": "UpdateTaskTimeAccounting (wh", "ПолучитьСписокСчетчиков (фильтр": "GetCountersList (filter)", "Структура параметров соединения": "Structure of connection parameters", "СоздатьБазуДанных (существующая": "CreateDatabase (existing", @@ -7028,51 +7027,50 @@ "ПарсерАргументовКоманднойСтроки": "CommandLineArgumentParser", "СформироватьТекстDeleteDatabase": "FormTextDeleteDatabase", "Создает пустой каталог на диске": "Creates an empty directory on the drive", -"МинимальныйРазмер).Равно(Истина": "MinimumSize).Equal(True", -"ИзменитьТрудозатратыЗадачи (хук": "UpdateTaskTimeAccounting (wh", +"Получить токен service аккаунта": "Get service account token", "ЯДиск_ДействияПубличныхОбъектов": "YDisk_PublicObjectActions", -"ПолучитьСтруктуруФильтраЗаписей": "GetRecordsFilterStrucutre", +"Copyright (c) 2019, ООО 1С-Софт": "Copyright (c) 2019, LLC 1C-Soft", +"Dropbox_ОтменитьПубликациюПапки": "Dropbox_CancelFolderPublication", "Создает твит с вложением-гифкой": "Creates a tweet with a gif attachment", +"Установить двоичное тело !NOCLI": "Set binary body !NOCLI", "Прекратить наблюдать за задачей": "Stop watching the task", "Имя бакета для загрузки объекта": "Name of the bucket to put the object", "Bitrix24_ПроверитьДоступКЗадаче": "Bitrix24_CheckTaskAccesses", "ОтправитьСообщение (json массив": "SendMessage (json array", -"Bitrix24_ПереименоватьХранилище": "Bitrix24_RenameStorage", "tools/Modules/OPI_ЗапросыSQL.os": "tools/Modules/OPI_SQLQueries.os", "Получает список каталогов диска": "Gets the list of drive directories", -"Установить параметры URL !NOCLI": "Set URL params !NOCLI", -"Dropbox_ОтменитьПубликациюПапки": "Dropbox_CancelFolderPublication", +"ПолучитьСтруктуруФильтраЗаписей": "GetRecordsFilterStrucutre", +"Bitrix24_ПереименоватьХранилище": "Bitrix24_RenameStorage", "ПолучитьХарактеристикиКатегории": "GetCategoryAttributes", -"Телеграм_ИзменитьИмяГлавнойТемы": "TelegramAPI_ChangeMainTopicName", -"ЗакончилисьПозиционныеПараметры": "PositionParamsEnded", -"Строка подключения к базе MySQL": "MySQL database connection string", -"артикул товара от производителя": "manufacturers item number", -"Не удалось записать файл лога!:": "Failed to write log file!:", +"Установить параметры URL !NOCLI": "Set URL params !NOCLI", "НайтиОтсутствующиеПоляКоллекции": "FindMissingCollectionFields", +"Не удалось записать файл лога!:": "Failed to write log file!:", +"артикул товара от производителя": "manufacturers item number", "Установить реакцию на сообщение": "Set message reaction", +"ЗакончилисьПозиционныеПараметры": "PositionParamsEnded", +"Телеграм_ИзменитьИмяГлавнойТемы": "TelegramAPI_ChangeMainTopicName", +"ПолучитьСсылкуСкачиванияОбъекта": "GetObjectDownloadLink", +"Время окончания ожидания курьера": "End time of waiting for the courier", "!OInt Сообщить(СообщениеУдаления": "!OInt Message(DeletingMessage", "УдалитьВыбранныеФайлы (каталог 1": "DeleteSelectedFiles (folder 1", "Тип аудиофайла: aac, ogg или m4a": "Audio type: aac, ogg or m4a", "Запускает ранее созданный сервер": "Starts a previously created server", "Телеграм_ОтправитьМестоположение": "TelegramAPI_SendLocation", -"Время окончания ожидания курьера": "End time of waiting for the courier", +"ОдобритьЗаявкуНаВступление (один": "ApprovePending (single", "VK_ДобавитьВариантСвойстваТовара": "VK_AddProductPropertyVariant", -"Количество возвращаемых объектов": "Number of returned objects", +"СоздатьСистемноеУведомление (хук": "CreateSystemNotification (wh", "ОпределитьМетодУправленияФорумом": "DetermineForumManagementMethod", "Удаляет бакет с выбранным именем": "Deletes the bucket by name", -"data/Classes/СоставБиблиотеки.os": "data/Classes/LibraryComposition.os", "Изменить вариант свойства товара": "Edit product property variant", "JSON клавиатуры или путь к .json": "Keyboard JSON or path to .json", "ОтключитьВсеСоединенияБазыДанных": "DisableAllDatabaseConnections", "РазмерЧасти И ТипЗнч(Файл) = Тип": "ChunkSize And TypeOf(File) = Type", "Проверка товаров Ozon недоступна": "Ozon product checkout is unavailable", -"СоздатьСистемноеУведомление (хук": "CreateSystemNotification (wh", -"VK_ИзменитьВариантСвойстваТовара": "VK_EditProductPropertyVariant", -"Проверка_ТелеграмУстановкаВебхук": "Check_TelegramWebhookSetup", -"Получить внешнюю ссылку каталога": "Get external link for folder", -"СформироватьЗаголовокАвторизации": "FormAuthorizationHeader", -"сбор данных контентной аналитики": "content analytics data collection", +"Количество возвращаемых объектов": "Number of returned objects", +"ПолучитьСписокОтветовНаСообщение": "GetMessageReplyList", "ОзонСписокЗначенийХарактеристики": "OzonListOfAttributesValues", +"Получить внешнюю ссылку каталога": "Get external link for folder", +"Проверка_ТелеграмУстановкаВебхук": "Check_TelegramWebhookSetup", "ПолучитьСписокСообщенийЧата (хук": "GetChatMessagesList (wh", "ДобавитьПараметрКоллекцияКоманды": "AddCommandCollectionParam", "Новый полужирный текст сообщения": "New bold message text", @@ -7080,41 +7078,41 @@ "См. ПолучитьСписокИконокАватаров": "See GetAvatarIconList", "ОжидатьВходящиеСоединения (ответ": "WaitIncomingConnections (response", "Идентификатор сообщения с файлом": "Identifier of the message with the file", +"VK_ИзменитьВариантСвойстваТовара": "VK_EditProductPropertyVariant", "Получает текущее серверное время": "Get current server time", -"Получить описание события !NOCLI": "Get event description !NOCLI", "Bitrix24_ПереместитьФайлВКаталог": "Bitrix24_MoveFileToFolder", "Закрывает или удаляет обсуждение": "Close or delete discussion", "Слак_ПолучитьОтложенныеСообщения": "Slack_GetScheduledMessages", "Установить объект запроса !NOCLI": "Set request object !NOCLI", -"Результат подключения расширения": "Result of extension connecting", "Получить последнюю ошибку !NOCLI": "Get last error !NOCLI", "ПолучитьДочерниеЭлементыКаталога": "GetFolderItems", +"СформироватьЗаголовокАвторизации": "FormAuthorizationHeader", "Изменить имя главной темы форума": "Edit main forum thread name", +"Получить описание события !NOCLI": "Get event description !NOCLI", "идентификатор автора комментария": "comment author identifier", -"Идентификатор файла или каталога": "Identifier of the file or folder", +"СформироватьИсключениеКомпоненты": "FormAddInException", "Коллекция, дополненная атрибутом": "A collection enhanced with a new attribute", "Отправка в канал или чат с ботом": "Sending to channel or bot chat", -"Возвращает в работу задачу по ID": "Returns a task to work by ID", "Получить заявку на вызов курьера": "Get сourier invitation", "Ошибка в данных коллекции таблиц": "Error in table collection data", -"ОткрытьСоединение (удаление базы": "CreateConnection (base deleting", "Создать персональное уведомление": "Create personal notification", "Вайбер_ПолучитьИнформациюОКанале": "Viber_GetChannelInfo", "Отправить двоичные данные !NOCLI": "Send binary data !NOCLI", "Номер сопроводительной накладной": "Number of the accompanying consignment note", -"ОтправитьДвоичныеДанные (таймаут": "SendBinaryData (timeout", +"ОткрытьСоединение (удаление базы": "CreateConnection (base deleting", "ИспользоватьСжатиеGzip (включено": "UseGzipCompression (enable", +"Изменить элемент чеклиста задачи": "Update tasks checklist element", "Telegram_СкрытьГлавнуюТемуФорума": "Telegram_HideMainForumTopic", "Создает метку с указанным именем": "Creates a tag with the specified name", "ПолучитьСписокРекламныхКатегорий": "GetAdvertisingCategoryList", "ПолучитьСписокВнешнихФайлов (все": "GetExternalFileList (full", +"ОтправитьДвоичныеДанные (таймаут": "SendBinaryData (timeout", "ПриостановитьРекламноеОбъявление": "PauseAdvertising", -"ОдобритьЗаявкуНаВступление (один": "ApprovePending (single", -"Изменить элемент чеклиста задачи": "Update tasks checklist element", -"АрхивироватьТовары (для удаления": "ArchiveProducts (for deleting", +"сбор данных контентной аналитики": "content analytics data collection", "Загрузить массив вложений !NOCLI": "Upload attachments array !NOCLI", -"СформироватьИсключениеКомпоненты": "FormAddInException", -"Ошибка удаления файла расширение": "Error deleting extension file", +"Возвращает в работу задачу по ID": "Returns a task to work by ID", +"АрхивироватьТовары (для удаления": "ArchiveProducts (for deleting", +"Изменяет имя главной темы форума": "Edits the name of the main forum thread", "ДобавитьЗаголовок (с дополнением": "AddHeader (adding", "Получить статус добавления кодов": "Get codes upload status", "Добавить элемент чеклиста задачи": "Add tasks checklist element", @@ -7123,20 +7121,20 @@ "ДобавитьДополнительныеФотоТовара": "AddAdditionalProductPhotos", "Обновить товар по Ozon ID нельзя": "It is not possible to update a product fields by Ozon ID", "Для автоматизации ведения канала": "For automating channel management", +"data/Classes/СоставБиблиотеки.os": "data/Classes/LibraryComposition.os", "Удаляет объект по заданному пути": "Deletes an object at the specified path", -"Новое имя файла (если необходимо": "New file name (if necessary", -"Изменяет имя главной темы форума": "Edits the name of the main forum thread", "Установить строковое тело !NOCLI": "Set string body !NOCLI", "Получить контент рейтинг товаров": "Get products content rating", "Массив из Строка, ДвоичныеДанные": "Array of String, BinaryData", "ТекущаяОбласть + \"\"#color=Бирюза": "CurrentArea + \"\"#color=Aqua", "Получает список складов компании": "Gets compnay warehouses list", +"Идентификатор файла или каталога": "Identifier of the file or folder", "ПолучитьЖурналИсходящихСообщений": "GetOutgoingMessageLog", +"Ошибка удаления файла расширение": "Error deleting extension file", +"Новое имя файла (если необходимо": "New file name (if necessary", "Получает описание поля типа дата": "Gets the description of a date field", -"ПолучитьСписокОтветовНаСообщение": "GetMessageReplyList", +"Выбрать в меню команду */newbot*": "Choose */newbot* command", "Изменяет имя существующего файла": "Changes the name of an existing file", -"ВернутьСоединение (принудительно": "ReturnConnection (forced", -"Информация о результате отправки": "Information about the result of sending", "Проверка_БитриксСтрока(Результат": "Check_BitrixString(Result", "ПолучитьСодержимоеХранилища (хук": "GetStorageObjects (wh", "Комментарий к заявке для курьера": "Comment to the request for courier", @@ -7144,8 +7142,8 @@ "tools/Modules/OPI_ЗапросыHTTP.os": "tools/Modules/OPI_HTTPRequests.os", "Добавить вариант свойства товара": "Add product property variant", "Получить запросы вступления чата": "Get chat join requests", +"Получить описание фильтра офисов": "Get office filter description", "Устанавливает новые правила чата": "Sets new chat rules", -"Создать результат из комментария": "Create result from comment", "ПолучитьСписокАльбомовРекурсивно": "GetAlbumListRecursively", "Client ID из настроек приложения": "Client ID from app settings", "Слак_ПолучитьСписокПользователей": "Slack_GetUserList", @@ -7154,115 +7152,117 @@ "Путь к удаляемой папке или файлу": "Path to the folder or file to be deleted", "ПолучитьИнформациюОКаталоге (хук": "GetFolderInformation (wh", "ПолучитьСписокХранилищПриложения": "GetAppStoragesList", +"Получает штрихкод места к заказу": "Gets the barcode CP for the order", +"Создать результат из комментария": "Create result from comment", "Bitrix24_ПолучитьСтруктуруЗадачи": "Bitrix24_GetTaskFieldsStructure", -"Получить описание фильтра офисов": "Get office filter description", "Получить значения характеристики": "Get attribute values", +"Результат подключения расширения": "Result of extension connecting", +"Получить описание заявки курьера": "Get courier invitations description", "Получить описание товара. !NOCLI": "Get product description. !NOCLI", "Получить структуру фильтра задач": "Get structure of tasks filter", "ПолучитьСтруктуруФильтраКаталога": "GetFolderFilterStructure", "ПолучитьСписокОбъектовРекурсивно": "GetObjectsListRecursively", "ОбщийРазмер - РазмерУчастка Цикл": "TotalSize - ChunkSize Do", "Добавить AWS4 авторизацию !NOCLI": "Add AWS4 authorization !NOCLI", -"Получить описание заявки курьера": "Get courier invitations description", "МинимальныйРазмерДляПотока Тогда": "MinimumStreamSize Then", -"Методы работы с Yandex Disk (ОПИ": "Yandex Disk methods (OpenIntegrations", +"ОтправитьГолосовоеСообщение (URL": "SendVoice (URL", "Удаляет объект с облачного диска": "Deletes an object from the cloud drive", -"Создает страницу в базе-родителе": "Creates a page in the parent database", "Ноушн_ПолучитьДанныеПользователя": "Notion_GetUserData", "Возвращает структуру блока по ID": "Returns the block structure by ID", "Telegram_ОтправитьМестоположение": "Telegram_SendLocation", "ВыполнитьЗапросСДвоичнымиДанными": "ExecuteRequestWithBinaryData", "Telegram_ПолучитьЧислоУчастников": "Telegram_GetParticipantCount", -"ОтправитьГолосовоеСообщение (URL": "SendVoice (URL", -"Получает штрихкод места к заказу": "Gets the barcode CP for the order", +"Методы работы с Yandex Disk (ОПИ": "Yandex Disk methods (OpenIntegrations", +"Информация о результате отправки": "Information about the result of sending", "Прочитать двоичные данные !NOCLI": "Read binary data !NOCLI", -"ЯДиск_ПолучитьСсылкуНаСкачивание": "YDisk_GetDownloadLink", +"Создает страницу в базе-родителе": "Creates a page in the parent database", "Получить список рабочих областей": "Get workspace list", -"ВозобновитьЭлементЧеклистаЗадачи": "RenewTasksChecklistElement", -"Обновляет токен по Refresh token": "Updates token by Refresh token", +"Строка или массив строк запросов": "String or array of request strings", "Получить описание договоренности": "Get appointment description", "О клавиатурах в документации API": "About keyboards in the API documentation", "Телеграм_ПолучитьЧислоУчастников": "TelegramAPI_GetMemberCount", "Удалить результат из комментария": "Delete result from comment", "Отправляет гифку в чат или канал": "Sends a GIF to a chat or channel", +"ЯДиск_ПолучитьСсылкуНаСкачивание": "YDisk_GetDownloadLink", "Получить элемент чеклиста задачи": "Get tasks checklist element", -"Получить структуру фильтра лидов": "Get lead filter structure", "УдалитьВыбранныеФайлы (каталог 2": "DeleteSelectedFiles (folder 2", "Отправляет видео в чат или канал": "Sends a video to a chat or channel", -"Устанавливает настройки инстанса": "Sets the instance settings", "СоздатьБазуДанных (удаление, TLS": "CreateDatabase (deleting, TLS", "Получить настройки учета времени": "Get timekeeping settings", "ДобавитьПользователейКФайлу (доп": "AddUsersToFile (new", "Удаляет товары без SKU из архива": "Deletes products without SKU from archive", "ЗаменитьТекстСообщения (разметка": "ReplaceMessageText (parsemode", +"Получить структуру фильтра лидов": "Get lead filter structure", "Получить список складов отгрузки": "Get shipping warehouses list", -"Bitrix24_ЗагрузитьФайлВХранилище": "Bitrix24_UploadFileToStorage", +"Обновляет токен по Refresh token": "Updates token by Refresh token", +"ВозобновитьЭлементЧеклистаЗадачи": "RenewTasksChecklistElement", +"Устанавливает настройки инстанса": "Sets the instance settings", "Массив ячеек вида А1 для очистки": "Array of cells like A1 to be cleared", -"УстановитьСкидкуНаУцененныйТовар": "SetProductDiscount", -"См.ДобавитьВариантСвойстваТовара": "See AddPropertyVariant", "Получает список подборок товаров": "Gets the list of product selections", +"Bitrix24_ЗагрузитьФайлВХранилище": "Bitrix24_UploadFileToStorage", "Получить ссылку загрузки объекта": "Get object upload link", "Получить занятость пользователей": "Get user busy", "Поле с типом title - обязательно": "Title field required", -"ПрочитатьДвоичныеДанные (таймаут": "ReadBinaryData (timeout", "Получает ранее созданны преалерт": "Gets a previously created prealert", "Текст %F0%9F%A5%9D и emoji \\(10%": "Text %F0%9F%A5%9D and emoji \\(10%", "Идентификатор изменяемого товара": "Identifier of the product being edited", "ВыполнитьКоманду (без соединения": "ExecuteCommand (no connection", -"ДобавитьПолучателейКНовости (хук": "AddPostRecipients (wh", +"ПрочитатьДвоичныеДанные (таймаут": "ReadBinaryData (timeout", "разрешение отображения информера": "informer display permission", +"УстановитьСкидкуНаУцененныйТовар": "SetProductDiscount", "ИсключитьПользователяИзЧата (хук": "DeleteUserFromChat (wh", -"Выбрать в меню команду */newbot*": "Choose */newbot* command", "ПолучитьСписокКомментариевЗадачи": "GetTaskCommentsList", "Несколько параметров и кодировка": "Multiple parameters and encoding", "расширенный период учета звонков": "extended call accounting period", -"Строка или массив строк запросов": "String or array of request strings", -"Добавить Basic авторизацию !NOCLI": "Add Basic authorization !NOCLI", -"URL к видеообложке для добавления": "URL of the video cover", -"массив идентификаторов календарей": "array of calendar identifiers", -"Выполняет произвольный SQL запрос": "Executes an arbitrary SQL query", -"Вайбер_ПолучитьДанныеПользователя": "Viber_GetUserData", -"Получить статус добавления товара": "Get product creation status", -"категория товара в вашем магазине": "product category in your shop", -"Заменяет текст сообщения на новый": "Replaces the message text with a new one", -"Bitrix24_ПоместитьКаталогВКорзину": "Bitrix24_MarkFolderAsDeleted", +"ДобавитьПолучателейКНовости (хук": "AddPostRecipients (wh", +"ВернутьСоединение (принудительно": "ReturnConnection (forced", +"См.ДобавитьВариантСвойстваТовара": "See AddPropertyVariant", "Создает опрос с вариантами ответа": "Creates a poll with answer options", +"Bitrix24_ПоместитьКаталогВКорзину": "Bitrix24_MarkFolderAsDeleted", +"Заменяет текст сообщения на новый": "Replaces the message text with a new one", +"категория товара в вашем магазине": "product category in your shop", +"Получить статус добавления товара": "Get product creation status", +"Выполняет произвольный SQL запрос": "Executes an arbitrary SQL query", +"массив идентификаторов календарей": "array of calendar identifiers", +"URL к видеообложке для добавления": "URL of the video cover", "Скачивает файл по указанному пути": "Downloads a file at the specified path", +"Добавить Basic авторизацию !NOCLI": "Add Basic authorization !NOCLI", +"Bitrix24_УдалитьКомментарийЗадачи": "Bitrix24_DeleteTaskComment", +"Вайбер_ПолучитьДанныеПользователя": "Viber_GetUserData", "доступные варианты разметки сайта": "available markup options", -"Действие над задачей не разрешено": "Action on the task is not allowed", -"ПолучитьСтруктуруФильтраСчетчиков": "GetCounterFilterStructure", +"Закрепляет сообщение в шапке чата": "Pins a message in the chat header", +"Dropbox_ПолучитьСписокФайловПапки": "Dropbox_GetFolderFileList", "ОтправитьТекстовоеСообщение (HTML": "SendTextMessage (HTML", "Получает историю изменений задачи": "Get history of task changing", "Получить характеристики категории": "Get category attributes", "Базы данных и электронные таблицы": "Databases and spreadsheets", "идентификатор владельца календаря": "calendar owner identifier", "Ссылка на страницу сайта магазина": "Link to the store's website page", -"Закрепляет сообщение в шапке чата": "Pins a message in the chat header", "Наименование на иностранном языке": "Foreign language name", "Получает список доступных каналов": "Gets a list of available channels", "ПолучитьСтруктуруНастроекИнстанса": "GetInstanceSettingsStructure", "РежимВосстановленияПутейФайловZIP": "ZIPRestoreFilePathsMode", -"Методы интеграции с Telegram (ОПИ": "Telegram integration methods (OpenIntegrations", -"Запрос, приходящий на http-сервис": "Request coming to the http service", -"Bitrix24_УдалитьКомментарийЗадачи": "Bitrix24_DeleteTaskComment", "ПолучитьСписокПользователейКанала": "GetChannelUserList", -"Bitrix24_СоздатьКаталогВХранилище": "Bitrix24_CreateStorageFolder", -"сериализованный JSON ответа от VK": "serialized JSON response from VK", -"ОтправитьГолосовоеСообщение (Путь": "SendVoice (Path", +"Методы интеграции с Telegram (ОПИ": "Telegram integration methods (OpenIntegrations", +"Действие над задачей не разрешено": "Action on the task is not allowed", +"ПолучитьСтруктуруФильтраСчетчиков": "GetCounterFilterStructure", "ПолучитьСписокПросмотревшихВажное": "GetImportantPostViewers", -"Перенести задачу в стадию канбана": "Move task to kanban stage", -"v1.1. Поэтому что-то нужно делать": "v1.1. Therefore, something needs to be done", -"название бренда или производителя": "brand or manufacturer name", -"query из Telegram.WebApp.initData": "query from Telegram.WebApp.initData", -"Code из авторизации через браузер": "Code from browser auth page", +"Bitrix24_СоздатьКаталогВХранилище": "Bitrix24_CreateStorageFolder", +"Запрос, приходящий на http-сервис": "Request coming to the http service", "Структура основных данных запроса": "Basic request data structure", -"ПолучитьСписокОтложенныхСообщений": "GetDelayedMessageList", -"ИзменитьАртикулыТоваров (обратный": "UpdateProductsArticles (reverse", -"Получает список локальных моделей": "Gets a list of local models", -"Открепляет сообщение в шапке чата": "Unpins a message in the chat header", "ПолучитьСтруктуруСобытияКалендаря": "GetCalendarEventsStructure", -"Ноушн_ПолучитьИнформациюОСтранице": "Notion_GetPageInfo", +"Открепляет сообщение в шапке чата": "Unpins a message in the chat header", +"Получает список локальных моделей": "Gets a list of local models", +"ИзменитьАртикулыТоваров (обратный": "UpdateProductsArticles (reverse", +"ПолучитьСписокОтложенныхСообщений": "GetDelayedMessageList", +"название бренда или производителя": "brand or manufacturer name", +"Code из авторизации через браузер": "Code from browser auth page", +"v1.1. Поэтому что-то нужно делать": "v1.1. Therefore, something needs to be done", +"Перенести задачу в стадию канбана": "Move task to kanban stage", "Твиттер_ПолучитьСсылкуАвторизации": "Twitter_GetAuthorizationLink", +"ОтправитьГолосовоеСообщение (Путь": "SendVoice (Path", +"сериализованный JSON ответа от VK": "serialized JSON response from VK", +"Ноушн_ПолучитьИнформациюОСтранице": "Notion_GetPageInfo", "УдалитьЭлементЧеклистаЗадачи (хук": "DeleteTasksChecklistElement (wh", "ПолучитьТекущегоПользователя (хук": "GetCurrentUser (wh", "ПолучитьСоответствиеКомандМодулей": "GetCommandModuleMapping", @@ -7270,218 +7270,217 @@ "ОтклонитьЗаявкуНаВступление (один": "DisapprovePending (single", "Получить участвующие товары акции": "Get current promo products", "Выполнить элемент чеклиста задачи": "Complete tasks checklist element", -"Устанавливает новую картинку чата": "Setup new chat picture", "Получить лимиты работы с товарами": "Get products requests limits", "Соединение, см. ОткрытьСоединение": "Connection, see. CreateConnection", "УстановитьСтатусПользователя (хук": "SetUserStatus (wh", "Получает информацию о книге по ID": "Gets information about the spreadsheet by ID", "Метод проверки статуса добавления": "Uploading status check", "Вес (за единицу товара, в граммах": "Weight (per unit, grams", +"Устанавливает новую картинку чата": "Setup new chat picture", "идентификатор родительской задачи": "parent task identifier", -"Dropbox_ПолучитьСписокФайловПапки": "Dropbox_GetFolderFileList", +"Отправляет в чат статус Вам пишут": "Send Writing... status to dialog", "Dropbox_ПолучитьСсылкуАвторизации": "Dropbox_GetAuthorizationLink", -"Bitrix24_НачатьНаблюдатьЗаЗадачей": "Bitrix24_StartWatchingTask", "Telegram_СоздатьСсылкуПриглашение": "Telegram_CreateInviteLink", +"Получить структуру фильтра сделок": "Get deals filter structure", "Проверка_БитриксДоступныеДействия": "Check_BitrixAvailableActions", "ДобавитьПараметрКоллекцияВТаблицу": "AddCollectionParamToTable", "Изменяет данные события календаря": "Modifies calendar event data", "Bitrix24_ДобавитьЗадачуВИзбранное": "Bitrix24_AddTaskToFavorites", "Получить реестры платежей на дату": "Get delivery cash registry", -"УдалитьПользовательскоеПолеЗадачи": "DeleteCustomTaskField", "Возвращает тело ответа как строку": "Returns the body of the response as a string", "JSON авторизации или путь к .json": "Authorization JSON or path to .json", "Получает список соединений в пуле": "Gets the list of connections in the pool", "Номер страницы выборки результата": "Result selection page number", "Телеграм_СоздатьУдалитьТемуФорума": "TelegramAPI_CreateDeleteForumTopic", "ПрекратитьНаблюдатьЗаЗадачей (хук": "StopWatchingTask (wh", -"АктуализироватьВходящиеСоединения": "ActualiseIncomingConnections", "Обновляет токен по Refresh токену": "Update token by refresh token", -"Телеграм_СоздатьСсылкуПриглашение": "TelegramAPI_CreateInvitationLink", -"Ошибка работы с криптографией: %1": "Cryptography processing error: %1", -"VK_ПолучитьСписокКатегорийТоваров": "VK_GetProductCategoryList", -"ОбработатьСтрокуПараметровЗапроса": "ProcessRequestParametersString", -"Сформировать параметры соединения": "Form connection parameters", -"Bitrix24_УбратьЗадачуИзИзбранного": "Bitrix24_RemoveTaskFromFavorites", "Предпочтительное хранение токенов": "Preferred token storage", -"Dropbox_ВосстановитьОбъектКВерсии": "Dropbox_RestoreObjectToVersion", -"ID первого загруженного сообщения": "ID of first message", -"Получить список категорий товаров": "Get a list of product categories", -"ОтметитьСообщениеКакНепрочитанное": "MarkMessageAsUnreaded", "Создает счетчик по описанию полей": "Creates a counter by field description", -"Получить структуру фильтра сделок": "Get deals filter structure", +"ОтметитьСообщениеКакНепрочитанное": "MarkMessageAsUnreaded", +"Телеграм_СоздатьСсылкуПриглашение": "TelegramAPI_CreateInvitationLink", +"Получить список категорий товаров": "Get a list of product categories", +"ID первого загруженного сообщения": "ID of first message", +"Dropbox_ВосстановитьОбъектКВерсии": "Dropbox_RestoreObjectToVersion", +"Bitrix24_УбратьЗадачуИзИзбранного": "Bitrix24_RemoveTaskFromFavorites", +"Сформировать параметры соединения": "Form connection parameters", +"ОбработатьСтрокуПараметровЗапроса": "ProcessRequestParametersString", +"VK_ПолучитьСписокКатегорийТоваров": "VK_GetProductCategoryList", +"Ошибка работы с криптографией: %1": "Cryptography processing error: %1", +"query из Telegram.WebApp.initData": "query from Telegram.WebApp.initData", +"АктуализироватьВходящиеСоединения": "ActualiseIncomingConnections", "Проверка_БитриксСписокРезультатов": "Check_BitrixResultsList", -"ПолучитьСтатусУчастияПользователя": "GetUserParticipationStatus", +"УдалитьПользовательскоеПолеЗадачи": "DeleteCustomTaskField", "ИнициализироватьВнешнююКомпоненту": "InitializeAddIn", +"Инициализировать загрузку частями": "Init parts upload", +"Путь помещения загруженного файла": "Path to place the downloaded file", "Отправляет файл диска в чат по ID": "Send disk file to chat", "Введите название вашей интеграции": "Enter the name of your integration", "Получает информацию о файле по ID": "Get information about file by ID", "Bitrix24_ПолучитьИнформациюОФайле": "Bitrix24_GetFileInformation", -"Отправляет в чат статус Вам пишут": "Send Writing... status to dialog", "Изменяет текст комментария задачи": "Changes task comment text", "Идентификатор удаляемого каталога": "ID of folder to be deleted", -"ПолучитьHexСтрокуИзДвоичныхДанных": "GetHexStringFromBinaryData", "ОткрытьСоединение (ошибка без TLS": "CreateConnection (error without TLS", "ОжидатьВходящиеСоединения (сервер": "WaitIncomingConnections (server", "УстановитьURL: URL пуст - пропуск": "SetURL: URL is empty - skip", "ВыполнитьЗапросМультипартРелэйтед": "ExecuteMultipartRelatedRequest", "УстановитьРеакциюНаСообщение (хук": "SetMessageReaction (wh", -"Инициализировать загрузку частями": "Init parts upload", "Структура JSON данных медиагруппы": "The structure of the JSON media group data", -"Устанавливает новое описание чата": "Sets new chat description", -"Получить статус паспортных данных": "Get passport data status", -"Путь помещения загруженного файла": "Path to place the downloaded file", -"УстановитьURL: установка значения": "SetURL: setting the value", -"Структура настроек TLS соединения": "Structure of TLS connection settings", -"Структура дополнительных настроек": "Additional settings structure", -"Получает настройки магазина по ID": "Gets market (campaign) settings by ID", +"ПолучитьHexСтрокуИзДвоичныхДанных": "GetHexStringFromBinaryData", +"ПолучитьСтатусУчастияПользователя": "GetUserParticipationStatus", +"Bitrix24_НачатьНаблюдатьЗаЗадачей": "Bitrix24_StartWatchingTask", +"ПолучитьДвоичныеДанныеИзHexСтроки": "GetBinaryDataFromHexString", +"Отступ получения элементов списка": "Offst of items list", +"Структура JSON данных авторизации": "The structure of the JSON authentication data", +"Данные для отправки в виде строки": "Data to be sent as a string", "Соединение или строка подключения": "Connection or connection string", "IP адрес или доменное имя сервера": "IP address or domain name of the server", -"Данные для отправки в виде строки": "Data to be sent as a string", -"Структура JSON данных авторизации": "The structure of the JSON authentication data", -"Отступ получения элементов списка": "Offst of items list", -"ПолучитьДвоичныеДанныеИзHexСтроки": "GetBinaryDataFromHexString", +"Структура дополнительных настроек": "Additional settings structure", +"Структура настроек TLS соединения": "Structure of TLS connection settings", +"УстановитьURL: установка значения": "SetURL: setting the value", +"Получить статус паспортных данных": "Get passport data status", +"Устанавливает новое описание чата": "Sets new chat description", +"Получает настройки магазина по ID": "Gets market (campaign) settings by ID", "Начинает учет времени пользователя": "Starts user timekeeping", +"GreenAPI_ПолучитьQR(ПараметрыТеста": "GreenAPI_GetQR(TestParameters", "Отметить сообщение как прочитанное": "Mark message as readed", "ДропБокс_ПолучитьСписокФайловПапки": "DropboxAPI_GetFolderFileList", "Текст (заголовок) пункта чек листа": "Text (title) of checklist element", -"GreenAPI_ПолучитьQR(ПараметрыТеста": "GreenAPI_GetQR(TestParameters", -"ПолучитьТелоОтветаКакДанныеИлиПуть": "GetResponseBodyAsBinaryOrPath", "отношение или действие для фильтра": "attitude or action for the filter", +"Устанавливает новый заголовок чата": "Sets new chat title", "Выберите имя и добавьте разрешения": "Select a name and add permissions", -"Ответ или этот же объект обработки": "The response or the same processing object", "ПолучитьСтруктуруНастроекКалендаря": "GetCalendarSettingsStructure", "ДобавитьИменованныйПараметрКоманды": "AddNamedCommandParameter", -"Устанавливает новый заголовок чата": "Sets new chat title", -"Получить список трудозатрат задачи": "Get task time accounting list", "Праздники и памятные даты Беларуси": "Holidays and memorable dates in Belarus", -"ОтправитьТекстовоеСообщение (канал": "SendTextMessage (channel", +"Получить список трудозатрат задачи": "Get task time accounting list", "Удаляет сообщение в выбранном чате": "Deletes a message in the selected chat room", -"ИзменитьПользовательскоеПолеЗадачи": "UpdateCustomTaskField", -"Проверка_БитриксСписокКомментариев": "Check_BitrixCommentsList", -"ПолучитьСписокКалендарейРекурсивно": "GetCalendarsListRecursively", -"Создает твит с картинкой вложением": "Creates a tweet with an image attachment", -"ПолучитьСокращеннуюСтруктуруТовара": "GetSimplifiedProductStructure", -"СоздатьРезультатИзКомментария (хук": "CreateResultFromComment (wh", -"Получить структуру настроек модели": "Get model settings structure", -"Получить список пользователей чата": "Get chats users", -"Удаляет элемент из чеклиста задачи": "Deletes element from tasks checklist", -"Соответствие изменяемых параметров": "Map of editable parameters", -"ДобавитьПозиционныйПараметрКоманды": "AddPositionalCommandParameter", -"Временная отметка или ID сообщения": "Timestamp or message ID", -"ПолучитьСтруктуруКалендаря (пустая": "GetCalendarStructure (empty", -"ТолстыйКлиентУправляемоеПриложение": "ThickClientManagedApplication", -"Получить структуру фильтра товаров": "Get products filter structure", -"Добавить Bearer авторизацию !NOCLI": "Add Bearer authorization", "ДобавитьФайлRelated: Запись данных": "AddFileAsRelated: Data writing", -"отображать завершенные задачи: Y,N": "display completed tasks: Y,N", -"ПолучитьЗаписи (непонятная колонка": "GetRecords (obscure column", -"ФайлЛога = Новый Файл(ПутьКФайлу": "LogFile = New File(FilePath", -"Сформировать ссылку получения кода": "Generate code retrieval link", +"ИзменитьПользовательскоеПолеЗадачи": "UpdateCustomTaskField", +"ТолстыйКлиентУправляемоеПриложение": "ThickClientManagedApplication", +"ПолучитьСписокКалендарейРекурсивно": "GetCalendarsListRecursively", +"ОтправитьТекстовоеСообщение (канал": "SendTextMessage (channel", +"Добавить Bearer авторизацию !NOCLI": "Add Bearer authorization", +"Получить структуру фильтра товаров": "Get products filter structure", +"ПолучитьСтруктуруКалендаря (пустая": "GetCalendarStructure (empty", +"Временная отметка или ID сообщения": "Timestamp or message ID", +"ДобавитьПозиционныйПараметрКоманды": "AddPositionalCommandParameter", +"Проверка_БитриксСписокКомментариев": "Check_BitrixCommentsList", +"Телеграм_СкрытьПоказатьГлавнуюТему": "TelegramAPI_HideShowMainTopic", +"Удаляет элемент из чеклиста задачи": "Deletes element from tasks checklist", +"Получить список пользователей чата": "Get chats users", +"Получить структуру настроек модели": "Get model settings structure", +"СоздатьРезультатИзКомментария (хук": "CreateResultFromComment (wh", +"ПолучитьСокращеннуюСтруктуруТовара": "GetSimplifiedProductStructure", +"Создает твит с картинкой вложением": "Creates a tweet with an image attachment", +"Соответствие изменяемых параметров": "Map of editable parameters", +"Ответ или этот же объект обработки": "The response or the same processing object", +"ПРЕОБРАЗОВАТЬBASE64ВДВОИЧНЫЕДАННЫЕ": "CONVERTBASE64TOBINARY", +"ПолучитьТелоОтветаКакДанныеИлиПуть": "GetResponseBodyAsBinaryOrPath", +"ПеренестиЗадачуВСтадиюКанбана (хук": "MoveTaskToKanbanStage (wh", "Получить список запущенных моделей": "List running models", "ИзменитьЭлементЧеклистаЗадачи (хук": "UpdateTasksChecklistElement (wh", -"Вайбер_ОтправитьТекстовоеСообщение": "Viber_SendTextMessage", "ЗаписатьПобитовоеИсключительноеИли": "WriteBitwiseXor", "ПолучитьЭлементЧеклистаЗадачи (хук": "GetTasksChecklistElement (wh", "Bitrix24_ДобавитьКомментарийЗадачи": "Bitrix24_AddTaskComment", -"ДобавитьЭлементЧеклистаЗадачи (хук": "AddTasksChecklistElement (wh", -"Новое наименование группового чата": "New group chat name", -"Телеграм_СкрытьПоказатьГлавнуюТему": "TelegramAPI_HideShowMainTopic", -"Устанавливает Content-Type запроса": "Sets the Content-Type of the request", -"HEX дополнительного цвета (#ffffff": "HEX secondary color (#ffffff", -"ПРЕОБРАЗОВАТЬBASE64ВДВОИЧНЫЕДАННЫЕ": "CONVERTBASE64TOBINARY", -"Bitrix24_ПолучитьКомменатрийЗадачи": "Bitrix24_GetTaskComment", "Получить структуру остатков товара": "Get product stocks structure", -"ПеренестиЗадачуВСтадиюКанбана (хук": "MoveTaskToKanbanStage (wh", -"ПолучитьПользовательскоеПолеЗадачи": "GetCustomTaskField", -"ПолучитьИнформациюОТаблице (ошибка": "GetTableInformation (error", -"ПолучитьСсылкуЗагрузкиОбъекта (PUT": "GetObjectUploadLink (PUT", -"Закрывает тему для новых сообщений": "Closes the thread for new messages", -"ПолучитьВнешнююСсылкуКаталога (хук": "GetFolderExternalLink (wh", -"Путь для сохранение файла на Диске": "Path for saving the file to disk", -"Некорректная коллекция расширений!": "Incorrect collection of extensions!", -"СформироватьПараметрыЗагрузкиФайла": "FormFileUploadParameters", -"Устанавливает значения ячеек листа": "Sets sheet cell values", -"Массив данных статистики по постам": "Array of post statistics data", -"Получает список меток пользователя": "Gets a list of the users tags", -"ПолучитьСтурктуруПользователя (хук": "GetUserFieldsStructure (wh", -"Строка, Структура Из КлючИЗначение": "String, Structure Of KeyAndValue", -"ID целевого чата или IDЧата*IDТемы": "Target chat ID or ChatID*TopicID", -"Получает токен по коду авторизации": "Get token by auth code", +"Вайбер_ОтправитьТекстовоеСообщение": "Viber_SendTextMessage", +"Bitrix24_ПолучитьКомменатрийЗадачи": "Bitrix24_GetTaskComment", +"ДобавитьЭлементЧеклистаЗадачи (хук": "AddTasksChecklistElement (wh", +"HEX дополнительного цвета (#ffffff": "HEX secondary color (#ffffff", +"Сформировать ссылку получения кода": "Generate code retrieval link", +"Устанавливает Content-Type запроса": "Sets the Content-Type of the request", "Вайбер_ПолучитьОнлайнПользователей": "Viber_GetOnlineUsers", +"Новое наименование группового чата": "New group chat name", +"отображать завершенные задачи: Y,N": "display completed tasks: Y,N", +"ПолучитьСтурктуруПользователя (хук": "GetUserFieldsStructure (wh", +"ПолучитьИнформациюОТаблице (ошибка": "GetTableInformation (error", +"ФайлЛога = Новый Файл(ПутьКФайлу": "LogFile = New File(FilePath", +"ПолучитьЗаписи (непонятная колонка": "GetRecords (obscure column", +"Получает токен по коду авторизации": "Get token by auth code", +"ID целевого чата или IDЧата*IDТемы": "Target chat ID or ChatID*TopicID", "Bitrix24_ПолучитьСписокРезультатов": "Bitrix24_GetResultsList", -"Изменяет свойства подборки товаров": "Edits the properties of a product selection", -"Восстанавливает каталог из корзины": "Resotre folder form recycle bin", -"Идентификатор обновляемого объекта": "Identifier of the object to update", -"Инициализирует новый пустой запрос": "Initializes a new empty request", -"Приостановить рекламное объявление": "Pause advertising post", -"идентификатор категории на Маркете": "category identifier on the Market", -"ПолучитьСписокПользователейДиалога": "GetChatMembersList", -"Bitrix24_ПолучитьСсылкуАвторизации": "Bitrix24_GetAuthLink", -"Добавляет видео к атрибутам товара": "Adds video to product attributes", -"Получить ссылку скачивания объекта": "Get object download link", -"Создает пустой каталог в хранилище": "Create new foldera at the storage", -"необходимо будет ввести в браузере": "you will need to enter in the browser", -"ЯДиск_ПолучитьСписокОпубликованных": "YDisk_GetPublishedList", -"Telegram_ПоказатьГлавнуюТемуФорума": "Telegram_ShowMainForumTopic", -"ID товаров для создания штрихкодов": "Products IDs for barcodes creating", -"ОпределитьМетодЗагрузкиИзображений": "DetermineImageUploadMethod", -"Количество единиц товара (в штуках": "Number of units (pcs", -"ПолучитьНастройкиУчетаВремени (хук": "GetTimekeepingSettings (wh", -"Массив значений параметров запроса": "Array of query parameter values", -"Расширение файла в случае отправки": "File extension in case of sending", -"JSON - передается как путь к файлу": "JSON is passed as a path to a .json file", -"Получает список товаров сообщества": "Gets the community's product list", -"ОтправитьТекстовоеСообщение (форум": "SendTextMessage (forum", -"Ожидать входящие соединения !NOCLI": "Wait incoming connections !NOCLI", -"УдалитьРезультатИзКомментария (хук": "Delete result from comment", -"Количество сообщений для получения": "Number of messages to receive", -"Получает список пользователей чата": "Gets the list of chat members", -"Добавляем первый вопрос в контекст": "Adding the first question to the context", -"Bitrix24_ИзменитьКомментарийЗадачи": "Bitrix24_UpdateTaskComment", -"Получить журнал входящих сообщений": "Get incoming message log", -"ОжидатьВходящиеСоединения (фоновое": "WaitIncomingConnections (bgj", -"признак встречи с участниками: Y,N": "flag of meeting with participants: Y,N", -"Выберите пункт **Входящий вебхук**": "Select **Incoming Webhook**", -"ДобавитьФайлRelated: запись данных": "AddFileAsRelated: data writing", -"Получает описание поля типа булево": "Gets the description of a boolean field", -"ПолучитьСтруктуруПараметровЗапроса": "GetRequestParameterStructure", -"См. ПолучитьСписокКатегорийТоваров": "See GetProductCategoryList", -"Получить структуру фильтра записей": "Get records filter strucutre", -"ОтправитьТекстовоеСообщение (emoji": "SendTextMessage (emoji", -"ОзонАПИ_ЗагрузкаИОбновлениеТоваров": "OzonAPI_UploadingAndUpdatingProducts", -"СоздатьТаблицу (непонятная колонка": "CreateTable (obscure column", -"используемый на сайте тип разметки": "markup type used on the site", -"Получает черновик заявки FBO по ID": "Gets FBO draft by ID", -"Тестовая отправка данных на сервер": "Test data sending to the server", +"Получает список меток пользователя": "Gets a list of the users tags", +"ПолучитьПользовательскоеПолеЗадачи": "GetCustomTaskField", +"Массив данных статистики по постам": "Array of post statistics data", +"СформироватьПараметрыЗагрузкиФайла": "FormFileUploadParameters", +"Некорректная коллекция расширений!": "Incorrect collection of extensions!", +"Путь для сохранение файла на Диске": "Path for saving the file to disk", +"ПолучитьВнешнююСсылкуКаталога (хук": "GetFolderExternalLink (wh", +"Закрывает тему для новых сообщений": "Closes the thread for new messages", +"ПолучитьСсылкуЗагрузкиОбъекта (PUT": "GetObjectUploadLink (PUT", +"Устанавливает значения ячеек листа": "Sets sheet cell values", +"Строка, Структура Из КлючИЗначение": "String, Structure Of KeyAndValue", "Закрыть входящее соединение !NOCLI": "Close incoming connection !NOCLI", "Номер свободного порта для сервера": "Available port number for the server", -"Сохранить публичный объект на диск": "Save public object to disk", -"Получить переводы платежей на дату": "Get delivery cash transfers", -"Структура Из КлючИЗначение, Строка": "Structure Of KeyAndValue, String", -"произвольное значение для проверки": "arbitrary value to check", -"Список доступных областей действия": "List of available scopes", +"Количество единиц товара (в штуках": "Number of units (pcs", +"ОпределитьМетодЗагрузкиИзображений": "DetermineImageUploadMethod", +"ID товаров для создания штрихкодов": "Products IDs for barcodes creating", +"Telegram_ПоказатьГлавнуюТемуФорума": "Telegram_ShowMainForumTopic", +"ЯДиск_ПолучитьСписокОпубликованных": "YDisk_GetPublishedList", +"необходимо будет ввести в браузере": "you will need to enter in the browser", +"Получить ссылку скачивания объекта": "Get object download link", +"Массив значений параметров запроса": "Array of query parameter values", +"Добавляет видео к атрибутам товара": "Adds video to product attributes", +"Bitrix24_ПолучитьСсылкуАвторизации": "Bitrix24_GetAuthLink", +"ПолучитьСписокПользователейДиалога": "GetChatMembersList", +"идентификатор категории на Маркете": "category identifier on the Market", +"Инициализирует новый пустой запрос": "Initializes a new empty request", +"ДобавитьФайлRelated: запись данных": "AddFileAsRelated: data writing", +"ПолучитьНастройкиУчетаВремени (хук": "GetTimekeepingSettings (wh", +"Приостановить рекламное объявление": "Pause advertising post", +"Расширение файла в случае отправки": "File extension in case of sending", +"Изменяет свойства подборки товаров": "Edits the properties of a product selection", +"Получает список товаров сообщества": "Gets the community's product list", +"Количество сообщений для получения": "Number of messages to receive", +"ОтправитьТекстовоеСообщение (форум": "SendTextMessage (forum", +"Ожидать входящие соединения !NOCLI": "Wait incoming connections !NOCLI", +"Получает список пользователей чата": "Gets the list of chat members", +"Создает пустой каталог в хранилище": "Create new foldera at the storage", +"признак встречи с участниками: Y,N": "flag of meeting with participants: Y,N", +"Получить журнал входящих сообщений": "Get incoming message log", +"ОжидатьВходящиеСоединения (фоновое": "WaitIncomingConnections (bgj", +"Идентификатор обновляемого объекта": "Identifier of the object to update", +"Выберите пункт **Входящий вебхук**": "Select **Incoming Webhook**", +"JSON - передается как путь к файлу": "JSON is passed as a path to a .json file", +"Добавляем первый вопрос в контекст": "Adding the first question to the context", +"Bitrix24_ИзменитьКомментарийЗадачи": "Bitrix24_UpdateTaskComment", +"Получает описание поля типа булево": "Gets the description of a boolean field", +"УдалитьРезультатИзКомментария (хук": "Delete result from comment", +"См. ПолучитьСписокКатегорийТоваров": "See GetProductCategoryList", +"СоздатьТаблицу (непонятная колонка": "CreateTable (obscure column", "получать доступ к отчетам по рынку": "access market reports", -"Скачивает файл с серверов Telegram": "Download file from Telegram servers", +"Список доступных областей действия": "List of available scopes", +"произвольное значение для проверки": "arbitrary value to check", +"Получить переводы платежей на дату": "Get delivery cash transfers", +"Сохранить публичный объект на диск": "Save public object to disk", "Текст лицензии доступен по ссылке:": "License text available at:", +"Тестовая отправка данных на сервер": "Test data sending to the server", +"Получает черновик заявки FBO по ID": "Gets FBO draft by ID", +"используемый на сайте тип разметки": "markup type used on the site", +"ОзонАПИ_ЗагрузкаИОбновлениеТоваров": "OzonAPI_UploadingAndUpdatingProducts", +"ОтправитьТекстовоеСообщение (emoji": "SendTextMessage (emoji", +"Получить структуру фильтра записей": "Get records filter strucutre", +"Скачивает файл с серверов Telegram": "Download file from Telegram servers", "Переадресация И Ответ.КодСостояния": "Redirection And Response.StatusCode", -"Сохраните ClientID и Client Secret": "Save ClientID and Client Secret", -"Получить договоренность о доставке": "Get delivery appointment", +"Структура Из КлючИЗначение, Строка": "Structure Of KeyAndValue, String", +"ДобавитьПользовательскоеПолеЗадачи": "AddCustomTaskField", +"ПолучитьСтруктуруПараметровЗапроса": "GetRequestParameterStructure", "Получает список результатов задачи": "Gets results list for task", "Получает список запущенных моделей": "Gets a list of running models", -"Идентификатор объекта для удаления": "Identifier of the object to delete", "ДобавитьЗаписи (непонятная колонка": "AddRecords (obscure column", "Переносит выбранные товары в архив": "Moves selected items to the archive", -"Получает данные пользователя по ID": "Gets user data by ID", -"ДобавитьПользовательскоеПолеЗадачи": "AddCustomTaskField", +"Сохраните ClientID и Client Secret": "Save ClientID and Client Secret", +"Идентификатор объекта для удаления": "Identifier of the object to delete", "ПолучитьДоступныеИнтервалыДоставки": "GetAvailableDeliveryIntervals", -"ОбработатьДанные Telegram Mini App": "Process Telegram Mini App data", -"Возврат полной информации о модели": "Return full model information", -"Отбор по префиксу, если необходимо": "Filtering by prefix, if necessary", +"Восстанавливает каталог из корзины": "Resotre folder form recycle bin", +"Получает данные пользователя по ID": "Gets user data by ID", "Получает список доступных регионов": "Gets the list of available regions", -"выводить код счетчика в одну строку": "output the counter code in one line", +"Отбор по префиксу, если необходимо": "Filtering by prefix, if necessary", +"Получить договоренность о доставке": "Get delivery appointment", +"Возврат полной информации о модели": "Return full model information", +"ОбработатьДанные Telegram Mini App": "Process Telegram Mini App data", "Строка,Число,Массив из Строка,Число": "String,Number,Array of String,Number", "ID родительского блока или страницы": "Parent block or page ID", -"ВыполнитьЗапрос: Выполнение запроса": "ExecuteRequest: Execution", +"Соединение или параметры соединения": "Connection or connection parameters", "Если Не ФайлЛога.Существует() Тогда": "If Not LogFile.Exists() Then", "Изменяет свойства существующей базы": "Edits properties of an existing database", "Получает основную информацию о боте": "Gets basic information about the bot", @@ -7490,37 +7489,38 @@ "Получает информацию о текущем диске": "Gets information about the current disk", "Завершает учет времени пользователя": "Stops user timekeeping", "VK_ПриостановитьРекламноеОбъявление": "VK_PauseAdvertising", -"Наименование создаваемого календаря": "Name of the created calendar", -"сериализованный JSON ответа от CDEK": "serialized JSON response from CDEK", +"ВыполнитьЗапрос: Выполнение запроса": "ExecuteRequest: Execution", +"список объектов сообщений контекста": "list of context message objects", +"Возобновить элемент чеклиста задачи": "Renew tasks checklist element", "ОжидатьВходящиеСоединения (закрытие": "WaitIncomingConnections (shutdown", "Получает информацию событиях канала": "Gets information about channel events", "Метод в документации AWS (по частям": "Method at AWS documentation (multipart", "Получает информацию о внешнем файле": "Gets information about the external file", -"список объектов сообщений контекста": "list of context message objects", "Использовать кодирование URL !NOCLI": "Use URL encoding !NOCLI", "Дата указывается в формате ISO 8601": "Dates are specified in ISO 8601 format", "ПолучитьЗанятостьПользователей (хук": "GetUserBusy (wh", "Идентификатор каталога для загрузки": "Folder identifier", "Получает дочерние элементы каталога": "Get folder child elements", +"Наименование создаваемого календаря": "Name of the created calendar", "Bitrix24_ПолучитьВнешнююСсылкуФайла": "Bitrix24_GetFileExternalLink", -"идентификатор фильтра для изменения": "filter identifier to change", -"Возобновить элемент чеклиста задачи": "Renew tasks checklist element", +"сериализованный JSON ответа от CDEK": "serialized JSON response from CDEK", "Удаляет задачу из списка избранного": "Delete task from favorites list", -"Установить объект соединения !NOCLI": "Set connection object !NOCLI", -"ПолучитьСтатусАсинхронногоИзменения": "GetAsynchronousChangeStatus", -"доступ к группе отчетов Монетизация": "access to report group Monetization", -"ОтправитьТекстовоеСообщение (цитата": "SendTextMessage (quote", -"Таймаут ожидания ответа (в секундах": "Response timeout (in seconds", -"Создает сокращенный URL из обычного": "Creates a shortened URL from a regular one", -"OPI_Тесты.TCP_ОбработатьПодключение": "OPI_Tests.TCP_ProcessConnection", -"Dropbox_ДобавитьПользователейКПапке": "Dropbox_AddUsersToFolder", -"УстановитьСтатусУчастияПользователя": "SetUserParticipationStatus", -"Возвращает путь к файлу тела ответа": "Returns the path to the response body file", -"ПолучитьСтруктуруСообщенияКонтекста": "GetContextMessageStructure", -"Изменяет алгоритм для подписи OAuth": "Changes the algorithm for OAuth signatures", -"ПолучитьСсылкуАвторизацииПриложения": "GetAppAuthLink", -"ПолучитьТелоОтветаКакДвоичныеДанные": "GetResponseBodyAsBinaryData", "идентификатор товара в системе Ozon": "product identifier in the Ozon system", +"ПолучитьСтатусАсинхронногоИзменения": "GetAsynchronousChangeStatus", +"идентификатор фильтра для изменения": "filter identifier to change", +"Dropbox_ДобавитьПользователейКПапке": "Dropbox_AddUsersToFolder", +"ПолучитьСсылкуАвторизацииПриложения": "GetAppAuthLink", +"Изменяет алгоритм для подписи OAuth": "Changes the algorithm for OAuth signatures", +"ПолучитьСтруктуруСообщенияКонтекста": "GetContextMessageStructure", +"Возвращает путь к файлу тела ответа": "Returns the path to the response body file", +"УстановитьСтатусУчастияПользователя": "SetUserParticipationStatus", +"доступ к группе отчетов Монетизация": "access to report group Monetization", +"OPI_Тесты.TCP_ОбработатьПодключение": "OPI_Tests.TCP_ProcessConnection", +"Создает сокращенный URL из обычного": "Creates a shortened URL from a regular one", +"Таймаут ожидания ответа (в секундах": "Response timeout (in seconds", +"ОтправитьТекстовоеСообщение (цитата": "SendTextMessage (quote", +"выводить код счетчика в одну строку": "output the counter code in one line", +"ПолучитьТелоОтветаКакДвоичныеДанные": "GetResponseBodyAsBinaryData", "ПроверитьЗагрузкуИзображенийТоваров": "CheckProductsImagesUpload", "Загружает переданный файл в каталог": "Upload local file to the folder", "Dropbox_ПолучитьСписокВерсийОбъекта": "Dropbox_GetObjectVersionList", @@ -7529,28 +7529,29 @@ "ID пользователя, затратившего время": "ID of user for time accounting", "Имя листа (первый лист по умолчанию": "Sheet name (first sheet by default", "Отсутствуют необходимые поля схемы:": "Required schema fields are missing:", -"Получить дочерние элементы каталога": "Get folder child elements", "Как OneScript пакет расширения ospx": "As a OneScript extension package in ospx format", "Получить структуру фильтра каталога": "Get fields structure for folder items filter", "Планирование и управление проектами": "Planning and projects management", +"Установить объект соединения !NOCLI": "Set connection object !NOCLI", "ВыполнитьЭлементЧеклистаЗадачи (хук": "CompleteTasksChecklistElement (wh", "Получить список комментариев задачи": "Get comments list for a task", -"Соединение или параметры соединения": "Connection or connection parameters", +"Отправляет документ в чат или канал": "Sends a document to a chat or channel", "РаботаСПользовательскимиПолямиЗадач": "CustomsTasksFieldsManagement", -"Актуализировать входящие соединения": "Actualise incoming connections", +"ID темы. Главная, если не заполнено": "Thread ID. Main if not filled", "информация об ошибках синхронизации": "synchronization error information", +"Dropbox_ПолучитьСтатусЗагрузкиПоURL": "Dropbox_GetUploadStatusByURL", "Boundary для разделения частей тела": "Boundary for separating body parts", "OPI: Не удалось отправить сообщение": "OPI: Failed to send message", "Получить список хранилищ приложения": "Get list of storages, available for current app", "Получить журнал исходящих сообщений": "Get outgoing message log", "Имя загружаемого файла с раширением": "Name of the file with the extension", -"Кнопки к сообщению, если необходимо": "Buttons to the message if necessary", "Функции формирования описаний полей": "Functions for generating field descriptions", "ПолучитьСтатусДобавленияТовара (SKU": "GetProductCreationStatus (SKU", "Идентификатор рабочего пространства": "Workspace identifier", "Изменяет существующее подразделение": "Update an existing department", +"Типы: audio, document, photo, video": "Types: audio, document, photo, video", "Начать запись тела multipart !NOCLI": "Start Multipart body !NOCLI", -"ID темы. Главная, если не заполнено": "Thread ID. Main if not filled", +"ОбработатьЗапрос: Формирование AWS4": "ProcessRequest: Form AWS4", "включить опцию Measurement Protocol": "enable the Measurement Protocol option", "СоздатьПерсональноеУведомление (хук": "CreatePersonalNotification", "Получает текущие настройки инстанса": "Gets the current instance settings", @@ -7559,18 +7560,17 @@ "Массив адресов активных подключений": "Array of addresses of active connections", "Запрос или этот же объект обработки": "The request or the same processing object", "Структура JSON данных массива полей": "The structure of the JSON array of fields data", -"ОбработатьЗапрос: Формирование AWS4": "ProcessRequest: Form AWS4", -"неподдержииваемый метод хеширования": "unsupported hashing method", -"Тег уникальности Если уже существет": "Uniqueness Tag. If already exist", "Получить список рекламных категорий": "Get a list of advertising categories", -"Dropbox_ПолучитьСтатусЗагрузкиПоURL": "Dropbox_GetUploadStatusByURL", -"Типы: audio, document, photo, video": "Types: audio, document, photo, video", -"Dropbox_ПолучитьИнформациюОбОбъекте": "Dropbox_GetObjectInformation", +"неподдержииваемый метод хеширования": "unsupported hashing method", +"Получить дочерние элементы каталога": "Get folder child elements", +"Кнопки к сообщению, если необходимо": "Buttons to the message if necessary", +"Создает преалерт для списка заказов": "Creates a prealert for the order list", +"Тег уникальности Если уже существет": "Uniqueness Tag. If already exist", +"Актуализировать входящие соединения": "Actualise incoming connections", "Получить входящие соединения !NOCLI": "Get incoming connections !NOCLI", "Получает основную информацию о чате": "Gets basic information about the chat", "ПолучитьОсновныеСоставляющиеПодписи": "GetMainSignatureParts", "Получает информацию о диалоге по ID": "Get chat data by ID", -"Отправляет документ в чат или канал": "Sends a document to a chat or channel", "Обработать данные Telegram Mini App": "Process Telegram Mini App data", "Признак получения ответа как строки": "An attribute of receiving the response as a string", "Отменяет загрузку объекта по частям": "Aborts the multipart uploading of the object", @@ -7580,135 +7580,135 @@ "ПолучитьПараметрыАвторизацииТвиттер": "GetTwitterAuthData", "Установить алгоритм OAuth V1 !NOCLI": "Set OAuth V1 algorithm !NOCLI", "YandexDisk_ПолучитьИнформациюОДиске": "YandexDisk_GetDiskInfo", +"Dropbox_ПолучитьИнформациюОбОбъекте": "Dropbox_GetObjectInformation", "Bitrix24_ДобавитьКомментарийНовости": "Bitrix24_AddPostComment", -"Создает преалерт для списка заказов": "Creates a prealert for the order list", -"Отправляет картинку в чат или канал": "Sends an image to a chat or channel", -"ВыполнитьЗапрос: выполнение запроса": "ExecuteRequest: executing", -"Добавляет участника в групповой чат": "Adds a participant to a group chat", -"Использовать multipart поля в OAuth": "Use multipart fields at OAuth", -"Создаёт товар по указанному Ozon ID": "Creates a product by specified Ozon ID", -"Выберите пункт создания нового бота": "Select the option to create a new bot", -"Нажать \"Создать ключ\" и забрать его": "Click on 'Create key' and retrieve it", -"Банит пользователя в выбранном чате": "Bans a user in the selected chat", -"Открывает ранее закрытое обсуждение": "Opens a previously closed discussion", "Тэг уникальности Если уже существет": "Uniqueness Tag. If already exist", +"Открывает ранее закрытое обсуждение": "Opens a previously closed discussion", +"Банит пользователя в выбранном чате": "Bans a user in the selected chat", +"Нажать \"Создать ключ\" и забрать его": "Click on 'Create key' and retrieve it", "ПолучитьБуферДвоичныхДанныхИзСтроки": "GetBinaryDataBufferFromString", -"Телеграм_ЗакрепитьОткрепитьСообщение": "TelegramAPI_PinUnpinMessage", -"Начинает наблюдение за задачей по ID": "Start watching a task by ID", -"ОтметитьСообщениеКакПрочитанное (хук": "MarkMessageAsReaded (wh", -"Получает одно уведомление из очереди": "Receives one notification from the queue", -"ИнициализироватьЗагрузкуЧастями (ЗЧО": "InitPartsUpload (UOP", -"ПолучитьСтруктуруДопПолейОтправления": "GetShipmentAdditionalFields", +"Создаёт товар по указанному Ozon ID": "Creates a product by specified Ozon ID", +"Использовать multipart поля в OAuth": "Use multipart fields at OAuth", +"Добавляет участника в групповой чат": "Adds a participant to a group chat", +"ВыполнитьЗапрос: выполнение запроса": "ExecuteRequest: executing", +"Отправляет картинку в чат или канал": "Sends an image to a chat or channel", +"Выберите пункт создания нового бота": "Select the option to create a new bot", "Признак типа заказа Интернет магазин": "Flag of Online store order type", -"Telegram_ОтправитьТекстовоеСообщение": "Telegram_SendTextMessage", "ПолучитьСписокОпубликованныхОбъектов": "GetPublishedObjectsList", +"ИнициализироватьЗагрузкуЧастями (ЗЗЧ": "InitPartsUpload (FPU", +"ПолучитьСтруктуруДопПолейОтправления": "GetShipmentAdditionalFields", +"Телеграм_ЗакрепитьОткрепитьСообщение": "TelegramAPI_PinUnpinMessage", +"Получает одно уведомление из очереди": "Receives one notification from the queue", +"ОтметитьСообщениеКакПрочитанное (хук": "MarkMessageAsReaded (wh", +"Начинает наблюдение за задачей по ID": "Start watching a task by ID", "Удалить пользовательское поле задачи": "Delete custom task field", +"ПолучитьОписанияХарактеристикТоваров": "GetProductsAttributesData", +"ИнициализироватьЗагрузкуЧастями (ЗЧО": "InitPartsUpload (UOP", "ДобавитьПолеMultipart: Запись данных": "AddMultipartFormDataField: Data writing", -"Client secret из настроек приложения": "Client secret from app settings", +"ОжидатьВходящиеСоединения (сообщение": "WaitIncomingConnections (message", "УстановитьПрокси: установка значения": "SetProxy: setting the value", "ОтправитьТекстовоеСообщение (простое": "SendTextMessage (simple", "Bitrix24_ПолучитьИнформациюОКаталоге": "Bitrix24_GetFolderInformation", "Телеграм_ОтправитьТекстовоеСообщение": "TelegramAPI_SendTextMessage", -"ОжидатьВходящиеСоединения (сообщение": "WaitIncomingConnections (message", "Данные или путь к файлу для загрузки": "File path or binary data of the object", "Вернуть имя файла тела ответа !NOCLI": "Return response filename !NOCLI", "Устанавливает тело запроса из строки": "Sets the body of the request from the string", "ПолучитьСтруктуруФильтраКомментариев": "GetCommentsFilterStructure", "Отключить все соединения базы данных": "Disable all database connections", "Код тарифа (из доступных по договору": "Tariff code (from those available under the contract", -"Получает записи из выбранной таблицы": "Gets records from the selected table", -"сериализованный JSON ответа от Viber": "serialized JSON response from Viber", -"ПолучитьОписанияХарактеристикТоваров": "GetProductsAttributesData", "ID последнего загруженного сообщения": "Id of last message", -"Работает ли офис с Фулфилмент.Приход": "Does the office work with Fullfilment.Arrival", -"Отправляет сообщение в выбранный час": "Sends a message at a selected hour", -"Устанавливает набор тегов для бакета": "Sets the tag set for the bucket", -"Отключает режим Без звука для задачи": "Unmute task by ID", -"Модули непосредственной работы с API": "Modules for direct interaction with APIs", -"Строка подключения к серверу MongoDB": "Connection string to MongoDB server", -"Строка,Соответствие Из КлючИЗначение": "String, Map Of KeyAndValue", -"Отметить сообщение как непрочитанное": "Mark message as unreaded", -"Получить список ответов на сообщение": "Get list of message replies", -"ПолучитьСписокТрудозатратЗадачи (хук": "GetTaskTimeAccountingList (wh", -"URL = ПараметрыФункции[\"Bitrix24_URL": "URL = FunctionParameters[\"Bitrix24_URL", -"ПолучитьСписокПользователейЧата (хук": "GetChatUsers (wh", -"ДобавитьФайлMultipart: запись данных": "AddMultipartFile: data writing", -"!OInt Сообщить(\"Начало синхронизации": "!OInt Message(\"Start synchronization", -"ID последнего прочитанного сообщения": "Id of last readed message", -"Получает список администраторов чата": "Gets the list of chat administrators", +"Получает записи из выбранной таблицы": "Gets records from the selected table", +"Client secret из настроек приложения": "Client secret from app settings", +"Telegram_ОтправитьТекстовоеСообщение": "Telegram_SendTextMessage", "Получает информацию о странице по ID": "Gets information about the page by ID", +"Работает ли офис с Фулфилмент.Приход": "Does the office work with Fullfilment.Arrival", +"сериализованный JSON ответа от Viber": "serialized JSON response from Viber", +"Получить список ответов на сообщение": "Get list of message replies", +"ДобавитьФайлMultipart: запись данных": "AddMultipartFile: data writing", +"ПолучитьСписокПользователейЧата (хук": "GetChatUsers (wh", +"URL = ПараметрыФункции[\"Bitrix24_URL": "URL = FunctionParameters[\"Bitrix24_URL", +"ПолучитьСписокТрудозатратЗадачи (хук": "GetTaskTimeAccountingList (wh", +"Строка подключения к серверу MongoDB": "Connection string to MongoDB server", +"Отметить сообщение как непрочитанное": "Mark message as unreaded", +"Строка,Соответствие Из КлючИЗначение": "String, Map Of KeyAndValue", +"Модули непосредственной работы с API": "Modules for direct interaction with APIs", +"Отключает режим Без звука для задачи": "Unmute task by ID", +"ID последнего прочитанного сообщения": "Id of last readed message", +"!OInt Сообщить(\"Начало синхронизации": "!OInt Message(\"Start synchronization", +"Bitrix24_ДобавитьПолучателейКНовости": "Bitrix24_AddPostRecipients", +"Получает список администраторов чата": "Gets the list of chat administrators", "Получить статус участия пользователя": "Get user participation status", "Удаляет комментарий к записи таблицы": "Deletes a comment for a table record", "ОбработатьЗапрос: Выполнение запроса": "ProcessRequest: Execution", "сериализованный JSON ответа от Slack": "serialized JSON response from Slack", "Получает ссылку для скачивания файла": "Gets a download link for the file", "ЗафиксироватьДоговоренностьОДоставке": "RegisterDeliveryAppointment", -"Bitrix24_ДобавитьПолучателейКНовости": "Bitrix24_AddPostRecipients", "Устанавливает новую картинку профиля": "Sets a new profile picture", "Файл, строка или данные тела запроса": "File, string, or request body data", "Добавить OAuth v1 авторизацию !NOCLI": "Add OAuth V1 authorization", "ДобавитьПолеMultipart: запись данных": "AddMultipartField: data writing", +"Отправляет сообщение в выбранный час": "Sends a message at a selected hour", "Получает статистику в разрезе постов": "Gets statistics in terms of posts", -"ИнициализироватьЗагрузкуЧастями (ЗЗЧ": "InitPartsUpload (FPU", +"Устанавливает набор тегов для бакета": "Sets the tag set for the bucket", "Внешний текстовый идентификатор поля": "Text identifier for external integration", -"CommonModule.OPI_ПреобразованиеТипов": "CommonModule.OPI_TypeConversion", "Удаляет существующее свойство товара": "Deletes the existing product property", +"Пользователь для базовой авторизации": "User for basic authorization", "ПолучитьТелоЗапросаКакДвоичныеДанные": "GetRequestBodyAsBinaryData", "ПолучитьСоответствиеПараметровТовара": "GetProductParameterMapping", "ДобавитьФайлMultipart: Запись данных": "AddMultipartFormDataFile: Data writing", "Bitrix24_ПолучитьХранилищеПриложения": "Bitrix24_GetAppStorage", "Удаляет пользовательское поле задачи": "Deletes a custom task field", "Путь к оригинальному файлу или папке": "Path to the original file or folder", -"Путь к опубликованному ранее объекту": "Path to the previously published object", "дата и время начала события (строкой": "event start date and time (as string", "Добавляет задачу в список избранного": "Add task to favorites list", "Получить структуру настроек инстанса": "Get instance settings structure", "Перемещает объект по выбранному пути": "Moves an object to the selected path", -"Число копий одной квитанции на листе": "Number of copies of one receipt per sheet", +"Путь к опубликованному ранее объекту": "Path to the previously published object", "ПолучитьBase64СтрокуИзДвоичныхДанных": "GetBase64StringFromBinaryData", -"Строка подключения к базе PostgreSQL": "PostgreSQL database connection string", -"Получить список пользователей канала": "Get channel user list", -"На конце URL должен быть ваш ID бота": "At the end of the URL should be your bot ID", -"Устанавливает цель (описание) канала": "Sets the channel purpose (description)", -"Отправляет текстовое сообщение в чат": "Sends a text message to a chat", "Отправляет опрос с вариантами ответа": "Sends a poll with answer options", -"Установить скидку на уцененный товар": "Set product discount", -"Идентификатор хранилища для загрузки": "Storage id", -"идентификатор товара в вашей системе": "item ID in your system", -"Получает информацию о счетчике по ID": "Gets information about the counter by ID", "Получает общее число участников чата": "Gets the total number of chat participants", -"Пользователь для базовой авторизации": "User for basic authorization", +"Строка подключения к базе PostgreSQL": "PostgreSQL database connection string", +"Устанавливает кодировку тела запроса": "Sets the encoding of the request body", +"Идентификатор хранилища для загрузки": "Storage id", +"Установить скидку на уцененный товар": "Set product discount", +"Получает информацию о счетчике по ID": "Gets information about the counter by ID", +"Отправляет текстовое сообщение в чат": "Sends a text message to a chat", +"На конце URL должен быть ваш ID бота": "At the end of the URL should be your bot ID", +"Получить список пользователей канала": "Get channel user list", +"Устанавливает цель (описание) канала": "Sets the channel purpose (description)", +"Число копий одной квитанции на листе": "Number of copies of one receipt per sheet", "Получает информацию о чеке по заказу": "Receives check information on an order", -"Получить список отложенных сообщений": "Get list of delayed messages", +"идентификатор товара в вашей системе": "item ID in your system", "Создает альбом для хранения картинок": "Creates an album to store images", +"Получить структуру фильтра счетчиков": "Get counter filter structure", +"Получить список отложенных сообщений": "Get list of delayed messages", "Загружает файл в выбранное хранилище": "Upload file to storage root", "!OInt ОсвободитьОбъект(ТекущиеДанные": "!OInt FreeObject(CurrentData", "Получить список просмотревших важное": "Get list of important post viewers", -"Переданы некорректные настройки Tls!": "Incorrect Tls settings!", "ПолучитьКоличествоПодписчиковТоваров": "GetProductSubscribersCount", "ПолучитьДеревоКатегорийИТиповТоваров": "GetCategoriesAndProductTypesTree", "Отправляет аудиофайл в чат или канал": "Sends an audio file to a chat or channel", "ЗаписатьСоответствиеПространстваИмен": "WriteNamespaceMapping", "булево разрешения экспорта календаря": "calendar export permission (bool)", "Bitrix24_ПолучитьСодержимоеХранилища": "Bitrix24_GetStorageObjects", -"Получить структуру фильтра счетчиков": "Get counter filter structure", "Dropbox_ПолучитьИнформациюОбАккаунте": "Dropbox_GetAccountInformation", "Выгружает выбранную модель из памяти": "Unloads the selected model from memory", -"Путь для прямой записи файла на диск": "Path to directly write a file to disk", +"Переданы некорректные настройки Tls!": "Incorrect Tls settings!", "Получает структуру полей комментария": "Get comment fields structure", -"Главный в группе, если есть в группе": "Main in the group, if exists in the group", -"Получить структуру события календаря": "Get calendar events structure", -"Устанавливает кодировку тела запроса": "Sets the encoding of the request body", -"Явно закрывает переданное соединение": "Explicitly closes the passed connection", -"Создает подключение к указанной базе": "Creates a connection to the specified base", -"ВернутьУправляющиеПоследовательности": "RestoreEscapeSequences", -"Результат чтения JSON ответа сервера": "Result of reading the JSON response from the server", -"Изменяет пользователя владельца чата": "Change chat owner", -"сбор данных по электронной коммерции": "e-commerce data collection", -"Порт из URL запроса или по умолчанию": "Port from the request URL or default", +"Путь для прямой записи файла на диск": "Path to directly write a file to disk", "Возвращает список заказов сообщества": "Returns the community's order list", -"Если вам необходимо управлять каналом": "If you need to manage a channel", +"Порт из URL запроса или по умолчанию": "Port from the request URL or default", +"CommonModule.OPI_ПреобразованиеТипов": "CommonModule.OPI_TypeConversion", +"Изменяет пользователя владельца чата": "Change chat owner", +"Результат чтения JSON ответа сервера": "Result of reading the JSON response from the server", +"сбор данных по электронной коммерции": "e-commerce data collection", +"Создает подключение к указанной базе": "Creates a connection to the specified base", +"Явно закрывает переданное соединение": "Explicitly closes the passed connection", +"Получить структуру события календаря": "Get calendar events structure", +"Главный в группе, если есть в группе": "Main in the group, if exists in the group", +"ВернутьУправляющиеПоследовательности": "RestoreEscapeSequences", "Массив типов или информация об ошибке": "Array of types or error information", +"Отсутствуют параметры подключения: %1": "Missing connection parameters: %1", "Признак использования кодирования URL": "Flag to use URL encoding", "Устанавливает набор тегов для объекта": "Sets the tag set of the object", "Для работы через Локальное приложение": "To work via Local Application", @@ -7716,52 +7716,52 @@ "Получить список пользователей диалога": "Get chat members list", "Пример указания параметра типа массив": "Example of specifying a parameter of array type", "СформироватьКлавиатуруПоМассивуКнопок": "FormKeyboardFromButtonArray", -"Пример структуры/соответствия свойств": "Example structure/property map", +"СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера": "CdekAPI_CourierInvitationsManagement", "ПолучитьСписокКомментариевЗадачи (хук": "GetTaskCommentsList (wh", "0 И ЗначениеЗаполнено(Страница) Тогда": "0 And ValueIsFilled(Page) Then", "Очищает очередь сообщений на отправку": "Clears the queue of messages to be sent", -"СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера": "CdekAPI_CourierInvitationsManagement", "ПолучитьСтруктуруФильтраПользователей": "GetUserFilterStructure", "OPI: Не удалось установить соединение": "OPI: Unable to establish a connection", "Получить структуру настроек календаря": "Get calendar settings structure", -"УдалитьБазуДанных (ошибка подключения": "DeleteDatabase (connect error", -"Получает описание поля файлового типа": "Gets the description of a file field", "Сообщение об ошибке сохранено в файл:": "The error message has been saved to a file:", +"УдалитьБазуДанных (ошибка подключения": "DeleteDatabase (connect error", +"Пример структуры/соответствия свойств": "Example structure/property map", "сериализованный JSON ответа от Yandex": "serialized JSON response from Yandex", -"сериализованный JSON ответа от Google": "serialized JSON response from Google", +"Текст %%F0%%9F%%A5%%9D и emoji \\(10%%": "Text %%F0%%9F%%A5%%9D and emoji \\(10%%", "Массив, Соответствие Из КлючИЗначение": "Array, Map Of KeyAndValue", +"Получает описание поля файлового типа": "Gets the description of a file field", "Bitrix24_ПрекратитьНаблюдатьЗаЗадачей": "Bitrix24_StopWatchingTask", "ПолучитьСписокХранилищПриложения (хук": "GetAppStoragesList (wh", "Получает описание поля числового типа": "Gets the description of a numeric field", "СформироватьКлавиатуруИзМассиваКнопок": "CreateKeyboardFromArrayButton", "ОтключитьВсеСоединенияБазыДанных (TLS": "DisableAllDatabaseConnections (TLS", -"Получает массив типов колонок таблицы": "Gets an array of table column types", -"Текст %%F0%%9F%%A5%%9D и emoji \\(10%%": "Text %%F0%%9F%%A5%%9D and emoji \\(10%%", -"Получить структуру параметров запроса": "Get request parameter structure", "Телеграм_ПолучитьСписокАватаровФорума": "TelegramAPI_GetForumAvatarsList", +"Получает массив типов колонок таблицы": "Gets an array of table column types", +"Получить структуру параметров запроса": "Get request parameter structure", +"ID версии (ревизии) для востановления": "ID of the version (revision) for restoration", "Изменить пользовательское поле задачи": "Update custom task field", "ОжидатьВходящиеСоединения (отключение": "WaitIncomingConnections (disconnect", "Текст %%F0%%9F%%A%5%9D и emoji \\(10%%": "Text %%F0%%9F%%A5%%9D and emoji \\(10%%", "Добавить пользовательское поле задачи": "Add custom task field", -"Массивы - передаются как строки вида ": "Arrays are passed as strings in the form", "ID пользователей для проверки доступа": "User IDs for access checking", "ID сообщения на которое надо ответить": "Reply to message ID", "ВозобновитьЭлементЧеклистаЗадачи (хук": "RenewTasksChecklistElement (wh", "Архивировать страницу или нет (булево": "Archive page or not (boolean", -"ID версии (ревизии) для востановления": "ID of the version (revision) for restoration", +"сериализованный JSON ответа от Google": "serialized JSON response from Google", +"Если вам необходимо управлять каналом": "If you need to manage a channel", "Получает статус загрузки файла по URL": "Gets the upload status of the file by URL", -"Отсутствуют параметры подключения: %1": "Missing connection parameters: %1", +"ID свойства, куда добавляется вариант": "Property ID where the variant is added", "Добавляет данные для AWS4 авторизации": "Adds data for AWS4 authorization", -"По умолчанию кодирование URL включено": "URL encoding is enabled by default", +"Получает информацию о хранилище по ID": "Get information about storage", "Получить доступные интервалы доставки": "Get available delivery intervals", +"Структура JSON данных описания товара": "The structure of the JSON product description data", "Использовать поля тела в OAuth !NOCLI": "Use body fields at OAuth !NOCLI", "Массив позиционных параметров запроса": "Array of positional parameters of the request", "Удаляет сообщение канала по timestamp": "Deletes a channel message by timestamp", -"Получает информацию о календаре по ID": "Gets calendar information by ID", "Рассмотрим получение каждого значения": "Let's consider obtaining of each value", "Прекращает наблюдение за задчей по ID": "Stop watching a task by ID", "Для отображения скидки/изменения цены": "For displaying discount/changing price", -"Получает информацию о хранилище по ID": "Get information about storage", +"Получает информацию о календаре по ID": "Gets calendar information by ID", "URL, который нужно открыть в браузере": "the URL that needs to be opened in the browser", "Копирует лист из одной книги в другую": "Copies a sheet from one spreadsheet to another", "Перемещает событие в другой календарь": "Moves an event to another calendar", @@ -7769,270 +7769,270 @@ "Изменяет пользовательское поле задачи": "Updates a custom task field data", "ПреобразоватьДанныеСПолучениемРазмера": "ConvertDataWithSizeRetrieval", "Массив соответствий данных календарей": "Array of calendar data mappings", -"Возвращает выбранные товары из архива": "Returns selected items from the archive", "ОбновитьХарактеристикиТоваров (статус": "UpdateProductsAttributes (status", -"Структура JSON данных описания товара": "The structure of the JSON product description data", +"Массивы - передаются как строки вида ": "Arrays are passed as strings in the form", "синхронизировать календарь задач: Y,N": "synchronise the task calendar: Y,N", -"сериализованный JSON ответа от Notion": "serialized JSON response from Notion", +"Закрепляет выбранное сообщение в чате": "Pins the selected message in the chat room", +"Возвращает выбранные товары из архива": "Returns selected items from the archive", +"По умолчанию кодирование URL включено": "URL encoding is enabled by default", "ЗаменитьУправляющиеПоследовательности": "ReplaceEscapeSequences", "Изменяет существующее свойство товара": "Edits the existing product property", "ПолучитьСтруктуруФильтраКаталога (хук": "GetFolderFilterStructure (wh", "Метод в документации AWS (стандартный": "Method at AWS documentation (default", "Получает информацию о файле по его ID": "Gets information about a file by ID", -"ID свойства, куда добавляется вариант": "Property ID where the variant is added", "Загружает модель в библиотеку моделей": "Uploads the model to the model library", "ПолучитьДочерниеЭлементыКаталога (хук": "GetFolderItems (wh", "Telegram_ИзменитьИмяГлавнойТемыФорума": "Telegram_ChangeMainTopicName", "ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект": "YDisk_UploadByUrlAndGetObject", -"ПолучитьСтруктуруПараметровВКонтексте": "GetContextParameterStructure", +"сериализованный JSON ответа от Notion": "serialized JSON response from Notion", "ПолучитьОписаниеФильтраОфисов (Пустая": "GetOfficeFilterDescription (empty", -"Закрепляет выбранное сообщение в чате": "Pins the selected message in the chat room", "Получить сокращенную структуру товара": "Get simplified product structure", "Структура JSON данных описания таблиц": "The structure of the JSON table properties data", +"ПолучитьСтруктуруПараметровВКонтексте": "GetContextParameterStructure", "Удаляет неактивные соединения из пула": "Removes inactive connections from the pool", "ID послднего непрочитанного сообщения": "ID of last unreaded message", "Telegram_ПолучитьСписокАватаровФорума": "Telegram_GetForumAvatarList", "Путь (имя) объекта в бакете приемнике": "Path (name) in the destination bucket", "Получает содержимое объекта из бакета": "Gets the contents of the object from the bucket", -"Bitrix24_ПолучитьВнешнююСсылкуКаталога": "Bitrix24_GetFolderExternalLink", -"Создает базу данных с указанным именем": "Creates a database with the specified name", -"Сохраняет картинку в альбом сообщества": "Saves an image to the community album", -"Адрес битрикс вида portal.bitrix24.com": "Current Bitrix URL (like 'portal.bitrix24.com')", -"Признак использования AWS4 авторизации": "Flag to use AWS4 authorization", "Статус пользователя: online, dnd, away": "Status value: online, dnd, away", +"Признак использования AWS4 авторизации": "Flag to use AWS4 authorization", +"Получить статус асинхронного изменения": "Get asynchronous change status", +"Создает базу данных с указанным именем": "Creates a database with the specified name", "Отправляет файл по URL в выбранный чат": "Sends a file from web to the selected chat room", +"Bitrix24_ПолучитьВнешнююСсылкуКаталога": "Bitrix24_GetFolderExternalLink", +"Адрес битрикс вида portal.bitrix24.com": "Current Bitrix URL (like 'portal.bitrix24.com')", "единица измерения для веса, например g": "unit of measurement for weight, e.g. g", -"Объект сервера или сообщение об ошибке": "Server object or error message", -"Получить ссылку авторизации приложения": "Get app authentication link", -"Получает список тегов выбранных файлов": "Gets the list of tags of the selected files", "Структура авторизации или путь к .json": "Auth data or path to .json file", +"Читает данные из указанного соединения": "Reads data from the specified connection", +"Получает список тегов выбранных файлов": "Gets the list of tags of the selected files", "Получить элемент чеклиста задачи по ID": "Gets tasks checklist element by ID", "Получить список подборок по массиву ID": "Gets the list of selections by array of IDs", "Создает комментарий к записи в таблице": "Creates a comment for a record in the table", "НачалоКодовОшибок И Ответ.КодСостояния": "StartOfErrorCodes And Response.StatusCode", "Отбор по началу имени, если необходимо": "Filtering by the beginning of the name, if necessary", +"Является ли офис только пунктом выдачи": "Is the office only a delivery point", "ОбработатьЗапрос: Формирование запроса": "ProcessRequest: Forming a request", -"Читает данные из указанного соединения": "Reads data from the specified connection", -"Сохраняет публичный объект на ваш диск": "Saves the public object to your disk", -"ОтметитьСообщениеКакНепрочитанное (хук": "MarkMessageAsUnreaded", -"CLI версия Открытого пакета интеграций": "CLI version of OpenIntegrations", -"Получить статус асинхронного изменения": "Get asynchronous change status", +"Получить ссылку авторизации приложения": "Get app authentication link", +"Объект сервера или сообщение об ошибке": "Server object or error message", +"название лида (можно искать по шаблону": "lead name (can be searched by template", +"Сохраняет картинку в альбом сообщества": "Saves an image to the community album", +"ПолучитьСписокПросмотревшихВажное (хук": "GetImportantPostViewers (wh", +"Генерирует новые штрихкоды для товаров": "Generates new barcodes for products", "Получает список свойств товаров группы": "Gets the list of properties of group products", -"Получить структуру фильтра отправлений": "Get shipments filter structure", "Создает новый объект для работы с HTTP": "Creates a new object to work with HTTP", "Создает твит с произвольным содержимым": "Creates a tweet with custom content", "Получает описание поля строкового типа": "Gets the description of a string field", "Массив файлов с диска для прикрепления": "Array of files from disk to attach", "Строка, Число, Массив Из Строка, Число": "String, Number, Array of String, Number", "Создает новый бакет с выбранным именем": "Creates a new bucket with the specified name", -"Генерирует новые штрихкоды для товаров": "Generates new barcodes for products", +"Удалить полностью (Истина) или закрыть": "Delete completely (True) or close", "Возвращает объект текущего HTTP ответа": "Returns the object of the current HTTP response", "CommonModule.OPI_ПолучениеДанныхТестов": "CommonModule.OPI_TestDataRetrieval", -"название лида (можно искать по шаблону": "lead name (can be searched by template", "Передавайте до 200 SKU в одном запросе": "Send up to 200 SKUs in a single request", "Изменяет значения полей счетчика по ID": "Changes counter field values by ID", "Получить структуру сообщения контекста": "Get context message structure", -"Удалить полностью (Истина) или закрыть": "Delete completely (True) or close", "дни недели: SU, MO, TU, WE, TH, FR, SA": "days of the week: SU, MO, TU, WE, TH, FR, SA", "ПолучитьСтатусУчастияПользователя (хук": "GetUserParticipationStatus (wh", -"ПолучитьСписокПросмотревшихВажное (хук": "GetImportantPostViewers (wh", -"Является ли офис только пунктом выдачи": "Is the office only a delivery point", -"Получить app_id на странице приложения": "Get app_id at the application page", -"сериализованный JSON ответа от Twitter": "serialized JSON response from Twitter", +"ОтметитьСообщениеКакНепрочитанное (хук": "MarkMessageAsUnreaded", +"CLI версия Открытого пакета интеграций": "CLI version of OpenIntegrations", +"Сохраняет публичный объект на ваш диск": "Saves the public object to your disk", +"Получить структуру фильтра отправлений": "Get shipments filter structure", +"Некорректный статус управления форумом": "Incorrect forum management status", +"РаботаСКомментариямиИРезультатамиЗадач": "CommentsAndResultsManagement", "Формирует клавиатуру по массиву кнопок": "Forms a keyboard from an array of buttons", +"Смещение в списке получаемых сообщений": "Offset in the list of received messages", "CLI_GreenAPI_ПолучитьQR(ПараметрыТеста": "CLI_GreenAPI_GetQR(TestParameters", "настройки предустановленных календарей": "preset calendar settings", "ПолучитьОписаниеДоговоренности (Пустая": "GetAppointmentDescription (empty", "Ссылка на хост API для отправки файлов": "Link to host API for sending files", "Получает список файлов бота или канала": "Gets a list of files of the bot or channel", -"Устанавливает коллекцию параметров URL": "Sets a collection of URL parameters", "Проверка_ОзонДобавлениеКодов(Результат": "Check_OzonCodesUpload(Result", -"Bitrix24_СоздатьРезультатИзКомментария": "Bitrix24_CreateResultFromComment", "ОжидатьВходящиеСоединения (подключение": "WaitIncomingConnections (connection", +"Bitrix24_СоздатьРезультатИзКомментария": "Bitrix24_CreateResultFromComment", "Признак удаления отложенного сообщения": "Indicator of deleting a delayed message", -"фильтр по содержанию подстроки в полях": "filter by substring content in fields", -"строка с системным промптом для модели": "system prompt for the model", -"Заменяет клавиатуру сообщения на новую": "Replaces the message keyboard with a new one", "Получает список всех событий календаря": "Gets the list of all calendar events", -"Первое приветственное сообщение в чате": "First chat message", "Проверка_ОзонЗаданиеЗагрузки(Результат": "Check_OzonUploadTask(Result", -"Смещение в списке получаемых сообщений": "Offset in the list of received messages", +"фильтр по содержанию подстроки в полях": "filter by substring content in fields", +"Первое приветственное сообщение в чате": "First chat message", +"Заменяет клавиатуру сообщения на новую": "Replaces the message keyboard with a new one", +"строка с системным промптом для модели": "system prompt for the model", +"Получить app_id на странице приложения": "Get app_id at the application page", +"Устанавливает коллекцию параметров URL": "Sets a collection of URL parameters", "Ключ > SKU товара, Значение > Штрихкод": "Key > product SKU, Value > barcode", -"РаботаСКомментариямиИРезультатамиЗадач": "CommentsAndResultsManagement", +"Получает информацию о выбранной модели": "Gets information about the model", "сериализованный JSON ответа от Dropbox": "serialized JSON response from Dropbox", +"Изменяет артикулы существующих товаров": "Modifies articles of existing products", "Проверить загрузку изображений товаров": "Check products images upload", "Имя бакета, в котором находится объект": "Name of the bucket in which the object is stored", -"Устанавливает картинку группового чата": "Sets the group chat picture", "Истина > Деактивация, Ложь > Активация": "True > Deactivation, False > Activation", "Bitrix24_УдалитьРезультатИзКомментария": "Bitrix24_DeleteResultFromComment", "Удаляет конфигурацию шифрования бакета": "Deletes the bucket encryption configuration", "СтрПараметр.Имя, СтрПараметр.Пояснение": "StrParam.Name, StrParam.Explanation", -"Изменяет артикулы существующих товаров": "Modifies articles of existing products", "Двоичное тело запроса или путь к файлу": "Binary data or file of request body data", "Получает события бота в Polling режиме": "Receives bot events in Polling mode", -"tests/Modules/internal/OPI_ТестыCLI.os": "tests/Modules/internal/OPI_TestsCLI.os", +"Устанавливает картинку группового чата": "Sets the group chat picture", "Код тарифа (подробнее см. приложение 1": "Tariff code", "Перемещает один каталог внутрь другого": "Moves one folder inside another", "Доп заголовки запроса, если необходимо": "Additional request headers, if necessary", "Установить статус участия пользователя": "Set user participation status", "'Красный', 'Желтый','Зеленый' ,'Синий'": "'Red', 'Yellow', 'Green', 'Blue'", "ПолучитьБуферДвоичныхДанныхИзHexСтроки": "GetBinaryDataBufferFromHexString", -"Некорректный статус управления форумом": "Incorrect forum management status", "УдалитьПользовательскоеПолеЗадачи (хук": "DeleteCustomTaskField (wh", -"Получает информацию о выбранной модели": "Gets information about the model", -"ДобавитьФайлRelated: Запись шапки блока": "AddFileAsRelated: Writing the block header", +"tests/Modules/internal/OPI_ТестыCLI.os": "tests/Modules/internal/OPI_TestsCLI.os", +"сериализованный JSON ответа от Twitter": "serialized JSON response from Twitter", +"Скопируйте код из URL после авторизации": "Copy the code from the URL after authorization", "ОчиститьСписокЗакрепленныхСообщенийТемы": "ClearThreadPinnedMessagesList", "Получить структуру фильтра комментариев": "Get structure of comments filter", "УстановитьFormТело: Нет данных, пропуск": "SetFormBody: No data, skip", "ДобавитьФайлRelated: запись шапки блока": "AddFileAsRelated: writing the block header", "Исключает текущего пользователя из чата": "Removes the current user from the chat room", -"идентификатор товара в системе продавца": "product identifier in the sellers system", +"device_code из ПолучитьКодПодтверждения": "device_code from GetConfirmationCode", "Создает результат задачи из комментария": "Create task result from comment", "Существующее соединение или путь к базе": "Existing connection or database path", -"device_code из ПолучитьКодПодтверждения": "device_code from GetConfirmationCode", "УстановитьТипДанных: установка значения": "SetDataType: setting the value", "идентификатор значения для перечислений": "enum ID", "Изменяет свойства существующей страницы": "Changes the properties of an existing page", -"Точка входа расширения, если необходима": "Expansion entry point, if required", -"Изменяет состав существующего сообщения": "Edits the content of an existing message", "Перезаписывать файл при конфликте путей": "Overwrite file in case of path conflicts", +"Точка входа расширения, если необходима": "Expansion entry point, if required", +"идентификатор товара в системе продавца": "product identifier in the sellers system", "Удаляет существующий комментарий задачи": "Delete task comment by ID", -"УстановитьJsonТело: Нет данных, пропуск": "SetJsonBody: No data, skip", +"сериализованный JSON ответа от Bitrxi24": "serialized JSON of answer from Bitrix24 API", "Запускает TCP сервер на указанном порту": "Starts a TCP server on the specified port", +"Изменяет состав существующего сообщения": "Edits the content of an existing message", +"ПолучитьСписокПользователейДиалога (хук": "GetChatMembersList", "Получить список опубликованных объектов": "Get list of published objects", "Заменяет текст в сообщении с вложениями": "Replaces text in a message with media attachments", "ДобавитьПользовательскоеПолеЗадачи (хук": "AddCustomTaskField (wh", "Bitrix24_ОтклонитьЗадачу(ПараметрыТеста": "Bitrix24_DisapproveTask(TestParameters", "дата перемещения лида на текущую стадию": "date of moving the lead to the current stage", +"ДобавитьФайлRelated: Запись шапки блока": "AddFileAsRelated: Writing the block header", "Вернуть ответ как JSON коллекцию !NOCLI": "Return response as JSON object !NOCLI", -"использование системы управления тегами": "use of a tag management system", -"ПолучитьСписокПользователейДиалога (хук": "GetChatMembersList", "Общие модули проекта бывают двух видов:": "The project's common modules come in two types:", "сериализованный JSON ответа от VK Teams": "serialized JSON response from VK Teams", -"сериализованный JSON ответа от Bitrxi24": "serialized JSON of answer from Bitrix24 API", +"УстановитьJsonТело: Нет данных, пропуск": "SetJsonBody: No data, skip", "Добавляет новый элемент чеклиста задачи": "Adds new element of tasks checklist", "ПолучитьСтруктуруНастроекМодели (пустая": "GetModelSettingsStructure (empty", -"Соединение или этот же объект обработки": "Connection or the same processor object", "Ограничение количества получаемых строк": "Limiting the number of received strings", "ПолучитьПользовательскоеПолеЗадачи (хук": "GetCustomTaskField (wh", +"использование системы управления тегами": "use of a tag management system", "числовое значение временного промежутка": "numeric value of the time interval", -"Скопируйте код из URL после авторизации": "Copy the code from the URL after authorization", +"Проверяет работоспособность токена бота": "Checks if the bot token is functional", "Зафиксировать договоренность о доставке": "Register delivery appointment", -"Возвращает объект текущего HTTP запроса": "Returns the object of the current HTTP request", +"ПолучитьСтруктуруНастроекКалендаря (хук": "GetCalendarSettingsStructure (wh", "Получить количество подписчиков товаров": "Get product subscribers count", +"Получает контент рейтинг товаров по SKU": "Gets products content rating by SKU", "Сохраните **ключ** и **код** приложения": "Save the **application key** and **application code**", "Выберите пункт **Локальное приложение**": "Select **Local Application**", "сбор статистики для работы Карты кликов": "collection of statistics for Click Map operation", -"Путь к оригинальному файлу или каталогу": "Path to the original file or directory", "параметр включает для товара пометку 18": "parameter includes mark for the product 18", "Получает список опубликованных объектов": "Gets a list of published objects", -"ПолучитьСтруктуруНастроекКалендаря (хук": "GetCalendarSettingsStructure (wh", +"Путь к оригинальному файлу или каталогу": "Path to the original file or directory", "URL, путь или данные файла для загрузки": "URL, path or file data", "ПолучитьИнформациюОбАккаунте (сторонний": "GetAccountInformation (third-party", "ПолучитьСтруктуруФильтраЗаписей (пустая": "GetRecordsFilterStrucutre (empty", "Создает каталог внутри другого каталога": "Create new folder inside another folder", "Изменяет текст элемента чеклиста задачи": "Updates text of element of tasks checklist", -"Код страны в формате ISO_3166-1_alpha-2": "Country code in ISO_3166-1_alpha-2 format", -"Получает контент рейтинг товаров по SKU": "Gets products content rating by SKU", +"Соединение или этот же объект обработки": "Connection or the same processor object", "сериализованный JSON ответа от Bitrix24": "serialized JSON of answer from Bitrix24 API", -"ID существующей группы, если необходимо": "ID of the existing group, if needed", -"Дата отправки для отложенного сообщения": "Sending date for delayed message", +"УстановитьТипДанных: Установка значения": "SetDataType: Setting the value", +"Код страны в формате ISO_3166-1_alpha-2": "Country code in ISO_3166-1_alpha-2 format", +"Возвращает объект текущего HTTP запроса": "Returns the object of the current HTTP request", +"Получить описания харакетристик товаров": "Get products attributes data", "ИзменитьПользовательскоеПолеЗадачи (хук": "UpdateCustomTaskField (wh", -"Проверяет работоспособность токена бота": "Checks if the bot token is functional", "HTTPОтвет, Произвольный, ДвоичныеДанные": "HTTPResponse, Arbitrary, BinaryData", "сериализованный JSON ответа от Airtable": "serialized JSON response from Airtable", -"Хеш функция для сигнатуры: SHA1, SHA256": "Hash function for signature: SHA1, SHA256", +"Дата отправки для отложенного сообщения": "Sending date for delayed message", "URL = ПараметрыФункции[\"Bitrix24_URL": "URL = FunctionParameters[\"Bitrix24_URL", "Зайти в раздел \"Управление\" в группе ВК": "Go to the 'Manage' section in the VK group", -"УстановитьТипДанных: Установка значения": "SetDataType: Setting the value", -"Получить описания харакетристик товаров": "Get products attributes data", -"ПолучитьНастройкийВерсионированияБакета": "GetBucketVersioning", +"Хеш функция для сигнатуры: SHA1, SHA256": "Hash function for signature: SHA1, SHA256", +"ID существующей группы, если необходимо": "ID of the existing group, if needed", "ПолучитьДанныеИспользованияПространства": "GetSpaceUsageData", "Изменяет текст сущесствующего сообщения": "Changes the text of an existing message", "сериализованный JSON ответа от Telegram": "serialized JSON response from Telegram", "Тип поля: string, double, date, boolean": "Field type: string, double, date, boolean", "Отправляет простой http запрос без тела": "Sends a simple http request without a body", "Габариты упаковки. Длина (в сантиметрах": "Package Dimensions. Length (cm", +"ПолучитьНастройкийВерсионированияБакета": "GetBucketVersioning", +"Изменяет текст существующего комментария": "Changes the text of an existing comment", "Ответ на запрос или информация об ошибке": "Response or error information", "Планируемая дата передачи заказов в СДЭК": "Planned date of transfer of orders to CDEK", "Удаляет ранее созданный вариант свойства": "Deletes the previously created product property variant", "ПолучитьДеревоКатегорийИТиповТоваров (EN": "GetCategoriesAndProductTypesTree (EN", "Вернуть ответ как двоичные данные !NOCLI": "Return response as binary data", -"тип данных, к которым применяется фильтр": "type of data to which the filter is applied", -"Изменяет текст существующего комментария": "Changes the text of an existing comment", -"сериализованный JSON ответа от Neocities": "serialized JSON response from Neocities", +"Добавляет стабию канбана или Моего плана": "Add new stage of kanban or My Plan", +"Удаляет текстовый тег файла или каталога": "Deletes the text tag of a file or directory", +"ПолучитьОписаниеОбъекта (Ссылка загрузки": "HeadObject (Upload link", "УстановитьJsonТело: нет данных - пропуск": "SetJsonBody: no data - skip", "Произвольный, Структура Из КлючИЗначение": "Arbitrary, Structure Of KeyAndValue", "Получить структуру фильтра пользователей": "Get user filter structure", "расширенный период учета оффлайн-заходов": "extended accounting period for offline visits", -"Добавляет стабию канбана или Моего плана": "Add new stage of kanban or My Plan", -"ПолучитьОтветВКонтексте (предварительный": "GetContextResponse (preliminary", -"ПолучитьОписаниеОбъекта (Ссылка загрузки": "HeadObject (Upload link", "Идентификатор товара в системе Ozon (SKU": "Product identifier in the Ozon system (SKU", +"тип данных, к которым применяется фильтр": "type of data to which the filter is applied", +"сериализованный JSON ответа от Neocities": "serialized JSON response from Neocities", +"Стрктура или соответствие параметров URL": "Structure or map of URL parameters", "УстановитьСтатусУчастияПользователя (хук": "GetUserParticipationStatus (wh", -"РазделятьМассивыВURL: установка значения": "SplitArraysInURL: setting the value", -"ПолучитьСтруктуруПараметровПредставлений": "GetEmbeddingsParameterStructure", +"ПолучитьОтветВКонтексте (предварительный": "GetContextResponse (preliminary", +"ОтправитьКартинку (клавиатура, коллекция": "SendImage (keyboard, collection", "Создает комментарий к файлу или каталогу": "Creates a comment for a file or directory", "Введите имя нового приложения и выберите": "Enter a name for the new application and select", "сериализованный JSON ответа от Green API": "serialized JSON response from Green API", "Список позиций имеет некорректный формат": "The list of items has an incorrect format", +"РазделятьМассивыВURL: установка значения": "SplitArraysInURL: setting the value", "Некорректный набор данных для обновления": "Incorrect data set for updating", -"Получает информацию о файле или каталоге": "Gets information about a file or directory", -"ОтправитьКартинку (клавиатура, коллекция": "SendImage (keyboard, collection", -"Стрктура или соответствие параметров URL": "Structure or map of URL parameters", +"ПолучитьСтруктуруПараметровПредставлений": "GetEmbeddingsParameterStructure", "Кодировка преобразования данных в строку": "Encoding of data conversion to string", -"ОбработатьЗапрос: Установка тела запроса": "ProcessRequest: Setting the request body", "Код страны в формате ISO_3166-1_alpha-2": "Country code in the ISO_3166-1_alpha-2 format", "Объект компоненты с открытым соединением": "AddIn object with open connection", "ID пользователя для отправки уведомления": "User ID for sending the notification", "УстановитьФайлОтвета: установка значения": "SetResponseFile: setting the value", +"Получает информацию о файле или каталоге": "Gets information about a file or directory", "Габариты упаковки. Высота (в сантиметрах": "Package Dimensions. Height (cm", -"Удаляет текстовый тег файла или каталога": "Deletes the text tag of a file or directory", +"ОбработатьЗапрос: Установка тела запроса": "ProcessRequest: Setting the request body", "ПолучитьЗаблокированныхПользователейЧата": "GetChatBlockedUsers", -"согласие с Договором об обработке данных": "consent to the Data Processing Agreement", -"Получает цены товаров с фильтром или без": "Gets products prices with or without filter", +"Проверка_БитриксСтрока(Результат); SKIP": "Check_BitrixString(Result); SKIP", "IDЗадания = Результат[\"result\"][\"task_id": "TaskID = Result[\"result\"][\"task_id", "Отбор по региону бакета, если необходимо": "Selection by bucket region, if necessary", "УстановитьНастройкиВерсионированияБакета": "PutBucketVersioning", "БезРазделения, Разделение, РазделениеPhp": "NoSeparation, Separation, SeparationPhp", "сериализованный JSON ответа от хранилища": "serialized JSON response from storage", -"ID характеристики для получения значений": "Attribute IDs for obtaining values", "Устанавливает режим Без звука для задачи": "Mute task by ID", -"E-mail для отправки почтовых приглашений": "E-mail for sending invitations", +"ID характеристики для получения значений": "Attribute IDs for obtaining values", "Скачивает файл по указанному пути или ID": "Downloads a file by the specified path or ID", "Загружает файл на диск по заданному пути": "Uploads a file to disk at the specified path", "ID публичного каталога (shared folder ID": "ID of the public catalog (shared folder ID", "Получает заявку на вызов курьера по UUID": "Gets сourier invitation by UUID", "ПолучитьСтруктуруОбновленияХарактеристик": "GetAttributesUpdateStructure", -"Проверка_БитриксСтрока(Результат); SKIP": "Check_BitrixString(Result); SKIP", +"Получает список пользователей чата по ID": "Gets the list of chat users by ID", +"E-mail для отправки почтовых приглашений": "E-mail for sending invitations", "ID пользователей или одного пользователя": "IDs of users or a single user", -"Удаляет запись о трудозатратах из задачи": "Deletes record of time accounting", +"Получает цены товаров с фильтром или без": "Gets products prices with or without filter", "Изменяет наименование существующей книги": "Changes the name of the existing spreadsheet", +"УстановитьFormТело: нет данных - пропуск": "SetFormBody: no data - skip", +"Массив идентификаторов вида photo123_123": "Array of identifiers like photo123_123", "Получает информацию о пользователе по ID": "Gets user information by ID", "Получает список версий (ревизий) объекта": "Gets the list of versions (revisions) of the object", "Массив вариантов опроса, если необходимо": "Array of poll options, if necessary", -"tools/Modules/OPI_ПреобразованиеТипов.os": "tools/Modules/OPI_TypeConversion.os", "Получает каталог для хранения фйлов чата": "Get information about folder for chat files", -"УстановитьFormТело: нет данных - пропуск": "SetFormBody: no data - skip", -"Получает список пользователей чата по ID": "Gets the list of chat users by ID", "ПолучитьСоответствиеРазделовТестирования": "GetTestingSectionMapping", -"Массив идентификаторов вида photo123_123": "Array of identifiers like photo123_123", -"Габариты упаковки. Ширина (в сантиметрах": "Package Dimensions. Width (cm", +"tools/Modules/OPI_ПреобразованиеТипов.os": "tools/Modules/OPI_TypeConversion.os", +"Удаляет запись о трудозатратах из задачи": "Deletes record of time accounting", "использовать доп. настройки отслеживания": "use advanced tracking settings", "Удаляет календарь из списка пользователя": "Removes a calendar from the user's list", "Добавляет список файлов к полям каталога": "Adds a list of files to the directory fields", "Блокирует выбранного пользователя в чате": "Blocks the selected user in chat", "Токен = ПараметрыФункции[\"Bitrix24_Token": "Token = FunctionParameters[\"Bitrix24_Token", +"Габариты упаковки. Ширина (в сантиметрах": "Package Dimensions. Width (cm", +"согласие с Договором об обработке данных": "consent to the Data Processing Agreement", "Bitrix24_ПолучитьДочерниеЭлементыКаталога": "Bitrix24_GetFolderItems", +"Bitrix24_ПолучитьСтруктуруФильтраКаталога": "Bitrix24_GetFolderFilterStructure", +"СформироватьЗапрос: Добавление параметров": "FormRequest: Adding parameters", +"Получить структуру параметров в контексте": "Get context parameter structure", "действия будут выполняться от лица группы": "actions will be performed on behalf of the group", "ПолучитьСписокПользовательскихПолейЗадачи": "GetCustomTaskFieldsList", -"Изменяет свойства существуещего календаря": "Edits properties of an existing calendar", -"Получить структуру параметров в контексте": "Get context parameter structure", -"СформироватьЗапрос: Добавление параметров": "FormRequest: Adding parameters", -"Исключает выбранного пользователя из чата": "Deletes user from chat", "расширенный период учета офлайн-конверсий": "extended accounting period for offline conversions", +"Изменяет свойства существуещего календаря": "Edits properties of an existing calendar", "Ошибка валидации JSON массива параметров!": "JSON parameter array validation error!", -"УстановитьFormТело: начало установки тела": "SetFormBody: beginning of body setting", +"Сформировать клавиатуру по массиву кнопок": "Generate keyboard from array of buttons", "ПолучитьСтруктуруСобытияКалендаря (пустая": "GetCalendarEventsStructure (empty", "ID цитируемого сообщения, если необходимо": "Replying message id if necessary", "Выполняет запрос сразу после формирования": "Executes the request immediately after it is generated", @@ -8040,37 +8040,37 @@ "ДобавитьФайлMultipart: Запись шапки блока": "AddMultipartFormDataFile: Writing the block header", "Путь к базе. In memory, если не заполнено": "Path to database. In memory, if not filled", "Массив двоичных данных или путей к файлам": "Array of binary data or file paths", -"Сформировать клавиатуру по массиву кнопок": "Generate keyboard from array of buttons", "Получает описание поля с номером телефона": "Gets the description of a phone number field", "ПолучитьСтруктуруНастроекИнстанса (пустая": "GetInstanceSettingsStructure (empty", +"УстановитьFormТело: начало установки тела": "SetFormBody: beginning of body setting", "идентификатор автора последнего изменения": "author ID of the last change", -"Получает список элементов чеклиста задачи": "Gets the list of elements on the task checklist", +"УстановитьFormТело: Начало установки тела": "SetFormBody: Beginning of body setting", "Создает пустой каталог по выбранному пути": "Creates an empty directory at the selected path", "Добавляет указанных пользователей в канал": "Adds specified users to the channel", +"ПолучитьСсылкуСкачиванияПубличногоОбъекта": "GetDownloadLinkForPublicObject", "Создает комментарий под выбранной записью": "Creates a comment under the selected record", "Новые или изменяемые свойства базы данных": "New or modified database properties", -"УстановитьFormТело: Начало установки тела": "SetFormBody: Beginning of body setting", +"ДобавитьПолеMultipart: запись шапки блока": "AddMultipartField: writing the block header", "связь со следующим условием: AND, OR и пр": "connection with the following condition: AND, OR, etc.", "Получить настройки версионирования бакета": "Get bucket versioning", "Явно закрывает созданное ранее соединение": "Explicitly closes a previously created connection", "Стиль кнопки: primary, attention или base": "Button style: primary, attention or base", -"ПолучитьСсылкуСкачиванияПубличногоОбъекта": "GetDownloadLinkForPublicObject", +"Bitrix24_ПолучитьСписокКомментариевЗадачи": "Bitrix24_GetTaskCommentsList", "Изменяет наименование и|или описание базы": "Changes the name and/or description of the base", "Формирует коллекцию параметров соединения": "Forms a collection of connection parameters", "Добавляет видеообложку к атрибутам товара": "Adds a video cover to the product attributes", "Истина > сразу запускает созданный сервер": "True > immediately starts the created server", "Получает список офисов с фильтром или без": "Gets a list of offices with or without a filter", "и пройдите процедуру создания нового бота": "and follow the procedure to create a new bot", -"Bitrix24_ПолучитьСписокКомментариевЗадачи": "Bitrix24_GetTaskCommentsList", "УстановитьJsonТело: Начало установки тела": "SetJsonBody: Beginning of body setting", "ID чата источника оригинального сообщения": "Source chat ID", +"Получает список элементов чеклиста задачи": "Gets the list of elements on the task checklist", +"Исключает выбранного пользователя из чата": "Deletes user from chat", "Получает список всех комментариев объекта": "Gets the list of all comments of the object", -"ДобавитьПолеMultipart: запись шапки блока": "AddMultipartField: writing the block header", -"Bitrix24_ПолучитьСтруктуруФильтраКаталога": "Bitrix24_GetFolderFilterStructure", -"|--------[через 2 ч.]-------------------|": "|--------[after 2 hrs.]-------------------|", -"ОбработкаВходящегоЗапросаПослеАвторизации": "HandleIncomingRequestAfterAuthorization", +"дата перемещения сделки на текущую стадию": "date of moving the deal to the current stage", +"Добавляет данные для OAuth v1 авторизации": "Adds data for OAuth v1 authorization", +"Необходимость сформировать печатную форму": "Need to generate a document", "временной тип напоминания: min, hour, day": "reminder time type: min, hour, day", -"ДобавитьФайлMultipart: запись шапки блока": "AddMultipartFile: writing the block header", "Удаляет новость из ленты по выбранному ID": "Remove post from a news feed", "Удаляет указанного пользователя из канала": "Removes specified user from channel", "Как отдельный файл расширения формата cfe": "As a standalone extension file in cfe format", @@ -8078,445 +8078,444 @@ "Путь или несколько путей удаляемых файлов": "Path or multiple paths of the files to be deleted", "URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_URL", "ИспользоватьКодировку: установка значения": "UseEncoding: setting the value", -"См. СформироватьКлавиатуруИзМассиваКнопок": "See CreateKeyboardFromArrayButton", +"ДобавитьФайлMultipart: запись шапки блока": "AddMultipartFile: writing the block header", "Bitrix24_ПолучитьСписокХранилищПриложения": "Bitrix24_GetAppStoragesList", -"Тип отправителя: LEGAL_ENTITY, INDIVIDUAL": "Sender type: LEGAL_ENTITY, INDIVIDUAL", -"Получить дерево категорий и типов товаров": "Get categories and product types tree", -"Получить структуру доп. полей отправления": "Get shipment additional fields", -"Сформировать клавиатуру из массива кнопок": "Create a keyboard from an array of buttons", "Публикует объект диска в публичный доступ": "Publishes the disk object for public access", +"|--------[через 2 ч.]-------------------|": "|--------[after 2 hrs.]-------------------|", "ИспользоватьMultipartПоляВOAuth (включено": "UseMultipartFieldsAtOAuth (enable", "Перейдите в **[основной интерфейс Notion]": "Go to the **[main interface of Notion]", +"Сформировать клавиатуру из массива кнопок": "Create a keyboard from an array of buttons", +"Получить структуру доп. полей отправления": "Get shipment additional fields", +"Получить дерево категорий и типов товаров": "Get categories and product types tree", "Получает информацию о кластерах и складах": "Gets information about clusters and warehouses", -"Необходимость сформировать печатную форму": "Need to generate a document", +"См. СформироватьКлавиатуруИзМассиваКнопок": "See CreateKeyboardFromArrayButton", "Интервал между попытками получения данных": "Interval between data retrieval attempts", -"Добавляет данные для OAuth v1 авторизации": "Adds data for OAuth v1 authorization", +"Тип отправителя: LEGAL_ENTITY, INDIVIDUAL": "Sender type: LEGAL_ENTITY, INDIVIDUAL", "Сообщения или одно сообщения для отправки": "Messages or a single message to be sent", -"дата перемещения сделки на текущую стадию": "date of moving the deal to the current stage", +"Артикулы: Ключ > старый, Значение > новый": "Articles: Key > current, Value > new", "Делегирует задачу на другого пользователя": "Delegate task to another user", "Признак исключения архивированных каналов": "Indicator of excluding archived channels", -"Получает список записей выбранной таблицы": "Gets the list of records of the selected table", "Инициализирует загрузку объекта по частям": "Initializes the multipart object uploading", "ИспользоватьКодировку: Установка значения": "UseEncoding: Setting the value", "Возвращает URL для авторизации в браузере": "Returns URL for browser authorization", "См. СформироватьКлавиатуруПоМассивуКнопок": "See GenerateKeyboardFromArray", "Получает значения настроек кабинета по ID": "Gets the values of cabinet (business) settings by ID", "УстановитьJsonТело: начало установки тела": "SetJsonBody: beginning of body setting", -"ОтменитьЗаписьMultipart: Файл тела удален": "CancelMultipartBody: The body file has been deleted", +"Получает список записей выбранной таблицы": "Gets the list of records of the selected table", "ДобавитьПолеMultipart: Запись шапки блока": "AddMultipartFormDataField: Writing the block header", "Изменяет значения полей выбранного заказа": "Changes the field values of the selected order", "Снимает пометку элемента как выполненного": "Unmark an element as completed", -"Артикулы: Ключ > старый, Значение > новый": "Articles: Key > current, Value > new", +"ОбработкаВходящегоЗапросаПослеАвторизации": "HandleIncomingRequestAfterAuthorization", "Кодировка, в которой записаны JSON данные": "Encoding of JSON Data", "Добавляет данные в multipart/related тело": "Adds data to the multipart/related body", "С вложениями (в примере: блок с картинкой": "With attachments (picture block in the example", +"ОтменитьЗаписьMultipart: Файл тела удален": "CancelMultipartBody: The body file has been deleted", "Получает список доступных хранилищ файлов": "Get list of available files storages", -"Добавляет новый товар в каталог сообщества": "Adds a new product to the community's catalog", -"Создает системное уведомление пользователю": "Creates a system notification to the user", -"Получает постоянный UTL к сообщению канала": "Gets a permanent URL to the channel message", +"Приостанавливает учет времени пользователя": "Pauses user timekeeping", +"Вид multipart загрузки: form data, related": "Multipart data type: form data, related", +"Время удержания модели в памяти в секундах": "Model hold time in seconds", +"максимальное количество счетчиков в выдаче": "maximum number of counters in the output", +"ОтправитьТекстовоеСообщение (текст и emoji": "SendTextMessage (text and emoji", +"tools/Modules/OPI_ПолучениеДанныхТестов.os": "tools/Modules/OPI_TestDataRetrieval.os", "Сообщить(\"Проверка товаров Ozon недоступна": "Message(\"Ozon product checkout is unavailable", "Идентификаторы товаров в системе Ozon (SKU": "Products identifiers in the Ozon system (SKU", -"Лев(Команда.Команда + Поле, МаксШирина + 2": "Left(Command.Command + Field, MaxWidth + 2", -"tools/Modules/OPI_ПолучениеДанныхТестов.os": "tools/Modules/OPI_TestDataRetrieval.os", -"ОтправитьТекстовоеСообщение (текст и emoji": "SendTextMessage (text and emoji", -"максимальное количество счетчиков в выдаче": "maximum number of counters in the output", -"Время удержания модели в памяти в секундах": "Model hold time in seconds", -"Вид multipart загрузки: form data, related": "Multipart data type: form data, related", -"Отменяет режим общего доступа для каталога": "Cancels the public access mode for the directory", -"Приостанавливает учет времени пользователя": "Pauses user timekeeping", +"Получает постоянный UTL к сообщению канала": "Gets a permanent URL to the channel message", +"Создает системное уведомление пользователю": "Creates a system notification to the user", +"Ввести название приложения и выбрать пункт": "Enter the application name and select the ", "порядковый номер первого счетчика в списке": "sequence number of the first counter in the list", +"Лев(Команда.Команда + Поле, МаксШирина + 2": "Left(Command.Command + Field, MaxWidth + 2", "ПолучитьСтруктуруПараметровЗапроса (пустая": "GetRequestParameterStructure (empty", -"Не удалось сохранить ошибку в файл вывода:": "Failed to save the error to the output file:", -"Возвращает объект текущего HTTP соединения": "Returns the object of the current HTTP connection", -"Признак установки тела в формате Multipart": "Flag indicating the body is set in Multipart format", -"Получает информацию о текущем пользователе": "Get current user data", -"Получает пустой макет для создания события": "Gets an empty layout to create the event", -"Отображать ответ как предупреждение (alert": "Display the answer as an alert", "УстановитьОбъектЗапроса: Передан не запрос": "SetRequestObject: Not a request has been passed", -"JSON клавиатуры. См.СформироватьКлавиатуру": "JSON keyboard. See FormKeyboard", +"Возвращает объект текущего HTTP соединения": "Returns the object of the current HTTP connection", +"ИспользоватьСжатиеGzip: установка значения": "UseGzipCompression: setting the value", +"Не удалось сохранить ошибку в файл вывода:": "Failed to save the error to the output file:", +"Актуализировать входящие соединения !NOCLI": "ActualiseIncomingConnections ", +"Отправляет файл (документ) в чат или канал": "Sends a file (document) to a chat or channel", +"Ошибка установки дополнительных заголовков": "Error setting additional headers", "Идентификатор черновика заявки на поставку": "Supply draft identifier", "Метаданные объекты содержатся в заголовках": "Object metadata is contained in the headers", -"Ошибка установки дополнительных заголовков": "Error setting additional headers", -"Отправляет файл (документ) в чат или канал": "Sends a file (document) to a chat or channel", -"Актуализировать входящие соединения !NOCLI": "ActualiseIncomingConnections ", -"ИспользоватьСжатиеGzip: установка значения": "UseGzipCompression: setting the value", +"Отображать ответ как предупреждение (alert": "Display the answer as an alert", +"Получает пустой макет для создания события": "Gets an empty layout to create the event", +"Получает информацию о текущем пользователе": "Get current user data", +"Признак установки тела в формате Multipart": "Flag indicating the body is set in Multipart format", +"JSON клавиатуры. См.СформироватьКлавиатуру": "JSON keyboard. See FormKeyboard", "Возвращает тело ответа как двоичные данные": "Returns the response body as binary data", -"Ввести название приложения и выбрать пункт": "Enter the application name and select the ", +"Добавляет новый товар в каталог сообщества": "Adds a new product to the community's catalog", +"'Имя поля 2': {'Тип данных': 'Значение'},^": "'Field name 2': {'Type': 'Value'},^", +"Отменяет режим общего доступа для каталога": "Cancels the public access mode for the directory", +"ДобавитьЗаголовокOAuthV1: создание подписи": "AddOAuthV1Header: ", "'Имя поля 1': {'Тип данных': 'Значение'},^": "'Field name 1': {'Type': 'Value'},^", -"Получает список товаров с фильтром или без": "Gets a list of products with or without filter", -"ID поста, используемого в качетсве рекламы": "ID of the post used for advertising", -"Результат выполнения запроса или его текст": "The result of the execution or SQL query text", -"ДобавитьЗаписи (ошибка поля без транзакции": "AddRecords (field error without tr", +"Обновляет характеристики выбранных товаров": "Updates the attributes of the selected items", +"Структура Из КлючИЗначение, ДвоичныеДанные": "Structure Of KeyAndValue, BinaryData", +"добавление полей тела в строку для подписи": "adding body fields to the signature string", +"GreenAPI_РазлогинитьИнстанс(ПараметрыТеста": "GreenAPI_LogoutInstance(TestParameters", +"необходимо будет передать в другую функцию": "you will need to pass to another function", "Ошибка преобразовани данных параметра JSON": "JSON Parameter Data Conversion Error", "Получить данные использования пространства": "Get space usage data", -"Структура полей товара с добавленным видео": "Structure of product fields with added video", -"необходимо будет передать в другую функцию": "you will need to pass to another function", -"GreenAPI_РазлогинитьИнстанс(ПараметрыТеста": "GreenAPI_LogoutInstance(TestParameters", -"добавление полей тела в строку для подписи": "adding body fields to the signature string", -"Структура Из КлючИЗначение, ДвоичныеДанные": "Structure Of KeyAndValue, BinaryData", -"Обновляет характеристики выбранных товаров": "Updates the attributes of the selected items", -"'Имя поля 2': {'Тип данных': 'Значение'},^": "'Field name 2': {'Type': 'Value'},^", -"Получает информацию о сообщении чата по ID": "Gets information about the chat message by ID", +"ДобавитьЗаписи (ошибка поля без транзакции": "AddRecords (field error without tr", +"Результат выполнения запроса или его текст": "The result of the execution or SQL query text", +"ID поста, используемого в качетсве рекламы": "ID of the post used for advertising", "ПолучитьПользовательскиеНастройкиКалендаря": "GetCustomCalendarSettings", +"Структура полей товара с добавленным видео": "Structure of product fields with added video", "Bitrix24_ПолучитьСписокПросмотревшихВажное": "Bitrix24_GetImportantPostViewers", -"ДобавитьЗаголовокOAuthV1: создание подписи": "AddOAuthV1Header: ", -"Коллекция КлючЗначение с параметрами формы": "KeyValue collection with form parameters", -"Сформировать клавиатуру из массива кнопок:": "Create a keyboard from an array of buttons:", -"Разбанивает забаненного ранее пользователя": "Unbans a previously banned user", -"Создает зависимость одной задачи от другой": "Creates the dependency of one task to another", -"Обработать данные Telegram Mini App !NOCLI": "Process Telegram Mini App data !NOCLI", -"Получает статус учета времени пользователя": "Gets user timekeeping status", -"Перемещает файл в корзину удаляемых файлов": "Move file to recycle bin", -"Установите Webhook. См. Установить Webhook": "Set webhook (see Set webhook)", "Отправляет внейшний файл по списку каналов": "Sends an external file to a list of channels", +"Получает информацию о сообщении чата по ID": "Gets information about the chat message by ID", +"Сформировать клавиатуру из массива кнопок:": "Create a keyboard from an array of buttons:", +"Получает список товаров с фильтром или без": "Gets a list of products with or without filter", +"Коллекция КлючЗначение с параметрами формы": "KeyValue collection with form parameters", +"Очищает список событий основного календаря": "Clears the event list of the primary calendar", +"Удаляет зависимость одной задачи от другой": "Removes the dependency of one task to another", +"ИспользоватьСжатиеGzip: Установка значения": "UseGzipCompression: Setting the value", "ПолучитьСоответствиеРазделовТестированияGA": "GetTestingSectionMappingGA", "Дата доставки, согласованная с получателем": "Delivery date agreed with the recipient", -"ИспользоватьСжатиеGzip: Установка значения": "UseGzipCompression: Setting the value", -"Удаляет зависимость одной задачи от другой": "Removes the dependency of one task to another", -"Очищает список событий основного календаря": "Clears the event list of the primary calendar", -"Twitter_СоздатьТекстовыйТвит(ПараметрыТеста": "Twitter_CreateTextTweet(TestParameters", -"название задачи (можно искать по шаблону [%": "task name (can be searched using the template [%", -"PostgreSQL_УдалитьБазуДанных(ПараметрыТеста": "PostgreSQL_DeleteDatabase(TestParameters", -"Отправляет ранее загруженный файл по его ID": "Sends a previously uploaded file by ID", -"Получает информацию о товарах по массиву ID": "Gets information about products by array of IDs", -"Токен страницы, если используется пагинация": "Page token if pagination is used", -"Красный, желтый, синий или какой-то другой?": "Red, yellow, blue, or some other?", -"название сделки (можно искать по шаблону [%": "deal name (can be searched using the template [%", +"Перемещает файл в корзину удаляемых файлов": "Move file to recycle bin", +"Получает статус учета времени пользователя": "Gets user timekeeping status", +"Обработать данные Telegram Mini App !NOCLI": "Process Telegram Mini App data !NOCLI", +"Создает зависимость одной задачи от другой": "Creates the dependency of one task to another", +"Разбанивает забаненного ранее пользователя": "Unbans a previously banned user", +"Установите Webhook. См. Установить Webhook": "Set webhook (see Set webhook)", "Авторизоваться в браузере по ссылке из п.1.": "Authorize in the browser using the link from step 1", -"Очистить список закрепленных сообщений темы": "Clear thread's pinned messages list", "Набор тегов (ключ и значение) для установки": "Set of tags (key and value)", +"Очистить список закрепленных сообщений темы": "Clear thread's pinned messages list", "Создает новый чат на основе структуры полей": "Creates a new chat based on the field structure", +"Красный, желтый, синий или какой-то другой?": "Red, yellow, blue, or some other?", +"Twitter_СоздатьТекстовыйТвит(ПараметрыТеста": "Twitter_CreateTextTweet(TestParameters", +"Получает информацию о товарах по массиву ID": "Gets information about products by array of IDs", +"Отправляет ранее загруженный файл по его ID": "Sends a previously uploaded file by ID", +"PostgreSQL_УдалитьБазуДанных(ПараметрыТеста": "PostgreSQL_DeleteDatabase(TestParameters", +"название задачи (можно искать по шаблону [%": "task name (can be searched using the template [%", "ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных": "GetBinaryDataBufferFromBinaryData", -"Удаляет ранее добавленный товар из подборки": "Removes a previously added product from the selection", -"Маркер конца сообщения. Пусто > без маркера": "End of message marker. Empty > without marker", -"Получает список товаров выбранного магазина": "Gets the list of products of the selected market (campaign)", -"Отсутствуют необходимые данные авторизации:": "The required authorization data is missing:", -"Ошибка типа значения соответствия артикулов": "Article value type error ", -"Соответствие Из КлючИЗначение, Неопределено": "Map Of KeyAndValue, Undefined", -"Массив доступов по задачам, если необходимо": "Rights array if required", -"Ошибка получения данных булево из параметра": "Error getting boolean data from parameter", -"Формирует квитанции в формате pdf к заказам": "Generates pdf receipts for orders", -"Используется в т-нии 2-х часов для запросов": "2 hrs. lifetime", -"Получает структуру стандартных полей товара": "Gets the structure of product standard fields", -"XML строка или файл конфигурации шифрования": "XML string or file of encryption configuration", -"Обновляет v2 токен при помощи refresh_token": "Updates the v2 token using the refresh_token", -"Путь с параметрами и секцией из URL запроса": "Path with parameters and section from the request URL", -"Добавляет пользователей в чат по массиву ID": "Adds users to the chat by ID array", -"Получает внешнюю ссылку для доступа к файлу": "Get external link to file", -"Получить структуру обновления характеристик": "Get attributes update structure", "Установить настройки версионирования бакета": "Put bucket versioning", -"Получить структуру параметров представлений": "Get embeddings parameter structure", -"ПолучитьНастройкийВерсионированияБакета (DB": "GetBucketVersioning (DB", -"дата и время в формате timestamp (вместо to": "date and time in timestamp format (instead of to", -"Получает описание товара по идентификаторам": "Get product description by IDs", -"единица измерения для размеров, например mm": "unit of measure for sizes, e.g. mm", -"Открытый пакет интеграций с популярными API": "Open integrations package with popular API aboard", -"Время удержания соединения для Long Polling": "Connection hold time for Long Polling", -"Переносит задачу в выбранную стадию канбана": "Move task to another kanban stage", -"Получает список объектов в выбранном бакете": "Gets the list of objects in the selected bucket", -"Соответствие Из КлючИЗначение, Произвольный": "Map Of KeyAndValue, Arbitrary", -"интервал отправки сообщений в миллисекундах": "message sending interval in milliseconds", -"Текстовый идентификатор (наименование) поля": "Text identifier (name) of the field", -"конкретное значение при указании имени поля": "Specific Value When Specifying Field Name", -"Стрктура или соответствие заголовков запрос": "Structure or map of request headers", -"ВызватьМетод: превышено число переадресаций": "ExecuteMethod: the number of redirects has been exceeded", -"Дата, за которую необходимо получить данные": "Date for which data should be retrieved", -"УстановитьОбъектЗапроса: Установка значения": "SetRequestObject: Setting the value", -"запись и анализ поведения посетителей сайта": "recording and analyzing the behavior of site visitors", -"Отправляет двоичные данные на сервер Ollama": "Sends binary data to the Ollama server", -"Получить заблокированных пользователей чата": "Get chat blocked users", -"Получает информацию о папке или файле по ID": "Gets information about a folder or file by ID", -"Релизы библиотеки выходят в пяти вариантах:": "The library releases come in five variants:", -"ПолучитьСтруктуруСообщенияКонтекста (пустая": "GetContextMessageStructure (empty", -"Токен = ПараметрыФункции[\"Bitrix24_Token": "Token = FunctionParameters[\"Bitrix24_Token", -"Устанавливает коллекцию заголовков запросов": "Sets a collection of query headers", -"ДобавитьИменованныйПараметрКоллекцияКоманды": "AddNamedCommandCollectionParam", -"Получает список отложенных сообщений канала": "Gets a list of delayed channel messages", -"Получает описание поля с электронной почтой": "Gets the description of an email field", +"Токен страницы, если используется пагинация": "Page token if pagination is used", +"Удаляет ранее добавленный товар из подборки": "Removes a previously added product from the selection", +"Обновляет v2 токен при помощи refresh_token": "Updates the v2 token using the refresh_token", +"Получает список товаров выбранного магазина": "Gets the list of products of the selected market (campaign)", +"Получает внешнюю ссылку для доступа к файлу": "Get external link to file", +"Маркер конца сообщения. Пусто > без маркера": "End of message marker. Empty > without marker", +"Добавляет пользователей в чат по массиву ID": "Adds users to the chat by ID array", +"Путь с параметрами и секцией из URL запроса": "Path with parameters and section from the request URL", +"Получает структуру стандартных полей товара": "Gets the structure of product standard fields", +"Используется в т-нии 2-х часов для запросов": "2 hrs. lifetime", +"XML строка или файл конфигурации шифрования": "XML string or file of encryption configuration", +"Ошибка получения данных булево из параметра": "Error getting boolean data from parameter", +"Массив доступов по задачам, если необходимо": "Rights array if required", +"Ошибка типа значения соответствия артикулов": "Article value type error ", +"Отсутствуют необходимые данные авторизации:": "The required authorization data is missing:", +"Получить структуру обновления характеристик": "Get attributes update structure", +"Формирует квитанции в формате pdf к заказам": "Generates pdf receipts for orders", +"название сделки (можно искать по шаблону [%": "deal name (can be searched using the template [%", "Максимальное число попыток получения данных": "Max number of data retrieval attempts", -"ID файла, к которому предоставляется доступ": "ID of the file to be accessed", -"Дополнительная информация (добавочный номер": "Additional information (extension number", +"Соответствие Из КлючИЗначение, Неопределено": "Map Of KeyAndValue, Undefined", +"УстановитьОбъектЗапроса: Установка значения": "SetRequestObject: Setting the value", +"Получить структуру параметров представлений": "Get embeddings parameter structure", +"интервал отправки сообщений в миллисекундах": "message sending interval in milliseconds", +"конкретное значение при указании имени поля": "Specific Value When Specifying Field Name", +"Текстовый идентификатор (наименование) поля": "Text identifier (name) of the field", +"Стрктура или соответствие заголовков запрос": "Structure or map of request headers", +"Соответствие Из КлючИЗначение, Произвольный": "Map Of KeyAndValue, Arbitrary", +"Получает описание товара по идентификаторам": "Get product description by IDs", +"Переносит задачу в выбранную стадию канбана": "Move task to another kanban stage", +"Открытый пакет интеграций с популярными API": "Open integrations package with popular API aboard", +"единица измерения для размеров, например mm": "unit of measure for sizes, e.g. mm", +"ВызватьМетод: превышено число переадресаций": "ExecuteMethod: the number of redirects has been exceeded", +"дата и время в формате timestamp (вместо to": "date and time in timestamp format (instead of to", +"Получает список объектов в выбранном бакете": "Gets the list of objects in the selected bucket", +"Дата, за которую необходимо получить данные": "Date for which data should be retrieved", +"Время удержания соединения для Long Polling": "Connection hold time for Long Polling", +"запись и анализ поведения посетителей сайта": "recording and analyzing the behavior of site visitors", "Получает список товаров выбранного кабинета": "Gets the list of products of the business", -"ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных": "GetBinaryDataFromBinaryDataBuffer", -"Преобразует файл с Base64 строкой в бинарный": "Convert Base64 String to Binary File", -"Получает шаблон описания для создания товара": "Gets the description template for creating a product", -"Получает список запросов на вступление в чат": "Gets a list of requests to join the chat room", -"GreenAPI_СкачатьФайлСообщения(ПараметрыТеста": "GreenAPI_DownloadMessageFile(TestParameters", -"Минимальный вес в кг, который принимает офис": "Minimum weight in kg that the office accepts", -"Создает рекламное объявление на основе поста": "Creates an advertising post based on a post", -"Получает список операций выбранного счетчика": "Gets the list of actions of the selected counter", -"Приостанавливает показ рекламного объявления": "Pauses the display of the advertising post", -"Этот раздел посвящен библиотеке для работы с": "This section is dedicated to the library for working with", -"Массив тегов (Etag) из загрузок каждой части": "An array of tags (Etag) from the uploads responses of each part", -"заранее созданное функцией ОткрытьСоединение": "previously created by the CreateConnection function", +"ПолучитьСтруктуруСообщенияКонтекста (пустая": "GetContextMessageStructure (empty", +"ПолучитьНастройкийВерсионированияБакета (DB": "GetBucketVersioning (DB", +"Дополнительная информация (добавочный номер": "Additional information (extension number", +"ID файла, к которому предоставляется доступ": "ID of the file to be accessed", +"Получает список отложенных сообщений канала": "Gets a list of delayed channel messages", +"ДобавитьИменованныйПараметрКоллекцияКоманды": "AddNamedCommandCollectionParam", +"Получает описание поля с электронной почтой": "Gets the description of an email field", +"Токен = ПараметрыФункции[\"Bitrix24_Token": "Token = FunctionParameters[\"Bitrix24_Token", +"Релизы библиотеки выходят в пяти вариантах:": "The library releases come in five variants:", +"Получает информацию о папке или файле по ID": "Gets information about a folder or file by ID", +"Получить заблокированных пользователей чата": "Get chat blocked users", +"Отправляет двоичные данные на сервер Ollama": "Sends binary data to the Ollama server", +"Устанавливает коллекцию заголовков запросов": "Sets a collection of query headers", "Удалить объект без возможности востановления": "Delete object without the possibility of recovery", -"Создает новый TCP сервер и устаналивает порт": "Creates a new TCP server and sets the port", -"Пересылает сообщения из одного чата в другой": "Sends messages from one chat room to another", -"УстановитьПользовательскиеНастройкиКалендаря": "SetCustomCalendarSettings", -"Добавляет вариант для существующего свойства": "Adds a variant for an existing property", -"тип календаря: user, group, company_calendar": "calendar type: user, group, company_calendar", -"Авторизоваться через ВК и подтвердить доступ": "Authorize through VK and confirm access", -"Загружает файлы на сервер и возвращает их ID": "Uploads files to the server and returns their IDs", -"Похоже, что в ответе пришли двоичные данные!": "It Seems Binary Data Was Received in Response!", -"ID пользователя или нескольких пользователей": "Usesr ID or array of users IDs", -"Переводит каталог в режим публичного доступа": "Sets the directory to public access mode", -"ДополнитьЗаголовки: установка Content-Length": "CompleteHeaders: Content-Length setting", -"Копирует файл или каталог по выбранному пути": "Copies a file or directory to the selected path", -"Токен следующей страницы при большой выборке": "Next page token in case of a large selection", -"Токен для удаления конкретной версии объекта": "Token for deleting a specific version of an object", -"ID последнего обработанного до этого события": "ID of the last event processed before this event", -"Изменяет цены однного или нескольких товаров": "Changes the price of one or more items", -"Завершить сообщение символом переноса строки": "End the message with a line break character", -"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_UR", +"Приостанавливает показ рекламного объявления": "Pauses the display of the advertising post", +"заранее созданное функцией ОткрытьСоединение": "previously created by the CreateConnection function", +"Массив тегов (Etag) из загрузок каждой части": "An array of tags (Etag) from the uploads responses of each part", +"Этот раздел посвящен библиотеке для работы с": "This section is dedicated to the library for working with", +"Получает список операций выбранного счетчика": "Gets the list of actions of the selected counter", +"Преобразует файл с Base64 строкой в бинарный": "Convert Base64 String to Binary File", +"Минимальный вес в кг, который принимает офис": "Minimum weight in kg that the office accepts", +"GreenAPI_СкачатьФайлСообщения(ПараметрыТеста": "GreenAPI_DownloadMessageFile(TestParameters", +"Получает список запросов на вступление в чат": "Gets a list of requests to join the chat room", "Bitrix24_ПолучитьСсылкуАвторизацииПриложения": "Bitrix24_GetAppAuthLink", -"Получает новый токен на основе рефреш токена": "Gets a new token based on the refresh token", -"Изменяет цвет чата для мобильного приложения": "Chat chat color for mobile app", -"Область действия (scope) или массив областей": "Scope or array of scopes", -"УстановитьПараметрыURL: установка параметров": "SetURLParams: parameter setting", -"отслеживание хеша в адресной строке браузера": "tracking the hash in the browser address bar", -"Отзывает права администратора у пользователя": "Revokes administrator rights from the user", -"Сумма наложенного платежа, в том числе и НДС": "Amount of cash on delivery, including VAT", -"Перейдите на [главную страницу Google Cloud]": "Go to the [Google Cloud Console]", -"Создает новую модель с заданными настройками": "Creates a new model with the specified settings", -"СформироватьЗапрос: Создание объекта запроса": "FormRequest: Creating a request object", -"СформироватьСтруктуруНастроекВерсионирования": "FormVersioningStructure", -"Ключ разработчика (для разработчиков модулей": "Developer key (for module developers", -"По этой ссылке необходимо перейти в браузере": "You need to follow this link in your browser", -"УстановитьНастройкиВерсионированияБакета (DB": "PutBucketVersioning (DB", -"Создает ссылку для вступления в закрытый чат": "Creates a link for joining a closed chat", -"uid пользователя, которому выдано разрешение": "uid of the user to whom the authorization has been granted", -"Возвращает структуру полей события календаря": "Returns the structure of the calendar event fields", -"Порядковый номер части объекта от 1 до 10000": "Number of the object part from 1 to 10000", -"не получится (access_token тоже не получится": "won't work (access_token won't work either", -"Важно: Для работы компоненты требуется GLIBC": "Important: The component requires GLIBC", -"Загружает одиночный файл на сервер Neocities": "Upload single file to Neocities", -"Тип календаря: user, group, company_calendar": "Calendar type: user, group, company_calendar", -"Флаг использования API для тестовых запросов": "Flag to use test API for requests", -"Признак использования защищенного соединения": "Flag for using a secure connection", -"Получает список акций, доступных для участия": "Gets a list of available promotions", -"УстановитьСтроковоеТело: Нет данных, пропуск": "SetStringBody: No data, skip", -"Нормализованный набор параметров для запроса": "Normalised set of parameters for a query", -"сериализованный JSON ответа от Yandex Market": "serialized JSON response from Yandex Market", -"Получает структуру для отбора списка товаров": "Gets the structure for selecting the list of products", +"Создает новый TCP сервер и устаналивает порт": "Creates a new TCP server and sets the port", +"Создает рекламное объявление на основе поста": "Creates an advertising post based on a post", +"Получает шаблон описания для создания товара": "Gets the description template for creating a product", +"Добавляет вариант для существующего свойства": "Adds a variant for an existing property", +"Пересылает сообщения из одного чата в другой": "Sends messages from one chat room to another", +"Завершить сообщение символом переноса строки": "End the message with a line break character", +"Токен для удаления конкретной версии объекта": "Token for deleting a specific version of an object", +"Токен следующей страницы при большой выборке": "Next page token in case of a large selection", +"Копирует файл или каталог по выбранному пути": "Copies a file or directory to the selected path", +"ДополнитьЗаголовки: установка Content-Length": "CompleteHeaders: Content-Length setting", +"Изменяет цены однного или нескольких товаров": "Changes the price of one or more items", +"ID пользователя или нескольких пользователей": "Usesr ID or array of users IDs", +"Похоже, что в ответе пришли двоичные данные!": "It Seems Binary Data Was Received in Response!", +"Загружает файлы на сервер и возвращает их ID": "Uploads files to the server and returns their IDs", +"Авторизоваться через ВК и подтвердить доступ": "Authorize through VK and confirm access", +"тип календаря: user, group, company_calendar": "calendar type: user, group, company_calendar", +"Переводит каталог в режим публичного доступа": "Sets the directory to public access mode", +"ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных": "GetBinaryDataFromBinaryDataBuffer", +"УстановитьПользовательскиеНастройкиКалендаря": "SetCustomCalendarSettings", +"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_UR", "Показывает ранее скрытую главную тему форума": "Shows a previously hidden main forum thread", +"Получает новый токен на основе рефреш токена": "Gets a new token based on the refresh token", +"УстановитьНастройкиВерсионированияБакета (DB": "PutBucketVersioning (DB", +"СформироватьЗапрос: Создание объекта запроса": "FormRequest: Creating a request object", +"ID последнего обработанного до этого события": "ID of the last event processed before this event", +"Ключ разработчика (для разработчиков модулей": "Developer key (for module developers", +"СформироватьСтруктуруНастроекВерсионирования": "FormVersioningStructure", +"Создает новую модель с заданными настройками": "Creates a new model with the specified settings", +"Область действия (scope) или массив областей": "Scope or array of scopes", +"Сумма наложенного платежа, в том числе и НДС": "Amount of cash on delivery, including VAT", +"Отзывает права администратора у пользователя": "Revokes administrator rights from the user", +"отслеживание хеша в адресной строке браузера": "tracking the hash in the browser address bar", +"УстановитьПараметрыURL: установка параметров": "SetURLParams: parameter setting", +"Создает ссылку для вступления в закрытый чат": "Creates a link for joining a closed chat", +"Перейдите на [главную страницу Google Cloud]": "Go to the [Google Cloud Console]", +"uid пользователя, которому выдано разрешение": "uid of the user to whom the authorization has been granted", +"По этой ссылке необходимо перейти в браузере": "You need to follow this link in your browser", +"Порядковый номер части объекта от 1 до 10000": "Number of the object part from 1 to 10000", "Получает товары, доступные в выбранной акции": "Gets the products available in the selected promotion", -"Атрибуты, индивидуальные для разных категорий": "Attributes individualized for different categories", +"Возвращает структуру полей события календаря": "Returns the structure of the calendar event fields", +"Получает структуру для отбора списка товаров": "Gets the structure for selecting the list of products", +"сериализованный JSON ответа от Yandex Market": "serialized JSON response from Yandex Market", +"Нормализованный набор параметров для запроса": "Normalised set of parameters for a query", +"УстановитьСтроковоеТело: Нет данных, пропуск": "SetStringBody: No data, skip", +"Изменяет цвет чата для мобильного приложения": "Chat chat color for mobile app", +"Признак использования защищенного соединения": "Flag for using a secure connection", +"Флаг использования API для тестовых запросов": "Flag to use test API for requests", +"Тип календаря: user, group, company_calendar": "Calendar type: user, group, company_calendar", +"Загружает одиночный файл на сервер Neocities": "Upload single file to Neocities", +"Важно: Для работы компоненты требуется GLIBC": "Important: The component requires GLIBC", +"Получает список акций, доступных для участия": "Gets a list of available promotions", +"не получится (access_token тоже не получится": "won't work (access_token won't work either", +"Копирует файл из одного расположения в другое": "Copy file from one destination to another", +"Восстанавливает ранее удаленный счетчик по ID": "Restores a previously deleted counter by ID", +"Повторно открывает ранее закрытую тему форума": "Reopens a previously closed forum thread", +"УстановитьДвоичноеТело: начало установки тела": "SetBinaryBody: beginning of body setting", "Сумма НДС, включённая в доп. сбор за доставку": "VAT included in additional delivery charge", "Структура с информацией об успешности запуска": "Structure with information about the startup success", -"УстановитьДвоичноеТело: Начало установки тела": "SetBinaryBody: Beginning of body setting", +"Атрибуты, индивидуальные для разных категорий": "Attributes individualized for different categories", +"Время доставки С, согласованное с получателем": "Delivery time FROM agreed with the recipient", +"Перемещает каталог в корзину удаляемых файлов": "Move folder to recycle bin", "Выберите необходимый сайт из списка и нажмите": "Select the site from the list and click", "Позволяет выбирать несколько вариантов ответа": "Allows to select more than one answer choice", -"УстановитьДвоичноеТело: начало установки тела": "SetBinaryBody: beginning of body setting", -"Повторно открывает ранее закрытую тему форума": "Reopens a previously closed forum thread", -"Восстанавливает ранее удаленный счетчик по ID": "Restores a previously deleted counter by ID", -"Копирует файл из одного расположения в другое": "Copy file from one destination to another", -"Перемещает каталог в корзину удаляемых файлов": "Move folder to recycle bin", -"ПолучитьСтруктуруПараметровВКонтексте (пустая": "GetContextParameterStructure (empty", -"Получает список пользователей рабочей области": "Gets a list of users in the workspace", +"Не удалось получить информацию из json медиа!": "Failed to Retrieve Information from JSON media!", "Возвращает структуру полей описания календаря": "Returns the structure of the calendar description fields", "Назначает пользователя администратором группы": "Assigns the user as the group administrator", "Создает персональное уведомление пользователю": "Creates a personal notification to the user", "Устанавливает настройки прокси для соединения": "Sets the proxy settings for the connection", "Получить пользовательские настройки календаря": "Get custom calendar settings", -"Не удалось получить информацию из json медиа!": "Failed to Retrieve Information from JSON media!", +"ПолучитьСтруктуруПараметровВКонтексте (пустая": "GetContextParameterStructure (empty", "Переданное значение не является TCP-сервером!": "The passed value is not a TCP server!", "ДвоичныеДанные, Соответствие Из КлючИЗначение": "BinaryData, Map Of KeyAndValue", "Идентификатор новой подборки, если необходимо": "Identifier of the new selection, if needed", "Требования: платформа 1С версии 8.3.10 и выше": "Requirements: 1C platform version 8.3.10 and above", -"Время доставки С, согласованное с получателем": "Delivery time FROM agreed with the recipient", -"Кодировка для записи исходящей строки в поток": "Encoding for writing the outgoing string to the stream", -"!OInt ОсвободитьОбъект(ПромежуточныйРезультат": "!OInt FreeObject(InterimResult", -"Соответствие Из КлючИЗначение, ДвоичныеДанные": "Map Of KeyAndValue, BinaryData", -"Раскомментировать, если выполняется OneScript": "Uncomment if OneScript is executed", -"зарегистрироваться и создать новое приложение": "register, and create a new application", -"Признак использования multipart полей в OAuth": "Sign of using multipart fields in OAuth", -"Массив сообщений о действиях внутри обработки": "Array of messages about actions within the processing", +"Получает список пользователей рабочей области": "Gets a list of users in the workspace", +"УстановитьДвоичноеТело: Начало установки тела": "SetBinaryBody: Beginning of body setting", "Изменяет данные записи о трудозатратах задачи": "Update time accounting record data", -"Удалить последние сообщения перед блокировкой": "Delete last messages before blocking", -"Получить структуру фильтра событий календарей": "Get calendar events filter structure", -"Получает токен авторизации по логину и паролю": "Receives authorization token by login and password", -"Получить ссылку скачивания публичного объекта": "Get download link for public object", -"дата и время в формате timestamp (вместо from": "date and time in timestamp format (instead of from", "Цены товаров. См. ПолучитьСтруктуруЦеныТовара": "Products prices. See GetProductPriceStructure", +"Кодировка для записи исходящей строки в поток": "Encoding for writing the outgoing string to the stream", +"Получает токен авторизации по логину и паролю": "Receives authorization token by login and password", +"Получить структуру фильтра событий календарей": "Get calendar events filter structure", +"Удалить последние сообщения перед блокировкой": "Delete last messages before blocking", +"зарегистрироваться и создать новое приложение": "register, and create a new application", +"Раскомментировать, если выполняется OneScript": "Uncomment if OneScript is executed", +"Соответствие Из КлючИЗначение, ДвоичныеДанные": "Map Of KeyAndValue, BinaryData", +"Получить ссылку скачивания публичного объекта": "Get download link for public object", +"Массив сообщений о действиях внутри обработки": "Array of messages about actions within the processing", +"дата и время в формате timestamp (вместо from": "date and time in timestamp format (instead of from", +"Признак использования multipart полей в OAuth": "Sign of using multipart fields in OAuth", "Получить список пользовательских полей задачи": "Get list of custom task fields", "Токен для получения конкретной версии объекта": "Token for receiving a specific version of an object", "Возвращает структура клавиатуры для сообщений": "Returns a keyboard structure for messages", "Даты - передаются как строки формата ISO 8601": "Dates are passed as strings in ISO 8601 format", "Ozon_ОбновитьИзображенияТовара(ПараметрыТеста": "Ozon_UpdateProductImages(TestParameters", -"Получает настройки учета времени пользователя": "Gets user timekeeping settings", +"Получает информацию о чеках за указанную дату": "Gets information about checks for a specified date", "Описание локации. См. ПолучитьОписаниеЛокации": "Location description. See GetLocationDescription", "Таймаут ожидания отправки запроса (в секундах": "Request sending timeout (in seconds", "УстановитьСтроковоеТело: нет данных - пропуск": "SetStringBody: no data - skip", -"Получает информацию о чеках за указанную дату": "Gets information about checks for a specified date", -"Получает внешнюю ссылку для доступа к каталогу": "Get external link to folder", -"Время доставки ПО, согласованное с получателем": "Delivery time TO agreed with the recipient", -"Время жизни ссылки в секундах. 604800 максимум": "Link lifetime in seconds. 604800 max.", -"минимальная цена товара после применения акций": "minimum price of product after promotions have been applied", -"сериализованный JSON ответа от сервера MongoDB": "serialized JSON response from MongoDB server", -"Сумма дополнительного сбора (в том числе и НДС": "Amount of additional fee (including VAT", -"URL, по которому необходимо перейти в браузере": "URL to go to in the browser", -"Строка или коллекция для преобразования в JSON": "String or collection to convert to JSON", -"Удаляет указанное сообщение из чата или канала": "Delete message from chat or channel", -"Проверяет доступность задачи для пользователей": "Checks the availability of the task for users", -"логин пользователя, которому выдано разрешение": "login of the user to whom the authorization has been granted", +"!OInt ОсвободитьОбъект(ПромежуточныйРезультат": "!OInt FreeObject(InterimResult", +"Получает настройки учета времени пользователя": "Gets user timekeeping settings", "Получает информацию о комментарии задачи по ID": "Gets task comment data by ID", +"логин пользователя, которому выдано разрешение": "login of the user to whom the authorization has been granted", +"Проверяет доступность задачи для пользователей": "Checks the availability of the task for users", +"Удаляет указанное сообщение из чата или канала": "Delete message from chat or channel", +"Строка или коллекция для преобразования в JSON": "String or collection to convert to JSON", +"Получает внешнюю ссылку для доступа к каталогу": "Get external link to folder", +"Сумма дополнительного сбора (в том числе и НДС": "Amount of additional fee (including VAT", +"сериализованный JSON ответа от сервера MongoDB": "serialized JSON response from MongoDB server", +"минимальная цена товара после применения акций": "minimum price of product after promotions have been applied", +"Время доставки ПО, согласованное с получателем": "Delivery time TO agreed with the recipient", "Список адресов почты добавляемых пользователей": "List of email addresses of users being added", +"URL, по которому необходимо перейти в браузере": "URL to go to in the browser", "Получает статус (онлайн) текущего пользователя": "Gets the status (online) of the current user", -"Скрыть старые сообщения от новых пользователей": "Hide old messages from new members", -"УстановитьСтроковоеТело: начало установки тела": "SetStringBody: beginning of body setting", -"Отправляет текстовое сообщение в выбранный чат": "Sends a text message to the selected chat room", "Отправляет текстовое сообщение в чат или канал": "Sends a text message to a chat or channel", -"Ошибка получения двоичных данных из параметра:": "Error getting binary data from parameter:", -"CLI_GreenAPI_РазлогинитьИнстанс(ПараметрыТеста": "CLI_GreenAPI_LogoutInstance(TestParameters", -"UUID квитанции, полученный при ее формировании": "UUID of the receipt received during its creation", -"Формирует ссылку для авторизации через браузер": "Forms a link for authorization via the browser", -"Отключает попытку преобразования ответа в JSON": "Disables an attempt to convert the response to JSON", -"Получает список магазинов в кабинете по токену": "Gets the list of shops in the cabinet by token", -"Загружает несколько файлов на сервер Neocities": "Uploads multiple files to Neocities", -"Добавляет заголовок в набор заголовков запроса": "Adds a header to the request header set", -"НачалоКодовУспеха И ОтветПроверки.КодСостояния": "StartOfSuccessCodes And CheckResponse.StatusCode", +"УстановитьСтроковоеТело: начало установки тела": "SetStringBody: beginning of body setting", +"Скрыть старые сообщения от новых пользователей": "Hide old messages from new members", "Получает список записей о трудозатратах задачи": "Get list of time accounting records for task", -"Получает товары, участвующие в выбранной акции": "Gets the products featured in the selected promotion", +"НачалоКодовУспеха И ОтветПроверки.КодСостояния": "StartOfSuccessCodes And CheckResponse.StatusCode", +"Загружает несколько файлов на сервер Neocities": "Uploads multiple files to Neocities", +"Получает список магазинов в кабинете по токену": "Gets the list of shops in the cabinet by token", +"Отключает попытку преобразования ответа в JSON": "Disables an attempt to convert the response to JSON", +"Добавляет заголовок в набор заголовков запроса": "Adds a header to the request header set", +"UUID квитанции, полученный при ее формировании": "UUID of the receipt received during its creation", +"Ошибка получения двоичных данных из параметра:": "Error getting binary data from parameter:", "Не удалось удалить временный файл после теста!": "Failed to delete the temporary file after the test!", +"Отправляет текстовое сообщение в выбранный чат": "Sends a text message to the selected chat room", +"Формирует ссылку для авторизации через браузер": "Forms a link for authorization via the browser", +"Время жизни ссылки в секундах. 604800 максимум": "Link lifetime in seconds. 604800 max.", +"Получает товары, участвующие в выбранной акции": "Gets the products featured in the selected promotion", +"CLI_GreenAPI_РазлогинитьИнстанс(ПараметрыТеста": "CLI_GreenAPI_LogoutInstance(TestParameters", "Телефон в международном формате без знака плюс": "Phone number in international format without a plus sign", -"Истина > отправляет файлы отдельными запросами": "True > sends files in separate requests", -"Получает общую статистику сообщества за период": "Gets the overall community statistics for a period", -"Адрес обработки запросов от Telegram (с https:": "Request handling address from Telegram (with https:", -"Клавиатура под сообщением или на нижней панели": "Keyboard under the message or on the bottom panel", -"УстановитьОбъектСоединения: Установка значения": "SetConnectionObject: Setting the value", -"Не удалось инициализировать внешнюю компоненту": "Failed to initialize AddIn", -"Код ПВЗ, в который планируется передать заказы": "Code of shipment point to which it is planned to transfer orders", -"ПолучитьСписокПользовательскихПолейЗадачи (хук": "GetCustomTaskFieldsList (wh", -"Список офисов](@api-docs.cdek.ru/36982648.html": "List of pickup points](@api-docs.cdek.ru/36990336.html", -"Токен авторизации, если используется не вебхук": "Access token, when app auth method used", -"ПараметрыЗапросаВСтроку: Добавление параметров": "RequestParametersToString: Adding parameters", -"Устанавливает или снимает реакцию на сообщение": "Set or remove reaction mark on the message", -"ИспользоватьПоляТелаВOAuth: установка значения": "UseBodyFiledsAtOAuth: setting the value", -"выставляет статус 'В сети' для вашего аккаунта": "sets the 'Online' status for your account", -"Отправляет контакт с именем и номером телефона": "Sends a contact with name and phone number", -"ИспользоватьКодированиеURL: установка значения": "UseURLEncoding: setting the value", -"GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста": "GreenAPI_GetAuthorizationCode(TestParameters", -"Набор полей заказа. См. ПолучитьОписаниеЗаказа": "Set of order fields. See GetOrderDescription", -"УстановитьСтроковоеТело: Начало установки тела": "SetStringBody: Beginning of body setting", -"которое будет закрыто после выполнения функции": "which will be closed after the function is executed", -"Открепляет ранее закрепленное сообщение в чате": "Unpins a previously pinned chat message", -"Загружает часть объекта при загрузке по частям": "Uploads a part of an object for multipart uploading", -"Создает нового пользователя по структуре полей": "Create new user by fields structure", -"Каталог = ТекущийСценарий().Каталог + \"\"addins": "Directory = CurrentScript().Path + \"\"addins", "Число последних версий объекта для отображения": "Number of the latest versions of the object to display", -"Идентификатор callback query полученного ботом": "Identifier of the callback query received by the bot", +"Устанавливает или снимает реакцию на сообщение": "Set or remove reaction mark on the message", +"ПараметрыЗапросаВСтроку: Добавление параметров": "RequestParametersToString: Adding parameters", +"Список офисов](@api-docs.cdek.ru/36982648.html": "List of pickup points](@api-docs.cdek.ru/36990336.html", +"ПолучитьСписокПользовательскихПолейЗадачи (хук": "GetCustomTaskFieldsList (wh", +"Получает общую статистику сообщества за период": "Gets the overall community statistics for a period", +"Не удалось инициализировать внешнюю компоненту": "Failed to initialize AddIn", +"УстановитьОбъектСоединения: Установка значения": "SetConnectionObject: Setting the value", +"Клавиатура под сообщением или на нижней панели": "Keyboard under the message or on the bottom panel", +"Адрес обработки запросов от Telegram (с https:": "Request handling address from Telegram (with https:", +"ИспользоватьПоляТелаВOAuth: установка значения": "UseBodyFiledsAtOAuth: setting the value", +"Код ПВЗ, в который планируется передать заказы": "Code of shipment point to which it is planned to transfer orders", +"выставляет статус 'В сети' для вашего аккаунта": "sets the 'Online' status for your account", "Путь к файлу для сохранения результата запроса": "Path to the file for saving the request result", -"Порог стоимости товара в целых единицах валюты": "Threshold for the value of goods in whole units of currency", +"Токен авторизации, если используется не вебхук": "Access token, when app auth method used", +"GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста": "GreenAPI_GetAuthorizationCode(TestParameters", +"ИспользоватьКодированиеURL: установка значения": "UseURLEncoding: setting the value", +"Отправляет контакт с именем и номером телефона": "Sends a contact with name and phone number", "сериализованный JSON ответа от Ozon Seller API": "serialized JSON response from Ozon Seller API", -"Копирует объект из одного расположения в другое": "Copies an object from one location to another", -"СформироватьЗапрос: Создание объекта соединения": "FormRequest: Creating a connection object", -"ID пользователя для учета. Текущий по умолчанию": "Users ID. Current by default", -"OInt/tests/Modules/Coverage_ЗапускВсехТестов.os": "OInt/tests/Modules/Coverage_RunAllTests.os", -"Перейдите на [страницу Календаря в Marketplace]": "Go to the [Calendar page on the Marketplace]", -"Массив имен для добавления новых листов в книгу": "Array of names to add new sheets to the spreadsheet", -"Токен авторизации, если используется не веб-хук": "Access token, when app auth method used", -"УстановитьFormТело: тело установлено, размер %1": "SetFormBody: body set, size %1", +"Истина > отправляет файлы отдельными запросами": "True > sends files in separate requests", +"Идентификатор callback query полученного ботом": "Identifier of the callback query received by the bot", +"Каталог = ТекущийСценарий().Каталог + \"\"addins": "Directory = CurrentScript().Path + \"\"addins", +"Порог стоимости товара в целых единицах валюты": "Threshold for the value of goods in whole units of currency", +"Загружает часть объекта при загрузке по частям": "Uploads a part of an object for multipart uploading", +"Открепляет ранее закрепленное сообщение в чате": "Unpins a previously pinned chat message", +"которое будет закрыто после выполнения функции": "which will be closed after the function is executed", +"УстановитьСтроковоеТело: Начало установки тела": "SetStringBody: Beginning of body setting", +"Набор полей заказа. См. ПолучитьОписаниеЗаказа": "Set of order fields. See GetOrderDescription", +"Создает нового пользователя по структуре полей": "Create new user by fields structure", "ДобавитьЗаголовок: установка заголовков запроса": "AddHeader: header setting", +"УстановитьFormТело: тело установлено, размер %1": "SetFormBody: body set, size %1", +"Токен авторизации, если используется не веб-хук": "Access token, when app auth method used", +"Массив имен для добавления новых листов в книгу": "Array of names to add new sheets to the spreadsheet", +"OInt/tests/Modules/Coverage_ЗапускВсехТестов.os": "OInt/tests/Modules/Coverage_RunAllTests.os", +"ID пользователя для учета. Текущий по умолчанию": "Users ID. Current by default", "Добавьте необходимые для ваших целей разрешения": "Add the permissions required for your purposes", -"Наименование файла с расширением для сохранения": "File name with extension", -"УстановитьFormТело: Тело установлено, размер %1": "SetFormBody: Body set, size %1", -"ПолучитьПользовательскиеНастройкиКалендаря (хук": "GetCustomCalendarSettings (wh", -"Получает события календарей с фильтрами или без": "Gets events of calendars with or without filters", -"Максимальный размер данных. 0 > до конца потока": "Max data size. 0 > to the end of the stream", -"Описание контакта. См. ПолучитьОписаниеКонтакта": "Contact description. See GetContactDescription", -"Структура полей чата. См. ПолучитьСтруктуруЧата": "Chat fields structure. See GetChatStructure", -"Получает информацию о магазине (кампании) по ID": "Gets information about a market (campaign) by ID", -"Добавляет блок файла в multipart/form-data тело": "Adds a file block to the multipart/form-data body", -"ТекущаяДата - 60 * 60 * 24); // Дата создания": "CurrentDate - 60 * 60 * 24); // Creation date", -"Попытка выполнения без дополнительных проверовк": "Attempted execution without additional checks", -"UUID штрихкода, полученный при его формировании": "The UID of the barcode received when the barcode was created", -"Dropbox_ПолучитьДанныеИспользованияПространства": "Dropbox_GetSpaceUsageData", -"Получает список пользователей указанного канала": "Gets a list of users in the specified channel", -"Структура полей лида (см. ПолучитьСтруктуруЛида": "Lead fields structure (see GetLeadStructure", +"СформироватьЗапрос: Создание объекта соединения": "FormRequest: Creating a connection object", "Максимальный размер данных. 0 > без ограничений": "Maximum data size. 0 > no limit", -"Получает информацию о товаре по идентификаторам": "Gets product information by identifiers", -"Отправляет URL с предпросмотром в чат или канал": "Sends a URL with a preview to a chat or channel", -"Файлы для загрузки: Ключ > путь на NC, Значение": "Files: Key > destination path on NC, Value", -"Загружает выбранную модель в оперативную память": "Loads the selected model into RAM", -"Установить пользовательские настройки календаря": "Set custom calendar settings", -"Добавляет поле формы в multipart/form-data тело": "Adds a form field to the multipart/form-data body", -"Получает список сообщений в очереди на отправку": "Gets the list of messages in the queue to be sent", -"Выполняет запрос, если он был сформирован ранее": "Executes the request if it was created earlier", -"Ошибка получения коллекции для формирования XML": "Error getting a collection for XML generation", -"УстановитьJsonТело: тело установлено, размер %1": "SetJsonBody: body set, size %1", -"Разрешает незащищенное соединение с библиотекой": "Allows an unsecured connection to the library", -"Создает кампанию в выбранном рекламном кабинете": "Creates a campaign in the selected advertising account", -"Массив или одна структура полей описания товара": "Array or one structure of product description fields", -"Получает список файлов с или без отбора по типу": "Gets a list of files with or without filtering by type", -"Путь к объекту, тег которого необходимо удалить": "Path to the object whose tag needs to be deleted", -"Получает список комментариев к записи в таблице": "Gets the list of comments for a record in the table", -"Для тела запроса установлен несуществующий файл": "A non-existent file is set for the request body", -"Получает список подразделений по ID или фильтру": "Gets a list of departments by ID or filter", -"Отборы, выбранные поля, количество и сортировка": "Filter, selected fields, limit and sorting", -"название задачи (можно искать по шаблону [%_])>": "task name (can be searched using the template [%_])>", -"УстановитьJsonТело: Тело установлено, размер %1": "SetJsonBody: Body set, size %1", -"Пользователь или пользователи чата для удаления": "The member or members of the chat room to remove", -"Получает список календарей указанного владельца": "Gets a list of calendars of the specified owner", -"Получает информацию о пользователях для диалога": "Get users information for dialog", +"Перейдите на [страницу Календаря в Marketplace]": "Go to the [Calendar page on the Marketplace]", +"Наименование файла с расширением для сохранения": "File name with extension", +"Добавляет блок файла в multipart/form-data тело": "Adds a file block to the multipart/form-data body", +"ПолучитьПользовательскиеНастройкиКалендаря (хук": "GetCustomCalendarSettings (wh", +"УстановитьFormТело: Тело установлено, размер %1": "SetFormBody: Body set, size %1", +"Dropbox_ПолучитьДанныеИспользованияПространства": "Dropbox_GetSpaceUsageData", +"Попытка выполнения без дополнительных проверовк": "Attempted execution without additional checks", +"ТекущаяДата - 60 * 60 * 24); // Дата создания": "CurrentDate - 60 * 60 * 24); // Creation date", +"Получает список пользователей указанного канала": "Gets a list of users in the specified channel", +"Структура полей чата. См. ПолучитьСтруктуруЧата": "Chat fields structure. See GetChatStructure", +"Описание контакта. См. ПолучитьОписаниеКонтакта": "Contact description. See GetContactDescription", +"Максимальный размер данных. 0 > до конца потока": "Max data size. 0 > to the end of the stream", +"Получает события календарей с фильтрами или без": "Gets events of calendars with or without filters", +"Структура полей лида (см. ПолучитьСтруктуруЛида": "Lead fields structure (see GetLeadStructure", +"Получает информацию о магазине (кампании) по ID": "Gets information about a market (campaign) by ID", +"Копирует объект из одного расположения в другое": "Copies an object from one location to another", +"UUID штрихкода, полученный при его формировании": "The UID of the barcode received when the barcode was created", "Получает календарь из списка пользователя по ID": "Gets a calendar from the user's list by ID", +"Получает список файлов с или без отбора по типу": "Gets a list of files with or without filtering by type", +"Получает информацию о товаре по идентификаторам": "Gets product information by identifiers", +"УстановитьJsonТело: тело установлено, размер %1": "SetJsonBody: body set, size %1", +"Ошибка получения коллекции для формирования XML": "Error getting a collection for XML generation", +"Выполняет запрос, если он был сформирован ранее": "Executes the request if it was created earlier", +"Добавляет поле формы в multipart/form-data тело": "Adds a form field to the multipart/form-data body", +"Установить пользовательские настройки календаря": "Set custom calendar settings", +"Создает кампанию в выбранном рекламном кабинете": "Creates a campaign in the selected advertising account", +"Загружает выбранную модель в оперативную память": "Loads the selected model into RAM", +"Файлы для загрузки: Ключ > путь на NC, Значение": "Files: Key > destination path on NC, Value", +"Получает список сообщений в очереди на отправку": "Gets the list of messages in the queue to be sent", +"Массив или одна структура полей описания товара": "Array or one structure of product description fields", +"Разрешает незащищенное соединение с библиотекой": "Allows an unsecured connection to the library", +"Путь к объекту, тег которого необходимо удалить": "Path to the object whose tag needs to be deleted", +"название задачи (можно искать по шаблону [%_])>": "task name (can be searched using the template [%_])>", +"Отправляет URL с предпросмотром в чат или канал": "Sends a URL with a preview to a chat or channel", +"Получает информацию о пользователях для диалога": "Get users information for dialog", +"Получает список календарей указанного владельца": "Gets a list of calendars of the specified owner", +"Пользователь или пользователи чата для удаления": "The member or members of the chat room to remove", "Перемещает файл из одного расположения в другое": "Move file from one destination to another", +"Отборы, выбранные поля, количество и сортировка": "Filter, selected fields, limit and sorting", +"Получает список подразделений по ID или фильтру": "Gets a list of departments by ID or filter", +"Для тела запроса установлен несуществующий файл": "A non-existent file is set for the request body", +"Получает список комментариев к записи в таблице": "Gets the list of comments for a record in the table", +"УстановитьJsonТело: Тело установлено, размер %1": "SetJsonBody: Body set, size %1", +"!OInt Сообщить(OPI_Инструменты.JSONСтрокой(Ответ": "!OInt Message(OPI_Tools.JSONString(Response", "Ожидает подключение в течении указанного времени": "Waiting for connection for the specified time", "Массив или одна структура полей атрибутов товара": "Array or one structure of product attribute fields", "Маркер продолжения списка из предыдущего запроса": "Next page marker from the previous request", "двоичные данные zip архива с содержимым каталога": "binary data of the zip archive with the contents of the directory", "ТребуетсяОбработкаУправляющихПоследовательностей": "RequiresProcessingOfEscapeSequences", -"Создает новый блок на основе существующего блока": "Creates a new block based on an existing block", "Удаление заявки](@api-docs.cdek.ru/29948379.html": "Deleting a courier invitation](@api-docs.cdek.ru/33828880.html", "где `?1 = \"10 AND 20\"`, что приведет к ошибке.^^": "where `?1 = \"10 AND 20,\"' which would cause an error.", "Вид обработки текста (HTML, Markdown, MarkdownV2": "Text processing type (HTML, Markdown, MarkdownV2", "Получает список пользовательских полей для задач": "Gets list of custom task fields", -"Фильтр офисов. См. ПолучитьОписаниеФильтраОфисов": "Office filter. See GetOfficeFilterDescription", -"РазбитьURL: разбиение запроса на составные части": "SplitURL: splitting a request into component parts", +"Удаляет ранее созданный результат из комментария": "Deletes task result, created from a comment", "ID активного подключения. См. ОжидатьПодключение": "Active connection ID. See AwaitingConnection", "Созвращает список дочерних блоков блока-родителя": "Returns list of child blocks of parent block", "Отбор файлов по каталогу. Все, если не заполнено": "Selection of files by catalog. All if not filled in", "Список регионов](@api-docs.cdek.ru/33829418.html": "List of Regions](@api-docs.cdek.ru/33829453.html", -"Удаляет ранее созданный результат из комментария": "Deletes task result, created from a comment", "Дата начала нужного периода доступных таймслотов": "Start date of the required period of available timeslots", "Истина > сортировать по дате, Ложь > по алфавиту": "True > sort by date, False > alphabetically", "tools/Modules/internal/Classes/OPI_HTTPКлиент.os": "tools/Modules/internal/Classes/OPI_HTTPClient.os", -"!OInt Сообщить(OPI_Инструменты.JSONСтрокой(Ответ": "!OInt Message(OPI_Tools.JSONString(Response", -"Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы": "Telegram_ClearPinnedMessagesList", +"Фильтр офисов. См. ПолучитьОписаниеФильтраОфисов": "Office filter. See GetOfficeFilterDescription", "Сформируйте ссылку и перейдите по ней в браузере": "Form a link and click on it in your browser", +"Создает новый блок на основе существующего блока": "Creates a new block based on an existing block", +"Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы": "Telegram_ClearPinnedMessagesList", +"Отклоняет вступление пользователя в закрытый чат": "Rejects the user's request to join a private chat room", "Вы можете передать до 100 идентификаторов за раз": "You can pass up to 100 identifiers at a time", -"сериализованный JSON ответа от CDEK или PDF файл": "serialized JSON response from CDEK or a PDF file", +"РазбитьURL: разбиение запроса на составные части": "SplitURL: splitting a request into component parts", +"Получает данные строки таблицы по идентификатору": "Gets row data of the table by identifier", "Удаление заказа](@api-docs.cdek.ru/29924487.html": "Deleting an order](@api-docs.cdek.ru/33828855.html", "ОчиститьСписокЗакрепленныхСообщенийТемы (главная": "ClearPinnedMessagesList (main", "URL, который будет открыт клиентским приложением": "URL to be opened by the client application", "Передана некорректная коллекция доп. заголовков!": "An incorrect collection of additional headers has been passed!", -"Забрать токен из параметра URL в адресной строке": "Retrieve the token from the URL parameter in the address bar", "Истина > в макете будут только обязательные поля": "True > only required fields will be in the set", "Помечает элемент чеклиста задачи как выполненный": "Mark an element as completed", "Идентификатор товара в системе продавца (Артикул": "Item identifier in the vendor's system (Article", "Добавляет сообщение в обсуждение от имени группы": "Adds a message to the discussion on behalf of the group", -"Лимит пользователей (бесконечно, если не указано": "User limit (infinite if not specified", -"Отклоняет вступление пользователя в закрытый чат": "Rejects the user's request to join a private chat room", +"Забрать токен из параметра URL в адресной строке": "Retrieve the token from the URL parameter in the address bar", "Некорректный метод! Проверьте правильность ввода": "Incorrect method! Check input correctness", "пользователь, последним изменивший статус задачи": "the user who last changed the task status", "Получает доступные интервалы доставки для заказа": "Gets available delivery intervals for order", -"Генерирует ответ по заданному текстовому запросу": "Generates a response for a given text query", "Инициализировать: установка стандартных значений": "Initialize: setting of default values", "ПолучитьСтруктуруПараметровПредставлений (пустая": "GetEmbeddingsParameterStructure (empty", "Передана некорректная коллекция доп. параметров!": "An incorrect collection of additional parameters has been passed!", "Получает токен по коду из авторизации в бразуере": "Gets token by code from browser authorization", -"Получает данные строки таблицы по идентификатору": "Gets row data of the table by identifier", -"Вид загрузки (Пост, Товар, История, Опрос, Прочее": "Upload type (Post, Product, Story, Poll, Other", -"ОтправитьТекстовоеСообщение (клавиатура структура": "SendTextMessage (keyboard structure", -"отмечать входящие сообщения прочитанными: yes, no": "mark incoming messages as read: yes, no", -"Фильтр. См. ПолучитьСтруктуруФильтраПользователей": "Filter. See GetUserFilterStructure", -"Изменяет информацию о количестве товара в наличии": "Changes the information about the stock amount of a product", -"Структура счетчика. См. ПолучитьСтруктуруСчетчика": "Counter structure. See GetCounterStructure", -"источник сообщения: system, user, assistant, tool": "message source: system, user, assistant, tool", -"запрещать приглашать в событие, если время занято": "disallow invitations to an event if the time is full", +"сериализованный JSON ответа от CDEK или PDF файл": "serialized JSON response from CDEK or a PDF file", +"Генерирует ответ по заданному текстовому запросу": "Generates a response for a given text query", +"Лимит пользователей (бесконечно, если не указано": "User limit (infinite if not specified", "Зайдите в приложение Viber и создайте новый канал": "Open the Viber app and create a new channel", +"запрещать приглашать в событие, если время занято": "disallow invitations to an event if the time is full", +"источник сообщения: system, user, assistant, tool": "message source: system, user, assistant, tool", +"Структура счетчика. См. ПолучитьСтруктуруСчетчика": "Counter structure. See GetCounterStructure", +"ОтправитьТекстовоеСообщение (клавиатура структура": "SendTextMessage (keyboard structure", +"Фильтр. См. ПолучитьСтруктуруФильтраПользователей": "Filter. See GetUserFilterStructure", +"отмечать входящие сообщения прочитанными: yes, no": "mark incoming messages as read: yes, no", "Идентификатор или массив индентификаторов записей": "Identifier or array of record identifiers", +"Изменяет информацию о количестве товара в наличии": "Changes the information about the stock amount of a product", "Твиттер не смог обработать загруженное вами видео": "Twitter could not process the video you uploaded", -"Обновляет значение записей по выбранным критериям": "Updates the value of records by selected criteria", +"тип календаря: user (пользователя), group (группы": "calendar type: user, group", "ID подборка для помещения товара, если необходимо": "Selection ID for placing the product, if needed", "Изменение заказа](@api-docs.cdek.ru/36981178.html": "Update an order](@api-docs.cdek.ru/36989543.html", "Номер телефона в международном формате без + и 00": "Phone number in international format without + and 00", @@ -8525,24 +8524,24 @@ "OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os": "OneScript: ./OInt/tools/Modules/OPI_SQLQueries.os", "Путь внутри публичного каталога (только для папок": "Path within public catalog (folders only", "CLI_Ozon_ОбновитьИзображенияТовара(ПараметрыТеста": "CLI_Ozon_UpdateProductImages(TestParameters", -"УстановитьПользовательскиеНастройкиКалендаря (хук": "SetCustomCalendarSettings (wh", -"тип календаря: user (пользователя), group (группы": "calendar type: user, group", -"только задачи, которые не являются подзадачами (Y": "only tasks that are not subtasks (Y", "стандартное представление: day, week, month, list": "standard presentation: day, week, month, list", +"Обновляет значение записей по выбранным критериям": "Updates the value of records by selected criteria", +"Вид загрузки (Пост, Товар, История, Опрос, Прочее": "Upload type (Post, Product, Story, Poll, Other", +"только задачи, которые не являются подзадачами (Y": "only tasks that are not subtasks (Y", +"УстановитьПользовательскиеНастройкиКалендаря (хук": "SetCustomCalendarSettings (wh", "Источник: https:github.com/vbondarevsky/Connector": "Source: https:github.com/vbondarevsky/Connector", -"Тип вложений: tweet_video, tweet_image, tweet_gif": "Attachment type: tweet_video, tweet_image, tweet_gif", -"Формирует строку подключения из переданных данных": "Forms a connection string from the passed data", -"Получает структуру стандартных настроек календаря": "Gets the structure of the default calendar settings", -"Таймаут ожидания записи (мс). 0 > без ограничений": "Data reading timeout (ms). 0 > no limit", -"Путь к каталогу. Необязателен, если указан курсор": "Path to the directory. Optional if the cursor is specified", -"Время чтения данных (сек). 0 > до конца сообщения": "Data reading time (sec). 0 > until the end of the message", -"Подтверждает окончание загрузки объекта по частям": "Confirms the multipart uploading finish", +"Дополнительные заголовки запроса, если необходимо": "Additional request headers, if necessary", "Получает список доступных значений характеристики": "Gets the list of available values of the attribute", -"Истина > возвращает поля фильтра как соответствие": "True > returns the filter fields as a map", +"Подтверждает окончание загрузки объекта по частям": "Confirms the multipart uploading finish", +"Время чтения данных (сек). 0 > до конца сообщения": "Data reading time (sec). 0 > until the end of the message", +"Формирует строку подключения из переданных данных": "Forms a connection string from the passed data", +"Таймаут ожидания записи (мс). 0 > без ограничений": "Data reading timeout (ms). 0 > no limit", +"Получает структуру стандартных настроек календаря": "Gets the structure of the default calendar settings", "Таймаут ожидания данных (мс). 0 > без ограничений": "Data waiting timeout (ms). 0 > no limit", +"Путь к каталогу. Необязателен, если указан курсор": "Path to the directory. Optional if the cursor is specified", "Обновляет изображения и маркетинговый цвет товара": "Update images and marketing color", -"Признак преобразования полученных данных в строку": "Flag of converting the received data into a string", -"Получает список файлов с отбором каталога или без": "Gets a list of files with or without directory selection", +"ПолучитьСтруктуруФильтраСобытийКалендарей (пустая": "GetCalendarEventsFilterStructure (empty", +"Истина > возвращает поля фильтра как соответствие": "True > returns the filter fields as a map", "OneScript: ./OInt/tools/Modules/OPI_Компоненты.os": "OneScript: ./OInt/tools/Modules/OPI_AddIns.os", "Список позиций: Ключ > SKU, Значение > Количество": "Items list: Key > SKU, Value > Amount", "Получает план задач на день текущего пользователя": "Gets the task plan for the current users day", @@ -8550,55 +8549,56 @@ "tools/Modules/internal/Classes/OPI_ЗапросыHTTP.os": "tools/Modules/internal/Classes/OPI_HTTPRequests.os", "Источник сообщения: system, user, assistant, tool": "Message source: system, user, assistant, tool", "Преобразует файл с Base64 строкой в бинарный файл": "Convert file with Base64 string to binary file", -"Дополнительные заголовки запроса, если необходимо": "Additional request headers, if necessary", -"ПолучитьСтруктуруФильтраСобытийКалендарей (пустая": "GetCalendarEventsFilterStructure (empty", +"Тип вложений: tweet_video, tweet_image, tweet_gif": "Attachment type: tweet_video, tweet_image, tweet_gif", "tools/Modules/internal/Modules/OPI_Инструменты.os": "tools/Modules/internal/Modules/OPI_Tools.os", -"Адрес активного соединения. См. ОжидатьПодключения": "The address of the active connection. See AwaitConnections", -"Добавляет новый текстовый тег к файлу или каталогу": "Add new tag to file or folder", -"УстановитьОбъектСоединения: Передано не соединение": "SetConnectionObject: Not a connection has been passed", -"Курьеру необходим документ удостоверяющий личность": "The courier needs an identity document", -"Получает список пользователей по заданному фильтру": "Gets the list of users according to the specified filter", -"Информация о чеке](@api-docs.cdek.ru/68257388.html": "Cashbox check information](@api-docs.cdek.ru/68258028.html", -"Номер заказа в ИС Клиента (uuid, если не заполнено": "Order number in the customers system (uuid, if not filled in", +"Признак преобразования полученных данных в строку": "Flag of converting the received data into a string", +"Получает список файлов с отбором каталога или без": "Gets a list of files with or without directory selection", "Формирует штрихкод места в формате PDF для заказов": "Generates a PDF barcode CP for orders", -"Комплект защитных плёнок для X3 NFC. Темный хлопок": "Protective film set for X3 NFC. Dark cotton", -"ПолучитьСтруктуруПользовательскихНастроекКаледнаря": "GetCalednarCustomSettingsStructure", -"ОбработатьЗапрос: формирование объекта HTTPЗапроса": "ProcessRequest: creation of HTTPRequest object", -"Запрещает доступ к файлу для внешних пользователей": "Prohibits access to the file for external users", -"Устанавлиает шифрование бакета по XML конфигурации": "Sets bucket encryption by XML configuration", -"Идентификаторы товаров в системе продавца (Артикул": "Item identifiers in the vendor's system (Article", -"Добавляет заголовок запроса для Bearer авторизации": "Adds a request header for Bearer authorization", -"Получает информацию о пользовательском поле задачи": "Get custom task field data", -"Не удалось привести структуру значений к коллекции": "Failed to convert the structure of values to a collection", -"Код страны производителя товара ISO_3166-1_alpha-2": "Country code of the product manufacturer as ISO_3166-1_alpha-2", -"Отправляет сообщение (ответ) выбранному соединению": "Sends a message (response) to the selected connection", -"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_Domain", -"Описание заявки. См. ПолучитьОписаниеЗаявкиКурьера": "Invitations description. See GetCourierInvitationsDescription", -"строка или список строк текста лицензий для модели": "a string or list of strings of license text for the model", +"Номер заказа в ИС Клиента (uuid, если не заполнено": "Order number in the customers system (uuid, if not filled in", +"Получает список пользователей по заданному фильтру": "Gets the list of users according to the specified filter", "Код ПВЗ СДЭК для самостоятельного привоза клиентом": "Code of CDEK POZ for self carriage by the customer", -"Переслыает существующее сообщение в текущий диалог": "Forwards an existing message to the current dialog box", -"OneScript: ./OInt/tools/Modules/OPI_ЗапросыHTTP.os": "OneScript: ./OInt/tools/Modules/OPI_HTTPRequests.os", -"ID асинхронной работы из ответа ЗагрузитьФайлПоURL": "ID of async jsob from UploadFileByURL response", -"Неизвестный параметр в позиции %1 параметр %2 %3%4": "Unknown parameter in position %1 parameter %2 %3%4", -"Признак деления массива на отдельные параметры URL": "Flag for dividing the array into individual URL parameters", -"УстановитьСтандартныеНастройки: установка настроек": "SetDefaultSettings: configuration setting", -"Получает данные из потока существующего соединения": "Gets data from the flow stream of an existing connection", -"частота повторения: DAILY, WEEKLY, MONTHLY, YEARLY": "repetition rate: DAILY, WEEKLY, MONTHLY, YEARLY", -"ПолучитьСоответствиеУправляющихПоследовательностей": "GetEscapeSequencesMap", -"Удаляет одну или массив записей по идентификаторам": "Deletes one or an array of records by identifiers", -"Истина > возвращает строку, Ложь > двоичные данные": "True > returns string, False > binary data", +"УстановитьОбъектСоединения: Передано не соединение": "SetConnectionObject: Not a connection has been passed", +"Добавляет новый текстовый тег к файлу или каталогу": "Add new tag to file or folder", +"Адрес активного соединения. См. ОжидатьПодключения": "The address of the active connection. See AwaitConnections", +"Комплект защитных плёнок для X3 NFC. Темный хлопок": "Protective film set for X3 NFC. Dark cotton", +"Курьеру необходим документ удостоверяющий личность": "The courier needs an identity document", +"ПолучитьСтруктуруПользовательскихНастроекКаледнаря": "GetCalednarCustomSettingsStructure", +"Код страны производителя товара ISO_3166-1_alpha-2": "Country code of the product manufacturer as ISO_3166-1_alpha-2", +"Запрещает доступ к файлу для внешних пользователей": "Prohibits access to the file for external users", +"ОбработатьЗапрос: формирование объекта HTTPЗапроса": "ProcessRequest: creation of HTTPRequest object", +"Отправляет сообщение (ответ) выбранному соединению": "Sends a message (response) to the selected connection", +"Не удалось привести структуру значений к коллекции": "Failed to convert the structure of values to a collection", +"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_Domain", +"Добавляет заголовок запроса для Bearer авторизации": "Adds a request header for Bearer authorization", +"Идентификаторы товаров в системе продавца (Артикул": "Item identifiers in the vendor's system (Article", +"Устанавлиает шифрование бакета по XML конфигурации": "Sets bucket encryption by XML configuration", +"Получает информацию о пользовательском поле задачи": "Get custom task field data", +"Информация о чеке](@api-docs.cdek.ru/68257388.html": "Cashbox check information](@api-docs.cdek.ru/68258028.html", +"строка или список строк текста лицензий для модели": "a string or list of strings of license text for the model", "CLI_GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста": "CLI_GetAuthorizationCode(TestParameters", +"Переслыает существующее сообщение в текущий диалог": "Forwards an existing message to the current dialog box", +"Описание заявки. См. ПолучитьОписаниеЗаявкиКурьера": "Invitations description. See GetCourierInvitationsDescription", +"ПолучитьСоответствиеУправляющихПоследовательностей": "GetEscapeSequencesMap", +"частота повторения: DAILY, WEEKLY, MONTHLY, YEARLY": "repetition rate: DAILY, WEEKLY, MONTHLY, YEARLY", +"Получает данные из потока существующего соединения": "Gets data from the flow stream of an existing connection", +"OneScript: ./OInt/tools/Modules/OPI_ЗапросыHTTP.os": "OneScript: ./OInt/tools/Modules/OPI_HTTPRequests.os", +"Признак деления массива на отдельные параметры URL": "Flag for dividing the array into individual URL parameters", +"ID асинхронной работы из ответа ЗагрузитьФайлПоURL": "ID of async jsob from UploadFileByURL response", +"Удаляет одну или массив записей по идентификаторам": "Deletes one or an array of records by identifiers", +"УстановитьСтандартныеНастройки: установка настроек": "SetDefaultSettings: configuration setting", +"Истина > возвращает строку, Ложь > двоичные данные": "True > returns string, False > binary data", +"Неизвестный параметр в позиции %1 параметр %2 %3%4": "Unknown parameter in position %1 parameter %2 %3%4", "Устанавливает тело даже при передаче пустых данных": "Sets the body even when empty data is passed", -"Получает список заблокированных пользователей чата": "Gets the list of blocked chat users", -"tools/Modules/internal/Modules/OPI_Криптография.os": "tools/Modules/internal/Modules/OPI_Cryptography.os", "Отправляет данные о местоположении в указанный чат": "Sends location data to the specified chat room", -"Некорректная команда! Проверьте правильность ввода": "Incorrect command! Check input correctness", -"Данные заполнения, где ключ это имя ячейки вида A1": "Fill data where the key is the cell name like A1", -"ID блока, после которого необходимо встаивть новый": "Block ID after which to insert the new one", -"Тип чата OPEN (публичный) | CHAT (по приглашениям)": "Chat type OPEN (Public) | CHAT (Private)", "Данные сообщения в виде строки или двоичных данных": "Message data as string or binary data", +"Тип чата OPEN (публичный) | CHAT (по приглашениям)": "Chat type OPEN (Public) | CHAT (Private)", +"ID блока, после которого необходимо встаивть новый": "Block ID after which to insert the new one", "Создает новое свойство для использования в товарах": "Creates a new property for use in products", -"Устанавливает статус (онлайн) текущего пользователя": "Sets the status (online) of the current user", +"Некорректная команда! Проверьте правильность ввода": "Incorrect command! Check input correctness", +"tools/Modules/internal/Modules/OPI_Криптография.os": "tools/Modules/internal/Modules/OPI_Cryptography.os", +"Получает список заблокированных пользователей чата": "Gets the list of blocked chat users", +"Данные заполнения, где ключ это имя ячейки вида A1": "Fill data where the key is the cell name like A1", +"Смещение для получение объектов не из начала списка": "Offset for getting objects not from the beginning of the list", "Очищает все существующие заголовки перед установкой": "Clears all existing headers before setting up", "Структура полей задачи (см. ПолучитьСтруктуруЗадачи": "Task fields structure (see GetTaskFieldsStructure", "НачатьЗаписьТелаMultipart: Создание потока в памяти": "StartMultipartBody: Creating a stream in memory", @@ -8606,7 +8606,6 @@ "Закрывает существующее соединение по идентификатору": "Closes an existing connection by identifier", "Параметры доступа. См. СформироватьПараметрыДоступа": "Access parameters. See FormAccessParameters", "Очищает список закрепленных сообщений в теме форума": "Clears the list of pinned messages in the forum thread", -"Смещение для получение объектов не из начала списка": "Offset for getting objects not from the beginning of the list", "УстановитьURL: Разбиение запроса на составные части": "SetURL: Splitting a request into component parts", "ID аккаунта для проверки, что бакет принадлежит ему": "Account ID to verify that hes the bucket owner", "N) - парсить или нет комментарии на наличие смайлов": "N) - parse comments for emoticons or not", @@ -8618,21 +8617,21 @@ "(Дополнительно) Определитесь с целью взаимодействия": "(Optional) Determine the purpose of the interaction", "конечный (нижний) цвет информера в формате RRGGBBAA": "final (bottom) color of the informer in RRGGBBAA format", "Регистрация отказа](@api-docs.cdek.ru/55327658.html": "Registration of refusal](@api-docs.cdek.ru/55327686.html", +"Устанавливает статус (онлайн) текущего пользователя": "Sets the status (online) of the current user", "цена до скидок; укажите значение 0, если скидок нет": "price before discounts; specify 0 if no discounts are available", "Таймаут ожидания новых сообщений при пустой очереди": "Timeout for waiting for new messages when the queue is empty", "ИспользоватьMultipartПоляВOAuth: установка значения": "UseMultipartFieldsAtOAuth: setting the value", -"Получает информацию о последней ошибке в соединении": "Gets information about the last error in the connection", +"Коннектор: удобный HTTP-клиент для 1С:Предприятие 8": "Connector: convenient HTTP client for 1C:Enterprise 8", "Код региона СДЭК, уточняющий параметр для поля city": "CDEK region code, specifying parameter for the city field", "автоприменения стратегий цены: ENABLED или DISABLED": "auto application of price strategies: ENABLED or DISABLED", "Токен для удаления данных конкретной версии объекта": "Token for deleting data of a specific version of an object", "УстановитьДвоичноеТело: Тело установлено, размер %1": "SetBinaryBody: Body set, size %1", -"Коннектор: удобный HTTP-клиент для 1С:Предприятие 8": "Connector: convenient HTTP client for 1C:Enterprise 8", +"ОбработатьЗапрос: перенос тела в объект HTTPЗапроса": "ProcessRequest: place the body in the HTTPRequest object", "Получает информацию о сайте по его имени или токену": "Gets information about a site by its name or token", "Данные авторизации. См.ПолучитьСтандартныеПараметры": "Authorization data. See GetStandardParameters", -"В меню создания бота заполните все необходимые поля": "In the bot creation menu, fill in all the required fields", "Изменяет свойства календаря из списка пользователей": "Edits the properties of a calendar from the user's list", -"Код офиса СДЭК, на который будет доставлена посылка": "Code of CDEK office to which the package will be delivered", -"Коллекция файлов: Ключ > Файл, Значение > Тип медиа": "File collection: Key > File, Value > Media Type", +"Получает информацию о последней ошибке в соединении": "Gets information about the last error in the connection", +"В меню создания бота заполните все необходимые поля": "In the bot creation menu, fill in all the required fields", "Путь к объекту, для которого необходимо создать тег": "Path to the object for which the tag needs to be created", "Подтверждает вступление пользователя в закрытый чат": "Confirms the user's request to join a private chat room", "Отсутствуют обязательные поля в параметрах доступа!": "Missing mandatory fields in access parameters!", @@ -8641,167 +8640,167 @@ "ОтменитьЗаписьMultipart: Удаление записанных данных": "CancelMultipartBody: Deleting recorded data", "Признак использования соответствия вместо структуры": "Use map instead of structure", "Структура полей сделки (см. ПолучитьСтруктуруСделки": "Deal fields structure (see. GetDealStructure", -"ОбработатьЗапрос: перенос тела в объект HTTPЗапроса": "ProcessRequest: place the body in the HTTPRequest object", -"Здесь собрано определение данных для работы с VK API": "Here is a collection of data definitions for working with the VK API", -"Основные данные запроса. См. ПолучитьСтруктуруДанных": "Basic request data. See GetBasicDataStructure", -"Истина > Не выполняет запрос, а возвращает текст SQL": "True > Does not execute the query, but returns SQL text", -"Проверяет существование BLOB по его SHA256 дайджесту": "Checks the existence of a BLOB by its SHA256 digest", -"Структура колонок: Ключ > имя, Значение > Тип данных": "Column structure: Key > Name, Value > Data type", -"НачатьЗаписьТелаMultipart: Создание временного файла": "StartMultipartBody: Creating a temporary file", -"Написать сообщение пользователю в диалоге сообщества": "Write a message to a user in the community's dialog", +"Код офиса СДЭК, на который будет доставлена посылка": "Code of CDEK office to which the package will be delivered", +"Коллекция файлов: Ключ > Файл, Значение > Тип медиа": "File collection: Key > File, Value > Media Type", "Склад или несколько складов для получения таймслотов": "Warehouse or multiple warehouses to receive timeslots", +"Написать сообщение пользователю в диалоге сообщества": "Write a message to a user in the community's dialog", +"Основные данные запроса. См. ПолучитьСтруктуруДанных": "Basic request data. See GetBasicDataStructure", +"Проверяет существование BLOB по его SHA256 дайджесту": "Checks the existence of a BLOB by its SHA256 digest", +"Истина > Не выполняет запрос, а возвращает текст SQL": "True > Does not execute the query, but returns SQL text", "Проверяет загрузку изображений по массиву ID товаров": "Check images upload by products IDs", -"Описание таблиц: Ключ > имя, Значение > массив полей": "Table description: Key > name, Value > array of fields", -"Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС": "VAT rate (value - 0, 10, 12, 20, null - no VAT", +"НачатьЗаписьТелаMultipart: Создание временного файла": "StartMultipartBody: Creating a temporary file", +"Структура колонок: Ключ > имя, Значение > Тип данных": "Column structure: Key > Name, Value > Data type", +"только задачи, которые не являются подзадачами (Y|N)": "only tasks that are not subtasks (Y|N)", "Загружает файл на диск, забирая его по заданному URL": "Downloads a file to disk from the specified URL", "Истина > кнопки выводятся в столбик, Ложь > в строку": "True > buttons are displayed in a column, False > in a row", "НачатьЗаписьТелаMultipart: создание временного файла": "StartMultipartBody: creating a temporary file", -"только задачи, которые не являются подзадачами (Y|N)": "only tasks that are not subtasks (Y|N)", "Ozon_УстановитьСкидкуНаУцененныйТовар(ПараметрыТеста": "Ozon_SetProductDiscount(TestParameters", "Отправляет географические координаты в чат или канал": "Sends geographic coordinates to a chat or channel", "квантовать неквантованную (например, float16) модель": "quantize non-quantized (e.g. float16) model", +"Описание таблиц: Ключ > имя, Значение > массив полей": "Table description: Key > name, Value > array of fields", +"Здесь собрано определение данных для работы с VK API": "Here is a collection of data definitions for working with the VK API", +"Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС": "VAT rate (value - 0, 10, 12, 20, null - no VAT", "Массив типов колонок. См. ПолучитьТипыКолонокТаблицы": "Array of column types. See GetTableColumnTypes", "Скачивает zip архив с содержимым указанного каталога": "Downloads a zip archive with the contents of the specified directory", "Идентификатор доставки из метода ПолучитьУведомление": "Receipt identifier from the GetNotification method", -"Основное измерение при заполнении диапазона массивом": "Main dimension when filling the array range", -"Ошибка получения авторизационных данных из структуры": "Error of obtaining authorization data from the structure", -"УстановитьСтроковоеТело: тело установлено, размер %1": "SetStringBody: body set, size %1", -"Название города, уточняющий параметр для postal_code": "City name, specifying parameter for postal_code", -"включение автоприменения акций: ENABLED или DISABLED": "Enable auto application of shares: ENABLED or DISABLED", -"Информация о заказе](@api-docs.cdek.ru/29923975.html": "Order details](@api-docs.cdek.ru/33828849.html", "Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей": "Filters array. See GetRecordsFilterStrucutre", +"Информация о заказе](@api-docs.cdek.ru/29923975.html": "Order details](@api-docs.cdek.ru/33828849.html", +"Ошибка получения авторизационных данных из структуры": "Error of obtaining authorization data from the structure", +"Название города, уточняющий параметр для postal_code": "City name, specifying parameter for postal_code", "Информация о заявке](@api-docs.cdek.ru/29948360.html": "Details of a courier invitation(@api-docs.cdek.ru/33828865.html", +"включение автоприменения акций: ENABLED или DISABLED": "Enable auto application of shares: ENABLED or DISABLED", "Включение и отключение удаления MFA, если необходимо": "Enable and disable MFA deletion, if necessary", -"ID чата (chatXXX) или пользователя (XXX) для диалога": "Chat ID (as chatXXX) or User ID (as XXX)", -"Токен для получения данных конкретной версии объекта": "Token for retrieving data of a specific version of an object", +"Отправляет аудиофайл в качестве голосового сообщения": "Sends an audio file as a voice message", +"УстановитьСтроковоеТело: тело установлено, размер %1": "SetStringBody: body set, size %1", "Значение или массив значений для добавления в values": "Value or array of values to add to Values field", "Читает данные из указанного соединения в виде строки": "Reads data from the specified connection as a string", -"Отправляет аудиофайл в качестве голосового сообщения": "Sends an audio file as a voice message", "Обрабатывает данные TMA и опредеяет их достоверность": "Processes TMA data and determines its validity", "УстановитьСтроковоеТело: Тело установлено, размер %1": "SetStringBody: Body set, size %1", "Фильтр списка. См. ПолучитьСтруктуруФильтраСчетчиков": "List filter. See GetCounterFilterStructure", "Структура комплексного атрибута или структура товара": "Complex attribute structure or product structure", -"ДополнитьЗаголовки: установка заголовка ожидания gzip": "CompleteHeaders: setting the gzip header", -"УстановитьФайлОтвета: файл ответа не указан - пропуск": "SetResponseFile: response file not specified - skip", -"Авторизация клиентов](@api-docs.cdek.ru/29923918.html": "Client authorization](@api-docs.cdek.ru/33828799.html", -"Данные записей указываются как массив структур вида:^": "Record data is specified as an array of structures of the following type:^", -"Отправляет опрос с вариантами ответов в выбранный чат": "Sends a poll with answer choices to the selected chat room", -"Возвращает категории и типы для товаров в виде дерева": "Returns the categories and types for products in a tree view", -"Отправляет контакт с номером телефона в выбранный чат": "Sends a contact with a phone number to the selected chat room", +"Основное измерение при заполнении диапазона массивом": "Main dimension when filling the array range", +"ID чата (chatXXX) или пользователя (XXX) для диалога": "Chat ID (as chatXXX) or User ID (as XXX)", +"Токен для получения данных конкретной версии объекта": "Token for retrieving data of a specific version of an object", "Получает код авторизации для связи по номеру телефона": "Receives the authorization code for phone number linking", +"Отправляет контакт с номером телефона в выбранный чат": "Sends a contact with a phone number to the selected chat room", +"Возвращает категории и типы для товаров в виде дерева": "Returns the categories and types for products in a tree view", +"Отправляет опрос с вариантами ответов в выбранный чат": "Sends a poll with answer choices to the selected chat room", +"Отбор элементов (См. ПолучитьСтруктуруФильтраКаталога": "Items filter (see GetFolderFilterStructure", +"УстановитьФайлОтвета: файл ответа не указан - пропуск": "SetResponseFile: response file not specified - skip", +"ДополнитьЗаголовки: установка заголовка ожидания gzip": "CompleteHeaders: setting the gzip header", "Добавляет новые группы или пользователей в получатели": "Adds new groups or users to the recipients", +"Данные записей указываются как массив структур вида:^": "Record data is specified as an array of structures of the following type:^", "Определяет доступ к файлу для сторонних пользователей": "Defines access to the file for third-party users", -"значение не является путем к файлу или Base64 строкой": "value is not a file path or valid Base64 string", +"Возвращает список пользователей рабочего пространства": "Returns a list of workspace users", "Клиентские возвраты](@api-docs.cdek.ru/122762174.html": "Registration of refusal](@api-docs.cdek.ru/55327686.html", "Генерирует ссылку авторизации для перехода в браузере": "Generates an authorization link for browser transition", "флаг оповещения о подтверждении или отказе участников": "flag for notification of confirmation or cancellation of participants", "Отправляет контакт с номером телефона в чат или канал": "Sends a contact with a phone number to a chat or channel", "Получает информацию о стадиях Канбана или Моего плана": "Get kanban (My Plan) stages info", -"Не удалось загрузить часть файла! Отмена загрузки ID:": "Failed to upload part of the file! Abort upload wiht ID:", -"Ключ > имя файла, значение > путь или двоичные данные": "Key > file name, value > path or binary data", -"Возвращает список пользователей рабочего пространства": "Returns a list of workspace users", "Завершает все соединения к базе данных кроме текущего": "Terminates all connections to the database except the current one", +"Ключ > имя файла, значение > путь или двоичные данные": "Key > file name, value > path or binary data", "УстановитьДвоичноеТело: Передано пустое тело, пропуск": "SetBinaryBody: Passed an empty body, skip", -"Отбор элементов (См. ПолучитьСтруктуруФильтраКаталога": "Items filter (see GetFolderFilterStructure", -"Строка подключения. См. СформироватьСтрокуПодключения": "Connection string. See GenerateConnectionString", -"Получает токен авторизации по данным service аккаунта": "Gets authorization token by service account data", -"Определяет доступ к файлу для стороннего пользователя": "Defines access to the file for an external user", -"Мировая гигокорпорация Илона Маска, кстати, напоминаю": "The world gigacorporation of Elon Musk, by the way, a reminder", -"Производит выход текущего аккаунта из группового чата": "Logs the current account out of group chat", -"OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os": "OneScript: ./OInt/tests/Modules/internal/OPI_Tests.os", -"Получает структуру настроек для создания новой модели": "Gets the settings structure for creating a new model", -"Для работы с Twitter API необходимо перейти по адресу": "To work with the Twitter API, you need to go to the following address:", -"авторизоваться и ввести свои данные физ. или юр. лица": "authorize and enter your personal or company information", -"Получает статус добавления нового товара по ID задачи": "Gets the status of adding a new product by task ID", -"Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок": "Keyboard. See FormKeyboardFromButtonArray", -"Введите имя и выберите Application type - Desktop app": "Enter the name and choose Application type - Desktop app", +"значение не является путем к файлу или Base64 строкой": "value is not a file path or valid Base64 string", +"Авторизация клиентов](@api-docs.cdek.ru/29923918.html": "Client authorization](@api-docs.cdek.ru/33828799.html", +"Не удалось загрузить часть файла! Отмена загрузки ID:": "Failed to upload part of the file! Abort upload wiht ID:", +"Отправляет двоичные данные через указанное соединение": "Sends binary data over the specified connection", "Настройки модели. См. ПолучитьСтруктуруНастроекМодели": "Model settings. See GetModelSettingsStructure", +"Строка подключения. См. СформироватьСтрокуПодключения": "Connection string. See GenerateConnectionString", +"Получает статус добавления нового товара по ID задачи": "Gets the status of adding a new product by task ID", +"авторизоваться и ввести свои данные физ. или юр. лица": "authorize and enter your personal or company information", +"Получает структуру настроек для создания новой модели": "Gets the settings structure for creating a new model", +"Определяет доступ к файлу для стороннего пользователя": "Defines access to the file for an external user", +"Производит выход текущего аккаунта из группового чата": "Logs the current account out of group chat", +"Мировая гигокорпорация Илона Маска, кстати, напоминаю": "The world gigacorporation of Elon Musk, by the way, a reminder", +"Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок": "Keyboard. See FormKeyboardFromButtonArray", +"OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os": "OneScript: ./OInt/tests/Modules/internal/OPI_Tests.os", +"Введите имя и выберите Application type - Desktop app": "Enter the name and choose Application type - Desktop app", +"Для работы с Twitter API необходимо перейти по адресу": "To work with the Twitter API, you need to go to the following address:", "Удаляет файл или несколько файлов с сервера Neocities": "Deletes a file or multiple files from Neocities", "Получает информацию о записи трудозатрат задачи по ID": "Get time accounting record data", "начальный (верхний) цвет информера в формате RRGGBBAA": "initial (top) color of the informer in RRGGBBAA format", "Отображаемое имя файла c расширением, если необходимо": "Custom displayed file name with extension, if necessary", "часовой пояс начала (по умолчанию - ч.п. пользователя": "start time zone (default - t.z. of the user)", -"Отправляет двоичные данные через указанное соединение": "Sends binary data over the specified connection", -"В одном запросе можно передать до 500 идентификаторов": "Up to 500 identifiers can be passed in one request", -"Указанное значение не является подходящей коллекцией!": "The specified value is not a valid collection!", "Ошибка работы с криптографией: неподдерживаемый метод": "Cryptography processing error: unsupported method", +"В одном запросе можно передать до 500 идентификаторов": "Up to 500 identifiers can be passed in one request", +"Получает токен авторизации по данным service аккаунта": "Gets authorization token by service account data", +"Указанное значение не является подходящей коллекцией!": "The specified value is not a valid collection!", +"УстановитьДвоичноеТело: передано пустое тело - пропуск": "SetBinaryBody: an empty body has been passed - skip", "флаг разрешения участникам приглашать других в событие": "flag to allow participants to invite others to the event", "!OInt ЭтоОтладка = ПолучитьПеременнуюСреды(\"OINT_DEBUG": "!OInt IsDebug = GetEnvironmentVariable(\"OINT_DEBUG", "Перезаписывать если файл с таким именем уже существует": "Overwrite if a file with the same name already exists", -"ID аккаунта. Текущий аккаунт токена, если не заполнено": "Account ID. Current token account if not filled", "ID стадии, после которой необходимо вставить выбранную": "Stage ID, after which the selected stage should be inserted", "Отправка тестового запроса через клиентские методы TCP": "Sending a test request via TCP client methods", "Изменяет имя и|или описание существующего поля таблицы": "Changes the name and/or description of an existing table field", -"Создает новую заявку на вызов курьера для забора груза": "Creates a new request to call a courier to pick up a shipment", +"Признак использования только своих изображений товаров": "A flag of using only your own product images", "количество месяцев для синхронизации в прошлом периоде": "number of months to synchronise in the past period", "Перемещает объект по заданному пути и пути к оригиналу": "Moves the object to the specified path and path to the original", -"Признак использования только своих изображений товаров": "A flag of using only your own product images", "Получить структуру пользовательских настроек каледнаря": "Get calednar custom settings structure", "Получает список внешних файлов пользователя или канала": "Gets a list of external files of a user or channel", "Удаленный каталог приемника. Корень, если не заполнено": "Remote receiver catalog. Root by default", -"Данные пользователя. См. ПолучитьСтурктуруПользователя": "New user data. See. GetUserFieldsStructure", "Получает информацию о характеристиках объекта в бакете": "Receives information about the properties of the object in the baquette", -"УстановитьДвоичноеТело: передано пустое тело - пропуск": "SetBinaryBody: an empty body has been passed - skip", +"Создает новую заявку на вызов курьера для забора груза": "Creates a new request to call a courier to pick up a shipment", +"ID аккаунта. Текущий аккаунт токена, если не заполнено": "Account ID. Current token account if not filled", +"Данные пользователя. См. ПолучитьСтурктуруПользователя": "New user data. See. GetUserFieldsStructure", +"Максимальный размер данных (байт). 0 > без ограничений": "Maximum data size (bytes). 0 > no limit", +"Регистрация преалерта](@api-docs.cdek.ru/78934763.html": "Registration of Prealert document](@api-docs.cdek.ru/78935159.html", "Группирует товары на основе одинаковых наборов свойств": "Groups products based on similar sets of properties", -"Количество элементов, которое будет пропущено в ответе": "Offset of the result items", "Отправляет ранее загруженное голосовое сообщение по ID": "Sends a previously uploaded voice message by ID", "Вид разметки для текста сообщения: MarkdownV2 или HTML": "Markup type for message text: MarkdownV2 or HTML", "Информация об ошибке или неопределено, если ошибки нет": "Error information or undefined if there is no error", -"Получает информацию об объекте диска по заданному пути": "Gets information about a disk object at the specified path", "Как CLI приложение для Windows и Linux (exe, rpm, deb)": "As a CLI application for Windows and Linux (exe, rpm, deb)", "Добавляет существующий календарь в список пользователя": "Adds an existing calendar to the user's list", "Идентификатор точки отгрузки для CREATE_TYPE_CROSSDOCK": "Shipping point identifier for CREATE_TYPE_CROSSDOCK", -"Регистрация преалерта](@api-docs.cdek.ru/78934763.html": "Registration of Prealert document](@api-docs.cdek.ru/78935159.html", +"Получает информацию об объекте диска по заданному пути": "Gets information about a disk object at the specified path", "Подключает расширение SQLite для указанного соединения": "Connects the SQLite extension for the specified connection", "Доп. параметры. См. ПолучитьСтруктуруПараметровЗапроса": "Additional parameters. See GetRequestParametersStructure", -"Получает список доступных счетчиков с фильтром или без": "Gets a list of available counters with or without filtering", "количество месяцев для синхронизации в будущем периоде": "number of months to synchronise in the future period", "Файлы для загрузки: Ключ > путь на NC, Значение > Файл": "Files: Key > destination path on NC, Value > file", "Получает структуру с описанием полей для создания лида": "Gets a structure with field descriptions for creating a lead", -"Максимальный размер данных (байт). 0 > без ограничений": "Maximum data size (bytes). 0 > no limit", -"бесконечное получение данных может привести к зависанию": "endless data retrieval can cause hang-ups", +"Количество элементов, которое будет пропущено в ответе": "Offset of the result items", +"Получает список доступных счетчиков с фильтром или без": "Gets a list of available counters with or without filtering", +"Добавляет или обновляет информацию о товарах в каталоге": "Adds or updates product information in the catalogue", "Получает список активных отправлений с фильтром или без": "Gets a list of active shipments with or without filtering", "имя существующей модели, из которой будет создана новая": "the name of the existing model from which the new model will be created", "Объект коннектора или структура с информацией об ошибке": "Connector object or structure with error information", -"Описание события. См. ПолучитьСтруктуруСобытияКалендаря": "Event description. See GetCalendarEventsStructure", "Блок как соответствие. С ним можно свершать манипуляции": "Block as map. Can be changed", "Разблокирует ранее заблокированного пользователя в чате": "Unblocks a previously blocked user in the chat room", -"Добавляет или обновляет информацию о товарах в каталоге": "Adds or updates product information in the catalogue", +"ОбработкаОбъект.OPI_HTTPКлиент, HTTPОтвет, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPResponse, Undefined", "список имен файлов или SHA256 блобов для LORA адаптеров": "list of file names or SHA256 blobs for LORA adapters", -"ID последнего значения (last_id) из предыдущего запроса": "ID of the last value (last_id) from the previous response", "Идентификатор файла или каталога размещения комментария": "Identifier of the file or directory where the comment is located", "Инициализирует запись данных в тело в формате multipart": "Initializes writing data to the body in multipart format", "идентификатор автора перемещения лида на текущую стадию": "identifier of the author of moving the lead to the current stage", "Создает отказ по заказу для возврата в интернет магазин": "Creates an order refusal to return to the online store", "ID файла, загруженного при помощи ЗагрузитьФайлВКаталог": "File ID from UploadFileToFolder method", "цвет фона события. Cимвол # - в формате unicode как %23": "event background colour. Symbol # - in unicode format as %23", +"бесконечное получение данных может привести к зависанию": "endless data retrieval can cause hang-ups", +"ID последнего значения (last_id) из предыдущего запроса": "ID of the last value (last_id) from the previous response", "Включение и отключение версионирования, если необходимо": "Enable and disable versioning, if necessary", -"ОбработкаОбъект.OPI_HTTPКлиент, HTTPОтвет, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPResponse, Undefined", +"Получает структуру с описанем полей для создания задачи": "Gets a structure with a description of the fields for creating a task", "идентификатор организатора события. Если is_meeting = Y": "The identifier of the event organiser. If is_meeting = Y", -"ДобавитьЗаголовокOAuthV1: начало формирования заголовка": "AddOAuthV1Header: signature creation", +"Тип поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT": "Supply type: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT", "Максимальное время ожидания подключений. 0 > бесконечно": "Maximum waiting time for connections. 0 > unlimited", "Отправляет данные клиенту по идентификатору подключения": "Sends data to the client by connection ID", "Дата окончания жизни ссылки (безсрочно, если не указано": "Link expiration date (permanent if not specified", -"Получает структуру с описанем полей для создания задачи": "Gets a structure with a description of the fields for creating a task", "Код активации привязывается к карточке цифрового товара": "The activation code is linked to the digital product card", -"Тип поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT": "Supply type: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT", "ДвойныеКавычки, ЭкранированиеСимволовJSON[Экранирование": "DoubleQuotes, JSONCharactersEscapeMode[Escaping", -"Перезаписывать, если файл с таким именем уже существует": "Overwrite if a file with the same name already exists", -"доступность на время события: busy, absent, quest, free": "availability at the time of the event: busy, absent, quest, free", +"Предоставляет стороннии пользователям доступ к каталогу": "Grants external users access to the directory", +"Описание события. См. ПолучитьСтруктуруСобытияКалендаря": "Event description. See GetCalendarEventsStructure", "Получает список всех версий объектов в выбранном бакете": "Gets a list of all versions of objects in the selected bucket", "и выбор конкретного проекта из списка (значек c ключем)": "and chosing of project from list (key icon)", "ID пользователя. Ответ на все заявки, если не заполнено": "User ID. For all active requests if not filled in", "Устанавливает настройки версионирования объектов бакета": "Sets the versioning settings for bucket objects", "Информация о преалерте](@api-docs.cdek.ru/78934799.html": "Details of prealert document](@api-docs.cdek.ru/78935281.html", -"Предоставляет стороннии пользователям доступ к каталогу": "Grants external users access to the directory", +"ДобавитьЗаголовокOAuthV1: начало формирования заголовка": "AddOAuthV1Header: signature creation", +"Перезаписывать, если файл с таким именем уже существует": "Overwrite if a file with the same name already exists", +"доступность на время события: busy, absent, quest, free": "availability at the time of the event: busy, absent, quest, free", +"Получает структуру с описанием полей для создания сделки": "Gets a structure with field descriptions for creating a deal", "Получает информацию о товарах по массиву идентификаторов": "Gets information about products by an array of identifiers", -"Удаляет уведомление из очерели после успешного получения": "Deletes the notification from the queue after successful receipt", +"Как XML файлы расширения для загрузки через конфигуратор": "As XML extension files for loading via the configurator", "Устанавливает новые пользовательские настройки календаря": "Sets new custom calendar settings", "Нажмите **Create App** и выберите пункт **From scratch**": "Click **Create App** and choose **From scratch**", "Получает описание контакта для функции ОтправитьКонстакт": "Gets the contact description for the SendContact function", "Очищает все добавленные ранее заголовки перед установкой": "Clears all previously added headers before setting", -"Получает информацию об опубликованном объекте по его URL": "Gets information about the published object by its URL", -"Получает структуру с описанием полей для создания сделки": "Gets a structure with field descriptions for creating a deal", "Получает представления (embeddings) для заданных вводных": "Gets the embeddings for the given entries", "Типы поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT": "Supply types: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT", "Получает количество товаров в остатке с фильтром или без": "Gets the number of items in the balance with or without filtering", @@ -8811,200 +8810,201 @@ "Количество возвращаемых вложенных объектов (для каталога": "Number of returned nested objects (for catalog", "часовой пояс окончания (по умолчанию - ч.п. пользователя": "end time zone (default - t.z. of the user)", "Возможно, она не подходит для вашей операционной системы": "It may not be compatible with your OS", +"Удаляет уведомление из очерели после успешного получения": "Deletes the notification from the queue after successful receipt", +"Получает информацию об опубликованном объекте по его URL": "Gets information about the published object by its URL", "Получает статус асинхронной работы по изменению доступов": "Get async job status for access changes", -"Как XML файлы расширения для загрузки через конфигуратор": "As XML extension files for loading via the configurator", -"Нажимайте далее и Save and continue на последней вкладке": "Click on Next and then Save and continue on the last tab", -"Загружает коды активации для цифрового товара или услуги": "Uploads activation codes for a digital product or service", +"ДобавитьЗаголовокOAuthV1: создание заголовка авторизации": "AddOAuthV1Header: authorization header creation", "Удаляет стадию канбана, при условии, что в ней нет задач": "Removes a kanban stage, provided there are no tasks in it", +"Истина > Directory Bucket, Ложь > General Purpose Bucket": "True > Directory Bucket, False > General Purpose Bucket", +"Нажимайте далее и Save and continue на последней вкладке": "Click on Next and then Save and continue on the last tab", "Изменяет значение варианта существующего свойства товара": "Edits the value of an existing product property variant", "период экспорта: all, 3_9 (пример: 3 месяца до и 9 после": "export period: all, 3_9 (example: 3 months before and 9 after", "Добавляет дополнительные поля информации для медиафайлов": "Add information fields for mediafiles", "Ошибка: Не удалось удалить временный файл при исключении": "Error: Failed to delete a temporary file on exception", -"ОбработкаОбъект.OPI_HTTPКлиент, HTTPЗапрос, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPRequest, Undefined", -"Истина > Directory Bucket, Ложь > General Purpose Bucket": "True > Directory Bucket, False > General Purpose Bucket", "Отправляет сообщение, которое приходит в канал, но видно": "Sends a message that arrives in the channel but is visible", -"ДобавитьЗаголовокOAuthV1: создание заголовка авторизации": "AddOAuthV1Header: authorization header creation", -"Получает прямую ссылку для скачивания публичного объекта": "Gets a direct link to download the public object", +"Признак использования полей тела в расчете подписи OAuth": "Flag to use body fields in OAuth signature calculation", +"ОбработкаОбъект.OPI_HTTPКлиент, HTTPЗапрос, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPRequest, Undefined", "Здесь собрано определение данных, необходимых для работы": "The definition of the data required for the work is collected here", "Создает дочернюю страницу над другой страницей-родителем": "Creates a child page above another parent page", "Возвращает тело ответа как коллекцию, полученную из JSON": "Returns the response body as a collection from JSON", "OneScript: ./OInt/tests/Modules/internal/OPI_ТестыCLI.os": "OneScript: ./OInt/tests/Modules/internal/OPI_TestsCLI.os", "Полчает список комментариев пользователей к задаче по ID": "Get user comments list for a task", "Соответствие данных с результатом проверки в поле passed": "Map of data with the result of verification in the passed field", -"Признак использования полей тела в расчете подписи OAuth": "Flag to use body fields in OAuth signature calculation", -"ВызватьМетод: запрос не был сформирован перед выполнением": "ExecuteMethod: the request was not generated before execution", +"Загружает коды активации для цифрового товара или услуги": "Uploads activation codes for a digital product or service", +"Получает прямую ссылку для скачивания публичного объекта": "Gets a direct link to download the public object", +"Создает новую тему в группе с включенным функционалом тем": "Creates a new thread in the group with theme functionality enabled", "Получает список рабочих областей, в которых подключен бот": "Gets a list of workspaces where the bot is connected", "Идентификатор сообщения. Все сообщения, если не заполнено": "Message ID. All messages, if not filled in", -"OPI_ПолучениеДанныхТестов.Проверка_ОзонКартинки(Результат": "OPI_TestDataRetrieval.Check_OzonPictures(Result", -"Создает новую тему в группе с включенным функционалом тем": "Creates a new thread in the group with theme functionality enabled", -"Получить доступные таймслоты на конечных складах отгрузки": "Get available timeslots at the final supply warehouses", "ДобавитьФайлRelated: не инициализирована запись Multipart": "AddFileAsRelated: multipart record not initialized", +"OPI_ПолучениеДанныхТестов.Проверка_ОзонКартинки(Результат": "OPI_TestDataRetrieval.Check_OzonPictures(Result", +"Получить доступные таймслоты на конечных складах отгрузки": "Get available timeslots at the final supply warehouses", +"ВызватьМетод: запрос не был сформирован перед выполнением": "ExecuteMethod: the request was not generated before execution", "Получает описание локации для отправки в ОтправитьЛокацию": "Gets the description of the location to send with SendLocation method", "Подпись в форме. Ключ: en или ru, Значение: Текст подписи": "Form label. Key: en or ru, Value: Lable text", "Структура отбора задач (см. ПолучитьСтруктуруФильтраЗадач": "Structure of task filter (see GetTaskFieldsStructure", -"идентификатор автора перемещения сделки на текущую стадию": "identifier of the author of moving the deal to the current stage", "Получает макет для создания заказа в функции СоздатьЗаказ": "Gets the layout of order for the CreateOrder function", "Удаляет публичный URL у файла. Требует токен пользователя": "Removes the public URL from the file. Requires user token", "передайте Истина, чтобы добавить в ответ данные аналитики": "pass True to add analytics data to the response", -"Идентификатор объекта, для которого необходим комментарий": "Identifier of the object that needs a comment", "получать уведомления о статусах входящего звонка: yes, no": "receive notifications about incoming call statuses: yes, no", +"Идентификатор объекта, для которого необходим комментарий": "Identifier of the object that needs a comment", +"цвет текста события. Cимвол # - в формате unicode как %23": "the colour of the event text. Symbol # - in unicode format as %23", "формат, в котором возвращается ответ: json или схема JSON": "the format in which the response is returned: json or JSON schema", -"Структура полей календаря (см. ПолучитьСтруктуруКалендаря": "Calendar fields structure (see GetCalendarStructure", +"Структура значений: Ключ > поле, Значение > значение поля": "Values structure: Key > field, Value > field value", "Оформляет клиентский возврат для заказа интернет магазина": "Processes customer returns for online store orders", "По умолчанию данные тела используются при расчете подписи": "By default, the body data is used in the signature calculation", +"Структура отбора лидов (см. ПолучитьСтруктуруФильтраЛидов": "Lead filter structure (see GetLeadFilterStructure", "ДобавитьФайлRelated: Не инициализирована запись Multipart": "AddFileAsRelated: Multipart record not initialized", -"Структура значений: Ключ > поле, Значение > значение поля": "Values structure: Key > field, Value > field value", "ПараметрыЗапросаВСтроку: Получение коллекции КлючЗначение": "RequestParametersToString: Retrieve collection KeyValue", -"Структура изменяемых полей. См. ПолучитьСтруктуруСчетчика": "Structure of fields to be changed. See GetCounterStructure", +"идентификатор автора перемещения сделки на текущую стадию": "identifier of the author of moving the deal to the current stage", "Получает токен на основе идентификатора аккаунта и пароля": "Gets a token based on account ID and password", "Добавляет стандартную авторизацю по пользователю и паролю": "Adds standard authorization by username and password", "Настройки инстанса. См. ПолучитьСтруктуруНастроекИнстанса": "Instance settings. See GetInstanceSettingsStructure", -"цвет текста события. Cимвол # - в формате unicode как %23": "the colour of the event text. Symbol # - in unicode format as %23", "Параметры соединения. См. СформироватьПараметрыСоединения": "Connection parameters. See FormConnectionParameters", "Получает шаблон структуры для установки настроек инстанса": "Gets the structure template for instance settings", -"Структура отбора лидов (см. ПолучитьСтруктуруФильтраЛидов": "Lead filter structure (see GetLeadFilterStructure", +"Структура изменяемых полей. См. ПолучитьСтруктуруСчетчика": "Structure of fields to be changed. See GetCounterStructure", +"Структура полей календаря (см. ПолучитьСтруктуруКалендаря": "Calendar fields structure (see GetCalendarStructure", +"Создает копию объекта по заданному пути и пути к оригиналу": "Creates a copy of the object at the specified path and path to the original", +"Устанавливает тело запроса из строки в указанной кодировке": "Sets the request body from a string in the specified encoding", "Статус участия: Y (согласен), N (отказался), Q (не ответил": "Participation status: Y (agreed), N (refused), Q (did not answer", "Наличие соединения в пуле не гарантирует его активности.^^": "The presence of a connection in the pool does not guarantee that it is active.^^", "app_id - ID приложения. Для создания приложения необходимо": "app_id - Application ID. To create an application, you need to", -"ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями": "Upload ID. See InitPartsUpload", "OPI_ПолучениеДанныхТестов.Проверка_ОзонБезОшибок(Результат": "OPI_TestDataRetrieval.Check_OzonNoErrors(Result", -"Отправляет данные в виде строки через указанное соединение": "Sends data as a string over the specified connection", -"SELECT (Результат этого запроса приведен в следующем блоке": "SELECT (The result of this query is shown in the Result block", -"OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат": "OPI_TestDataRetrieval.Check_OzonTimeslots(Result", "Структура отбора (см. ПолучитьСтруктуруФильтраКомментариев": "Comments filter structure (see GetCommentsFilterStructure", +"ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями": "Upload ID. See InitPartsUpload", +"OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат": "OPI_TestDataRetrieval.Check_OzonTimeslots(Result", "Получает описания характеристик товаров с фильтром или без": "Retrieves product attributes descriptions with or without filtering", "Структура с идентификатором нового подключения или ошибкой": "Structure with new connection ID or error information", "История сообщений. См. ПолучитьСтруктуруСообщенияКонтекста": "Messages log. See GetContextMessageStructure", -"Создает копию объекта по заданному пути и пути к оригиналу": "Creates a copy of the object at the specified path and path to the original", -"Устанавливает тело запроса из строки в указанной кодировке": "Sets the request body from a string in the specified encoding", "Загружает фото на сервер для его дальнейшего использования": "Uploads photo to server for further use", +"Отправляет данные в виде строки через указанное соединение": "Sends data as a string over the specified connection", +"SELECT (Результат этого запроса приведен в следующем блоке": "SELECT (The result of this query is shown in the Result block", +"передайте Истина, чтобы добавить в ответ финансовые данные": "pass True to add financial data to the response", "Сортировка: Ключ > поле, Значение > направление (ASC, DESC": "Sorting: Key > field name, Value > direction (ASC, DESC", +"или неявного, при передаче строки подключения в методы ORM": "or implicit, when passing the connection string to ORM methods", "TCP сервер или пустое значение при обособленной обоработке": "TCP server or empty value for standalone processing", "OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os": "OneScript: ./OInt/tools/Modules/OPI_TypeConversion.os", "Запрещает редактирование файла для стороннего пользователя": "Prohibits file editing for the external user", -"По умлчанию ответ от сервера запрашивается со сжатием gzip": "By default, the response from the server is requested with gzip compression", "ПолучитьСтруктуруПользовательскихНастроекКаледнаря (пустая": "GetCalednarCustomSettingsStructure", "Получает структуру стандартных полей для создания счетчика": "Gets the structure of standard fields for counter creation", -"или неявного, при передаче строки подключения в методы ORM": "or implicit, when passing the connection string to ORM methods", +"По умлчанию ответ от сервера запрашивается со сжатием gzip": "By default, the response from the server is requested with gzip compression", "OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат": "OPI_TestDataRetrieval.Check_BitrixString(Result", "Массив кодов стран в формате ISO_3166-1_alpha-2 для отбора": "Array of country codes in ISO_3166-1_alpha-2 format for selection", -"Получает массив событий пользователей в заданном интервале": "Gets an array of user events in the specified interval", "Константы.TwitterToken.Установить(ОтветТокен[\"access_token": "Constants.TwitterToken.Set(ResponseToken[\"access_token", "Получает ссылку на скачивание файла из входящего сообщения": "Gets a link to download a file from an incoming message", "Пересылает сообщение между чатами или в рамках одного чата": "Forwards a message between chats or within a chat", -"передайте Истина, чтобы добавить в ответ финансовые данные": "pass True to add financial data to the response", -"ДобавитьФайлMultipart: Не инициализирована запись Multipart": "AddMultipartFormDataFile: Multipart record not initialized", +"Получает массив событий пользователей в заданном интервале": "Gets an array of user events in the specified interval", +"Загружает объект на сервер не используюя загрузку по частям": "Upload object with single request", "ДобавитьПолеMultipart: Не инициализирована запись Multipart": "AddMultipartFormDataField: Multipart record not initialized", "ДобавитьПолеMultipart: не инициализирована запись Multipart": "AddMultipartField: multipart record not initialized", -"Возвращает основные данные запроса в структурированном виде": "Returns the basic data for request in structured form", "Двоичные данные при успехе или структура с описанием ошибки": "Binary data on success or structure with error description", -"Загружает объект на сервер не используюя загрузку по частям": "Upload object with single request", +"Истина > служебные поля удаляются, остается только сам блок": "True > service fields are deleted, only the block itself remains", "Получает статус участия в событии для текущего пользователя": "Gets the event participation status of the current user", "Получает PDF или HTML превью объекта (только для токументов": "Gets PDF or HTML preview of the object (for documents only", "Описание договоренности. См. ПолучитьОписаниеДоговоренности": "Appointment description. See GetAppointmentDescription", -"Тип календаря: user, group, company_calendar, location и др": "Calendar type: user, group, company_calendar, location, etc", "Переданное значение не является валидной схемой SQL запроса": "The value passed is not a valid SQL query schema", "Имя модели должно быть в формате /:^": "The model name must follow the format /:^", "Массив или одна сокращенная структура полей описания товара": "Array or one simplified structure of product fields", "Созданного вами бота теперь можно применить двумя способами": "The bot you created can now be used in two ways", +"ДобавитьФайлMultipart: Не инициализирована запись Multipart": "AddMultipartFormDataFile: Multipart record not initialized", +"Возвращает основные данные запроса в структурированном виде": "Returns the basic data for request in structured form", "Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров": "Product selection filter. See GetProductsFilterStructure", -"Истина > служебные поля удаляются, остается только сам блок": "True > service fields are deleted, only the block itself remains", +"Тип календаря: user, group, company_calendar, location и др": "Calendar type: user, group, company_calendar, location, etc", "В данных service аккаунта отсутствуют обязательные поля: %1": "There are no required fields in the service account data: %1", -"ДобавитьФайлMultipart: не инициализирована запись Multipart": "AddMultipartFile: Multipart record not initialized", +"дата окончания выборки. 3 месяца после текущей по умолчанию": "selection end date. 3 months after the current default", "Для начала работы необходимо получить токен доступа к диску": "To start working, you need to obtain an access token for the disk", "Вы можете переопределять их, передавая в качестве параметра": "You can override them by passing them as a parameter", -"Признак отключения автоматического определения Content-Type": "Flag to disable automatic Content-Type detection", "Структура отбора сделок (см. ПолучитьСтруктуруФильтраСделок": "Deals filter structure (see. GetDealsFilterStructure", -"дата окончания выборки. 3 месяца после текущей по умолчанию": "selection end date. 3 months after the current default", -"уже добавлена ранее, повторное добавление является ошибкой!": "has already been added before, adding it again is an error!", -"ДополнитьЗаголовки: формирование заголовка AWS4 авторизации": "CompleteHeaders: generating AWS4 Authorization Header", -"Фильтр отправлений. См. ПолучитьСтруктуруФильтраОтправлений": "Shipments filter. See GetShipmentsFilterStructure", "Код, полученный из авторизации См.ПолучитьСсылкуАвторизации": "Code obtained from authorization See GetAuthorizationLink", +"уже добавлена ранее, повторное добавление является ошибкой!": "has already been added before, adding it again is an error!", +"Создает публичный URL для файла. Требует токен пользователя": "Creates a public URL for the file. Requires user token", +"Признак отключения автоматического определения Content-Type": "Flag to disable automatic Content-Type detection", "!OInt Сообщить(\"Ошибка загрузки участка \" + Строка(Н) + \"/3": "!OInt Message(\"Chunk upload error \" + String(N) + \"/3", "По умлчанию multipart поля используются при расчете подписи": "Multipart fields are used for signature calculation by default", "Получает установленную ранее конфигурацию шифрования бакета": "Gets the previously set bucket encryption configuration", "Перейдите **[в раздел интеграций портала для разработчиков]": "Go to the **[section of integrations of the developer portal]", -"Создает публичный URL для файла. Требует токен пользователя": "Creates a public URL for the file. Requires user token", +"ДобавитьФайлMultipart: не инициализирована запись Multipart": "AddMultipartFile: Multipart record not initialized", +"ДополнитьЗаголовки: формирование заголовка AWS4 авторизации": "CompleteHeaders: generating AWS4 Authorization Header", +"Фильтр отправлений. См. ПолучитьСтруктуруФильтраОтправлений": "Shipments filter. See GetShipmentsFilterStructure", +"механизм загрузки файлов и некоторые другие из старой версии": "file upload mechanism and some others from the old version", +"Название района региона, уточняющий параметр для поля region": "Name of the region's district, specifying parameter for the region field", +"OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os": "OneScript: ./OInt/tools/Modules/OPI_TestDataRetrieval.os", +"Получает заказ по номеру СДЭК или внутреннему номеру клиента": "Receives the order by CDEK number or number from customer IB", "Имя поля для получения. Выводит весь список, если не указано": "Field name to retrieve. Displays the entire list if not specified", "Доп. параметры. См. ПолучитьСтруктуруПараметровПредставлений": "Additional parameters. See GetEmbeddingsParameterStructure", -"Почтовый индекс города, для которого необходим список офисов": "Postal code of the city for which the list of offices is required", -"Получает заказ по номеру СДЭК или внутреннему номеру клиента": "Receives the order by CDEK number or number from customer IB", -"OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os": "OneScript: ./OInt/tools/Modules/OPI_TestDataRetrieval.os", -"Название района региона, уточняющий параметр для поля region": "Name of the region's district, specifying parameter for the region field", -"ОбработкаОбъект.OPI_HTTPКлиент, HTTPСоединение, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPConnection, Undefined", -"механизм загрузки файлов и некоторые другие из старой версии": "file upload mechanism and some others from the old version", -"Установка нового набора удаляет все существующие теги бакета": "Setting up a new set removes all existing bucket tags", "Отредактируйте товар, чтобы опубликовать в Маркете ВКонтакте": "Moderation", -"JSON данные также могут быть переданы как путь к файлу .json": "JSON data can also be passed as a path to a .json file", -"Получает значения настроек версионирования объектов в бакете": "Gets the values of versioning settings of objects in the bucket", -"Устанавливает путь к файлу для сохранения результата запроса": "Sets the file path to save the query result", -"Некорректный формат тегов. Ожидается коллекция ключ-значение": "Incorrect tags format. Key-value collection is expected", -"Список полей задачи в ответе. Все невычисляемые по умолчанию": "A list of task fields in the response. All non calculable by default", -"Формирует картинку для отправки в функции ОтправитьСообщение": "Make picture block for SendMessage method", +"Установка нового набора удаляет все существующие теги бакета": "Setting up a new set removes all existing bucket tags", +"Почтовый индекс города, для которого необходим список офисов": "Postal code of the city for which the list of offices is required", +"ОбработкаОбъект.OPI_HTTPКлиент, HTTPСоединение, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPConnection, Undefined", +"Основная структура полей товара. См. ПолучитьСтруктуруТовара": "The basic structure of the product fields. See GetProductStructure", "получать уведомления о входящих сообщениях и файлах: yes, no": "receive notifications of incoming messages and files: yes, no", +"Получает значения настроек версионирования объектов в бакете": "Gets the values of versioning settings of objects in the bucket", "Получение ШК места к заказу](@api-docs.cdek.ru/36967298.html": "Receiving barcode CP for the order](@api-docs.cdek.ru/36969722.html", "Переданные данные service аккаунта не являются валидным JSON": "The passed service account data is not valid JSON", -"Основная структура полей товара. См. ПолучитьСтруктуруТовара": "The basic structure of the product fields. See GetProductStructure", -"Признак удаления файла тела, если он был создан автоматически": "Flag to delete the body file if it was created automatically", -"Добавляет новое пользовательское поле для добавления в задачу": "Adds a new custom field to be added to the task", +"Формирует картинку для отправки в функции ОтправитьСообщение": "Make picture block for SendMessage method", +"Список полей задачи в ответе. Все невычисляемые по умолчанию": "A list of task fields in the response. All non calculable by default", +"Некорректный формат тегов. Ожидается коллекция ключ-значение": "Incorrect tags format. Key-value collection is expected", +"Устанавливает путь к файлу для сохранения результата запроса": "Sets the file path to save the query result", +"JSON данные также могут быть переданы как путь к файлу .json": "JSON data can also be passed as a path to a .json file", "Истина > добавление записей в транзакции с откатом при ошибке": "True > adding records to transactions with rollback on error", "Получает характеристики для указанной категории и типа товара": "Gets the characteristics for the specified category and product type", "Маркер конца сообщения для исключения ожидания конца таймаута": "End of message marker to avoid waiting for the end of timeout", -"Смещение для получение вложенных объектов не из начала списка": "Offset for getting nested objects not from the beginning of the list", -"учитывать посещения из регионов без доступ к ресурсам Яндекса": "take into account visits from regions without access to Yandex resources", +"Добавляет новое пользовательское поле для добавления в задачу": "Adds a new custom field to be added to the task", +"Изменяет свойства существующей стадии канбана или Моего плана": "Changes the properties of the existing kanban or My plan stage", "Константы.TwitterRefresh.Установить(ОтветТокен[\"refresh_token": "Constants.TwitterRefresh.Set(ResponseToken[\"refresh_token", "Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено": "String, Arbitrary, HTTPResponse, BinaryData, Undefined", +"Признак удаления файла тела, если он был создан автоматически": "Flag to delete the body file if it was created automatically", +"учитывать посещения из регионов без доступ к ресурсам Яндекса": "take into account visits from regions without access to Yandex resources", "Массив описаний остатков. См. ПолучитьСтруктуруОстатковТовара": "Array of stocks data. See GetProductStocksStructure", -"Изменяет свойства существующей стадии канбана или Моего плана": "Changes the properties of the existing kanban or My plan stage", +"ДополнитьЗаголовки: формирование заголовка Bearer авторизации": "CompleteHeaders: generating Bearer Authorization Header", "JSON данные также могут быть переданны как путь к файлу .json": "JSON data can also be passed as a path to a .json file", -"Открывает новый диалог с одним или несколькими пользователями": "Opens a new dialog with one or more users", "Установка нового набора удаляет все существующие теги объекта": "Setting up a new set removes all existing object tags", -"Указатель из предыдущего запроса, если строк результата > 100": "Pointer from the previous request, if the result rows > 100", "шаблон промпта (переопределяет то, что определено в Modelfile": "prompt template (overrides what is defined in Modelfile", "Иднтификатор следующей страницы данных из предыдущего запроса": "Next page identifier of data from the previous request", -"Фиксирует оговоренные с клиентом дату, время и адрес доставки": "Fixes the delivery date, time and address agreed with the customer", -"ДополнитьЗаголовки: формирование заголовка Bearer авторизации": "CompleteHeaders: generating Bearer Authorization Header", -"Получение квитанции к заказу](@api-docs.cdek.ru/36967287.html": "Receiving order receipt](@api-docs.cdek.ru/36969694.html", "Фильтр событий. См. ПолучитьСтруктуруФильтраСобытийКалендарей": "Events filter. See GetCalendarEventsFilterStructure", +"Указатель из предыдущего запроса, если строк результата > 100": "Pointer from the previous request, if the result rows > 100", +"Получение квитанции к заказу](@api-docs.cdek.ru/36967287.html": "Receiving order receipt](@api-docs.cdek.ru/36969694.html", +"Открывает новый диалог с одним или несколькими пользователями": "Opens a new dialog with one or more users", +"Фиксирует оговоренные с клиентом дату, время и адрес доставки": "Fixes the delivery date, time and address agreed with the customer", +"Смещение для получение вложенных объектов не из начала списка": "Offset for getting nested objects not from the beginning of the list", +"токен для доступа к вашему серверу уведомлений, если требуется": "a token to access your notification server, if required", "Ссылка на файл с ШК местом к заказам доступна в течение 1 часа": "The link to the file with the barcode CP is available within 1 hour", "Получает структуру цены товара для функции ОбновитьЦеныТоваров": "Gets the product price structure for the UpdateProductsPrices function", "Отступ от начала списка для полчения задач > 50 шт. рекурсивно": "Offset of tasks list", "Отмечает все сообщения во всех доступных чатах как прочитанные": "Mark all message as readed", "Выполняет запрос, если он был сформирован или установлен ранее": "Executes the request if it has been generated or set previously", -"токен для доступа к вашему серверу уведомлений, если требуется": "a token to access your notification server, if required", -"передать значение даты без времени в параметрах from и to: Y,N": "pass date value without time in from and to parameters: Y,N", "Для вызова этого метода бот должен быть администратором в чате": "To call this method, the bot must be an administrator in the chat room", -"Возвращает ответ пользователю при нажатии на кнопку клавиатуры": "Returns a response to the user when a keyboard button is pressed", -"Токен бота чата сообщества, котрый можно получить в настройках": "Community chat bot token, which can be obtained in the settings", +"передать значение даты без времени в параметрах from и to: Y,N": "pass date value without time in from and to parameters: Y,N", +"Загружает файл на облачный диск, получая его по указанному URL": "Uploads a file to the cloud drive by fetching it from the specified URL", "ID группы или пользователя владельца канбан. Свой по умолчанию": "ID of kanban owner (group or user)", "массив идентификаторов участников события. Если is_meeting = Y": "array of event participant IDs. If is_meeting = Y", "Формирует блок файла для отправки в функции ОтправитьСообщение": "Make file block for SendMessage method", "Получает статус добавления кодов цифрового товара по ID задачи": "Gets the status of digital item codes upload by task ID", "Блокирует выполнение программы до появления нового подключения": "Blocks programm execution until a new connection is established", -"Загружает файл на облачный диск, получая его по указанному URL": "Uploads a file to the cloud drive by fetching it from the specified URL", -"Создает запрос на основе введенных данных с выполнением или без": "Creates a request based on the entered data with or without execution", -"Восстанавливает состояние объекта к необходимой версии (ревизии": "Restores object state to required version (revision", +"Токен бота чата сообщества, котрый можно получить в настройках": "Community chat bot token, which can be obtained in the settings", +"Возвращает ответ пользователю при нажатии на кнопку клавиатуры": "Returns a response to the user when a keyboard button is pressed", +"Активирует или деактивирует (увольняет) выбранного пользователя": "Activates or deactivates (fire) the selected user", "Получение интервалов доставки](@api-docs.cdek.ru/154160502.html": "Getting delivery intervals (RU)](@api-docs.cdek.ru/154160502.html", "Требуется регистрация на ollama.ai и добавление открытого ключа": "Registration on ollama.ai and adding a public key is required", "Формирование ШК места к заказу](@api-docs.cdek.ru/36967295.html": "Creating barcode CP for the order](@api-docs.cdek.ru/36969713.html", -"Создает копию локального каталога по выбранному пути на сервере": "Creates a copy of the local directory at the selected path on the Neocities server", +"Получает статус пользователя или нескольких пользователей по ID": "Gets the status of a user or multiple users by ID", "Получает единый SKU по старым идентификаторам SKU FBS и SKU FBO": "Gets a single SKU from the old SKU FBS and SKU FBO identifiers", "Получает структуру шаблон для фильтрации записей в запросах ORM": "Gets the template structure for filtering records in ORM queries", -"Получает статус пользователя или нескольких пользователей по ID": "Gets the status of a user or multiple users by ID", "Создает новый лид по структуре полей (см. ПолучитьСтруктуруЛида": "Creates a new lead by fields structure (see GetLeadStructure", +"Создает запрос на основе введенных данных с выполнением или без": "Creates a request based on the entered data with or without execution", +"Восстанавливает состояние объекта к необходимой версии (ревизии": "Restores object state to required version (revision", "Структура колонок не является валидной структурой ключ-значение": "The column structure is not a valid key-value structure", -"Активирует или деактивирует (увольняет) выбранного пользователя": "Activates or deactivates (fire) the selected user", +"Тип кластера: CLUSTER_TYPE_OZON (Россия), CLUSTER_TYPE_CIS (СНГ": "Cluster type: CLUSTER_TYPE_OZON (Russia), CLUSTER_TYPE_CIS (CIS", "Создает соединение и читает данные до конца или по ограничениям": "Establishes a connection and reads data until completion or by limits", -"Игнорируем проверку целостности архива, просто читаем результат": "Ignore archive integrity check, just read the result", "Информация о паспортных данных](@api-docs.cdek.ru/55343091.html": "Passport data information](@api-docs.cdek.ru/55343134.html", -"JSON данные авторизации как файл, коллекция или двоичные данные": "JSON authorization data as a file, collection or binary data", +"Создает копию локального каталога по выбранному пути на сервере": "Creates a copy of the local directory at the selected path on the Neocities server", "Отступ от начала списка для получения лидов > 50 шт. рекурсивно": "Offset from the beginning of the list to get leads > 50 recursively", "Получает структуру полей фильтра для получения списка счетчиков": "Gets the structure of filter fields to get the list of counters", -"Ссылка на файл с квитанцией к заказам доступна в течение 1 часа": "A link to the receipt file for orders is available within 1 hour", -"Тип кластера: CLUSTER_TYPE_OZON (Россия), CLUSTER_TYPE_CIS (СНГ": "Cluster type: CLUSTER_TYPE_OZON (Russia), CLUSTER_TYPE_CIS (CIS", -"Преалерт должен быть предварительно создан. См. СоздатьПреалерт": "The prealert must be previously created. See CreatePrealert", "Получает список складов, сортировочных центров и пунктов выдачи": "Gets a list of warehouses, sorting centers and delivery points", +"JSON данные авторизации как файл, коллекция или двоичные данные": "JSON authorization data as a file, collection or binary data", +"Преалерт должен быть предварительно создан. См. СоздатьПреалерт": "The prealert must be previously created. See CreatePrealert", "Первая картинка в массиве картинок (поле images) будет основной": "The first image in the image array (images field) will be the main image", +"Игнорируем проверку целостности архива, просто читаем результат": "Ignore archive integrity check, just read the result", +"Ссылка на файл с квитанцией к заказам доступна в течение 1 часа": "A link to the receipt file for orders is available within 1 hour", "Вызывает исключение с логом, если во время обработки были ошибки": "Causes an exception with a log if there were errors during processing", "Добавляет информацию о затраченном времени пользователя в задачу": "Adds information about the user's time spent to the task", "Получает структуру фильтра для функции ПолучитьСобытияКалендарей": "Gets the filter structure for the function GetCalendarEvents", @@ -9012,9 +9012,9 @@ "содержимое объекта или путь к файлу, если указан путь сохранения": "object content or file path, if a save path is specified", "Позволяет получать стадии без проверки прав (для администраторов": "Allows you to get stages without checking permissions (for administrators", "Удаляет URL обработчика событий бота для работы в режиме Webhook": "Deletes the bot event handler URL for webhook operation", -"URL внешнего вебхука или адрес Bitrix24 при использовании токена": "URL of webhook or a Bitrix24 domain, when token used", -"P.S Далее часто упоминается \"страница настроек Twitter Developer": "P.S The following is often referred to as the \"Twitter Developer settings page", "Набор или массив наборов пар Ключ : Значение > Поле : Показатель": "Set or array of sets of pairs Key : Value > Field : FieldValue", +"P.S Далее часто упоминается \"страница настроек Twitter Developer": "P.S The following is often referred to as the \"Twitter Developer settings page", +"Цвет чата: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA": "Chat color: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA", "Массив ячеек вида А1 для получения (весь лист, если не заполнено": "Array of A1 type cells to get (whole sheet if not filled", "OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат": "OPI_TestDataRetrieval.Check_OzonUploadTask(Result", "OPI_ПолучениеДанныхТестов.Проверка_ОзонДобавлениеКодов(Результат": "OPI_TestDataRetrieval.Check_OzonCodesUpload(Result", @@ -9023,392 +9023,394 @@ "Получить объект запроса можно при помощи функции `ВернутьЗапрос`": "You can get the request object using the `ReturnRequest` function", "Получает массив сообщений, которые являются ответом на указанное": "Gets an array of messages that are replies to the specified", "Определяет, является ли переданное значение объектом TCP сервера": "Specifies if the value passed is a TCP server object", -"Цвет чата: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA": "Chat color: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA", +"URL внешнего вебхука или адрес Bitrix24 при использовании токена": "URL of webhook or a Bitrix24 domain, when token used", +"Метод + РазделительBat + СтрСоединить(МассивОпций, РазделительBat": "Method + BatSeparator + StrConcat(OptionsArray, BatSeparator", "Позволяет добавлять стадии без проверки прав (для администраторов": "Allows you to add stages without checking permissions (for administrators", "Сохраните **ClientID** и **Client secret** со страницы приложения": "Save **ClientID** and **ClientSecret** from the application page", "Проверяет, что значение является объектом внешней компоненты RCON": "Checks that the value is an object of an RCON AddIn", "Проверьте, что данные зависимости удоволетворены в вашей системе!": "Check that these dependencies are resolved on your system!", "Формирует настройки для использования TLS при выполнении запросов": "Forms settings for using TLS", "Получает список входящих сообщений инстанса за указанный интервал": "Gets the list of incoming messages of the instance for the specified period", -"Метод + РазделительBat + СтрСоединить(МассивОпций, РазделительBat": "Method + BatSeparator + StrConcat(OptionsArray, BatSeparator", -"После создания приложения можно заполнить необходимые данные в 1С": "After creating the application, you can fill in the necessary data in 1C", "Получает нвости или одну новость с отобором по ID или доступности": "Gen post or array of post with ID or rights selection", "Получает список файлов и каталогов, находящихся в корне хранилища": "Get a list of files and folders, located at the root of the storage", "Получает структурау полей для создания или изменения пользователя": "Gets the field structure for creating or modifying user information", "Клавиатура, если нужна, см. СформироватьКлавиатуруИзМассиваКнопок": "Keyboard, if needed, see CreateKeyboardFromArrayButton", "URL внешнего веб-хука или адрес Bitrix24 при использовании токена": "URL of webhook or a Bitrix24 domain, when token used", "Признак, что обязательная функция Инициализировать() была вызвана": "Flag indicating that the mandatory Initialize() function was called", +"После создания приложения можно заполнить необходимые данные в 1С": "After creating the application, you can fill in the necessary data in 1C", +"Проверяет, что значение является объектом внешней компоненты MySQL": "Checks that the value is an object of an MySQL AddIn", "и авторизуйтесь с вашим номером телефона, который привязан к Viber": "and authorize yourself with your phone number linked to Viber", "системное сообщение (переопределяет то, что определено в Modelfile": "system message (overrides what is defined in Modelfile", "ID стадии, после которой необходимо вставить новую (в начало по ум": "ID of the stage after which a new stage should be inserted (at the beginning by default", -"получать уведомления о сообщениях, отправленных через API: yes, no": "receive notifications about messages sent via API: yes, no", "Обрабатывает данные Telegram Mini App и опредеяет их достоверность": "Processes Telegram Mini App data and determines its validity", "Доп. сбор за доставку товаров, общая стоимость которых в интервале": "Additional fee for delivery of products, the total value of which is in the range", -"Проверяет, что значение является объектом внешней компоненты MySQL": "Checks that the value is an object of an MySQL AddIn", -"Получает список исходящих сообщений инстанса за указанный интервал": "Gets the list of outgoing messages of the instance for the specified period", +"Результат функции ПолучитьТокенПоКоду(), если перевести его в JSON": "Result of the function GetTokenByCode() if converted to JSON", +"получать уведомления о сообщениях, отправленных через API: yes, no": "receive notifications about messages sent via API: yes, no", "Получает структуру дополнительных параметров для обработки запроса": "Gets the structure of additional parameters for request processing", "OneScript: ./OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os": "OneScript: ./OInt/tools/Modules/internal/Classes/OPI_HTTPClient.os", -"Результат функции ПолучитьТокенПоКоду(), если перевести его в JSON": "Result of the function GetTokenByCode() if converted to JSON", "Тег уникальности Если уже существет, то другие увед. будут удалены": "Uniqueness Tag. If already exist, other notif. will be deleted", "Идентификатор следующей страницы списка баз из перыдудщего запроса": "Next page identifier of the base list from the previous request", "Включает попытку получения результата, даже для не SELECT запросов": "Includes an attempt to retrieve the result, even for nonSELECT queries", "OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); SKIP": "OPI_TestDataRetrieval.Check_BitrixString(Result); SKIP", +"Получает список исходящих сообщений инстанса за указанный интервал": "Gets the list of outgoing messages of the instance for the specified period", +"Подробнее о каждом варианте релиза в разделе [Про варианты релизов]": "For more details about each release variant, see the section [About Release Variants]", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьЛист": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteSheet", "Формирует блок с картинкой для добавления в массив блоков сообщения": "Generates a block with an image to add to the message block array", "ID пользователя. Для канала > администратора, для бота > получателя": "User ID. For channel > administrator, for bot > recipient", "Ограничение на ур. вложенности разбора. На всю глубину по умолчанию": "Parsing depth limit. Full depth by default", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьБлок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteBlock", -"Подробнее о каждом варианте релиза в разделе [Про варианты релизов]": "For more details about each release variant, see the section [About Release Variants]", -"Получает пользовательские настройки календаря текущего пользователя": "Gets the current users custom calendar settings", "Идентификатор владельца чата. Текущий пользователь, если не указано": "ID of chat owner. Current user by default", +"Создает новые или обновляет существующие товары по структурам полей": "Creates new products or updates existing products, based on data structures", +"Получает пользовательские настройки календаря текущего пользователя": "Gets the current users custom calendar settings", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СкачатьФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DownloadFile", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteFile", -"OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os": "OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Tools.os", "Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных": "Basic request data (with full URL). See GetBasicDataStructure", -"Создает новые или обновляет существующие товары по структурам полей": "Creates new products or updates existing products, based on data structures", -"Перейдите на вкладку **API**, сгенерируйте и сохранеите **API KEY**": "Click on the **API** tab, generate and save the **API KEY**", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьБлок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteBlock", +"OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os": "OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Tools.os", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьБазу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateDatabase", +"Проверяет, что значение является объектом внешней компоненты SQLite": "Checks that the value is an object of a SQLite AddIn", +"Метод + РазделительBash + СтрСоединить(МассивОпций, РазделительBash": "Method + BashSeparator + StrConcat(OptionsArray, BashSeparator", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьПоле": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateField", "Вид номера заказа. Истина > номер в базе клиента, Ложь > номер СДЭК": "Type of order number. True > number in the customer base, False > CDEK number", "Массив структур данных строк: Ключ > поле, Значение > значение поля": "An array of string data structures: Key > field, Value > field value", "получать уведомления о сообщениях, отправленных с телефона: yes, no": "receive notifications of messages sent from phone: yes, no", -"Проверяет, что значение является объектом внешней компоненты SQLite": "Checks that the value is an object of a SQLite AddIn", +"Перейдите на вкладку **API**, сгенерируйте и сохранеите **API KEY**": "Click on the **API** tab, generate and save the **API KEY**", "Включает или отключает стандартное кодирование спец. символов в URL": "Enables or disables standard encoding of special characters in URLs", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ВернутьБлок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ReturnBlock", -"Совпадающие поля будут перезаписаны с приоритетом параметра функции": "Matching fields will be overwritten with the parameter of the function", "OneScript: ./OInt/tools/Modules/internal/Classes/OPI_ЗапросыHTTP.os": "OneScript: ./OInt/tools/Modules/internal/Classes/OPI_HTTPRequests.os", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьБлок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateBlock", -"Метод + РазделительBash + СтрСоединить(МассивОпций, РазделительBash": "Method + BashSeparator + StrConcat(OptionsArray, BashSeparator", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьКнигу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateSpreadsheet", +"Совпадающие поля будут перезаписаны с приоритетом параметра функции": "Matching fields will be overwritten with the parameter of the function", "ДобавитьЗаголовокOAuthV1: добавление полей тела в строку для подписи": "AddOAuthV1Header: adding body fields to the signature string", "Отмечает выбранное сообщение и все сообщения до него как прочитанные": "Mark current and all previous messages as readed", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОбновитьФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UpdateFile", "на redirect_uri после авторизации через браузер есть всего 30 секунд": "on redirect_uri after authorization via the browser is only 30 seconds", "Для начала работы необходимо получить некоторые параметры для VK API": "To begin, you need to obtain certain parameters for the VK API", -"Штрихкод должен быть предварительно создан. См. СформироватьШтрихкод": "The barcode must be previously created. See CreateBarcode", -"Создает новую сделку по структуре полей (см. ПолучитьСтруктуруСделки": "Creates a new deal by field structure (see. GetDealStructure", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОбновитьФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UpdateFile", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьЛист": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddSheet", "Регистрация заявки на вызов курьера](@api-docs.cdek.ru/29925274.html": "Registration of a courier invitation](@api-docs.cdek.ru/33828859.html", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьКанал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateChannel", +"Штрихкод должен быть предварительно создан. См. СформироватьШтрихкод": "The barcode must be previously created. See CreateBarcode", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьКнигу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateSpreadsheet", +"Создает новую сделку по структуре полей (см. ПолучитьСтруктуруСделки": "Creates a new deal by field structure (see. GetDealStructure", "Если включена транслитерация адреса из кириллицы в латиницу > Истина": "If Cyrillic to Latin address transliteration is enabled > True", "Товар должен быть предварительно архивирован (см. АрхивироватьТовары": "The product must be pre-archived (see ArchiveProducts", "Полеучает токен на основе кода со страницы ПолучитьСсылкуАвторизации": "Gets token based on the code from the GetAuthorizationLink page", -"как долго модель будет оставаться загруженной в память после запроса": "how long the model will remain loaded in memory after a request", "Признак ошибки выполнения для пропуска оставшихся действий в цепочке": "Execution error flag to skip remaining actions in the chain", "Истина > использовать временный файл, Ложь > формирует тело в памяти": "True > use a temporary file, False > form a body in memory", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьТовар": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteProduct", -"Устанавливает тело в формате JSON из подходящей коллекции или строки": "Sets the body in JSON format from a suitable collection or string", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetFile", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьПапку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateFolder", "URL может быть установлен позднее при помощи функции `УстановитьURL`": "The URL can be set later using the `SetURL` function", -"Курсор из предыдущего запроса для получения следующего набора файлов": "Cursor from the previous request to get the next set of files", +"Устанавливает тело в формате JSON из подходящей коллекции или строки": "Sets the body in JSON format from a suitable collection or string", "Создает новую задачу по структуре полей (см. ПолучитьСтруктуруЗадачи": "Create new task by fields structure (see GetTaskFieldsStructure", "OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os": "OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Cryptography.os", +"как долго модель будет оставаться загруженной в память после запроса": "how long the model will remain loaded in memory after a request", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьПапку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateFolder", +"Курсор из предыдущего запроса для получения следующего набора файлов": "Cursor from the previous request to get the next set of files", +"Расширения: Ключ > путь или данные расширения, Значение > точка входа": "Extensions: Key > filepath or extension data, Value > entry point", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОбновитьТокен": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UpdateToken", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПокинутьКанал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"LeaveChannel", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьКанал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetChannel", -"Тип связи: 0 старт>старт, 1 старт>финиш, 2 финиш>старт, 3 финиш>финиш": "Link type: 0 start>start, 1 start>finish, 2 finish>start, 3 finish>finish", "Типы фильтрации: !, <, <=, >, >=. Например: !ID:3 (т.е. ID не равно 3": "Types of filtration: !, <, <=, >, >=. For example: !ID:3 (ID not equal to 3", -"Расширения: Ключ > путь или данные расширения, Значение > точка входа": "Extensions: Key > filepath or extension data, Value > entry point", +"Тип связи: 0 старт>старт, 1 старт>финиш, 2 финиш>старт, 3 финиш>финиш": "Link type: 0 start>start, 1 start>finish, 2 finish>start, 3 finish>finish", "Получает структуру сообщения для списка сообщений запроса в контексте": "Gets the message structure for a list of request messages in context", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьОбъект": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteObject", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendFile", "Проверяет доступность бакета для текущего аккаунта или аккаунта по ID": "Checks if the bucket is available for the current account or account by ID", "Устанавливает отметку Прочитано для сообщения или всех сообщений чата": "Sets the Read mark for a message or all chat messages", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьЗаписи": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateRecords", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьТовар": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditProduct", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОткрытьДиалог": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"OpenDialog", -"Существующее соединение или путь к базе. In memory, если не заполнено": "Existing connection or path to the base. In memory, if not filled", -"Возвращает структуру фильтров для метода ПолучитьСписокОтправленийFBO": "Returns the filter structure for the GetFBOShipmentsList method", -"Возвращает структуру полей для фильтрации дочерних элементов каталога": "Returns filter structure for child folder items", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьОбъект": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteObject", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьТовар": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditProduct", "Войдите в свой аккаунт и перейдите на страницу **Your Apps** на сайте": "Log in to your account and go to the **Your Apps** page on the website", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрытьДиалог": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CloseDialog", +"Существующее соединение или путь к базе. In memory, если не заполнено": "Existing connection or path to the base. In memory, if not filled", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьКанал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetChannel", "Результат функции ПреобразоватьКодВТокен(), если перевести его в JSON": "The result of the function ConvertCodeToToken(), if convert it to JSON", +"Возвращает структуру полей для фильтрации дочерних элементов каталога": "Returns filter structure for child folder items", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьТовар": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddProduct", -"список имен файлов или SHA256 блобов, из которых будет создана модель": "list of file names or SHA256 blobs from which the model will be created", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadFile", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьЗаписи": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteRecords", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрытьДиалог": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CloseDialog", "Загружает видео в группу с возможностью его дальнейшего использования": "Uploads video to the group for further use", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПоставитьЛайк": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"Like", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьТокен": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetToken", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьЗаписи": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteRecords", +"Возвращает структуру фильтров для метода ПолучитьСписокОтправленийFBO": "Returns the filter structure for the GetFBOShipmentsList method", +"список имен файлов или SHA256 блобов, из которых будет создана модель": "list of file names or SHA256 blobs from which the model will be created", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadFile", +"!OInt ВызватьИсключение(\"Не удалось получить информацию из json медиа!": "!OInt RaiseException(\"Failed to get information from json media!", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТаблицу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTable", "Значение, возвращаемое в событии нажатия. Только если не заполнено URL": "The value returned in the event. Only if the URL is not filled", -"Доступные типы параметров: Cтрока, Число, Дата, Булево, ДвоичныеДанные": "Available parameter types: String, Number, Date, Boolean, BinaryData", +"При использовании строки подключения инициализируется новое соединение": "When using the connection string, a new connection is initialised", "Список инструментов в формате JSON, которые модель должна использовать": "List of tools in JSON format that the model should use", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"КопироватьЛист": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CopySheet", -"!OInt ВызватьИсключение(\"Не удалось получить информацию из json медиа!": "!OInt RaiseException(\"Failed to get information from json media!", "Регистрация договоренности о доставке](@api-docs.cdek.ru/36981338.html": "Registration of delivery appointment](@api-docs.cdek.ru/36989576.html", -"При использовании строки подключения инициализируется новое соединение": "When using the connection string, a new connection is initialised", +"ДополнитьЗаголовкиАвторизации: формирование заголовка AWS4 авторизации": "CompleteAuthHeaders: generating AWS4 Authorization header", "Сохраните ID бота, получив его при помощи кнопки \"Показать моих ботов\"": "Save the bot ID by retrieving it using the \"Show My Bots\" button", "Получает очередной ответ от модели в соответствии с историей сообщений": "Receives the next response from the model according to the message history", "Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи": "The complete structure of the fields can be obtained by the GetTaskFieldsStructure() function", "ОПИ - пакет интеграций с популярными API для 1С:Enterprise и OneScript": "OpenIntegrations - integration tools for popular APIs", -"После заполнения данных полей можно приступать к работе с методами API": "After filling in the data fields, you can proceed to work with the API methods", -"ДополнитьЗаголовкиАвторизации: формирование заголовка AWS4 авторизации": "CompleteAuthHeaders: generating AWS4 Authorization header", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСобытие": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateEvent", "получать уведомления о факте того, что сообщение было удалено: yes, no": "receive notifications when a message has been deleted: yes, no", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТаблицу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTable", +"Доступные типы параметров: Cтрока, Число, Дата, Булево, ДвоичныеДанные": "Available parameter types: String, Number, Date, Boolean, BinaryData", +"После заполнения данных полей можно приступать к работе с методами API": "After filling in the data fields, you can proceed to work with the API methods", +"Полную структуру можно получить функцией ПолучитьСтурктуруПользователя": "The full structure can be obtained with the function GetUserFieldsStructure", +"Получает содержимое сообщения соединения из списка активных соединений": "Gets the contents of the connection message from the list of active connections", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ВступитьВКанал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"JoinChannel", -"Перейдите в раздел **Premission scope** из пункта установки приложения": "Go to **Premission scope** page", -"access_token нужно будет забрать из параметра в строке адреса браузера": "access_token will need to be taken from the parameter in the browser address bar", +"получать уведомления о создании опроса и голосовании в опросе: yes, no": "receive notifications when a poll is created and voted on: yes, no", "Устанавливает URL обработчика событий бота для работы в режиме Webhook": "Set webhook URL for bot event handling in webhook mode", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьЗапись": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetRecord", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьСобытие": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteEvent", "Включение доп. полей в ответ. См. ПолучитьСтруктуруДопПолейОтправления": "Include additional fields in the response. See GetShipmentAdditionalFields", -"получать уведомления о создании опроса и голосовании в опросе: yes, no": "receive notifications when a poll is created and voted on: yes, no", -"Двоичные данные или путь к файлу при указании параметра ПутьСохранения": "Binary data or file path when SavePath parameter is specified", -"Получает содержимое сообщения соединения из списка активных соединений": "Gets the contents of the connection message from the list of active connections", +"access_token нужно будет забрать из параметра в строке адреса браузера": "access_token will need to be taken from the parameter in the browser address bar", +"Имя сайта (логин) для получения информации. Текущий, если не заполнено": "Site name (login) for information. Current, if not filled in", "Получает список ID товарных категорий для указания при создании товара": "Gets a list of product category IDs to specify when creating a product", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОчиститьЯчейки": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ClearCells", "список инструментов в формате JSON, которые модель должна использовать": "list of tools in JSON format that the model should use", -"Полную структуру можно получить функцией ПолучитьСтурктуруПользователя": "The full structure can be obtained with the function GetUserFieldsStructure", -"Имя сайта (логин) для получения информации. Текущий, если не заполнено": "Site name (login) for information. Current, if not filled in", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьОбъект": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetObject", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьЗапись": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetRecord", +"Перейдите в раздел **Premission scope** из пункта установки приложения": "Go to **Premission scope** page", +"Двоичные данные или путь к файлу при указании параметра ПутьСохранения": "Binary data or file path when SavePath parameter is specified", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьПодборку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteCollection", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"Бан\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"Ban\", \"Telegram", +"Проверяет, что значение является объектом внешней компоненты PostgreSQL": "Checks that the value is an object of a PostgreSQL AddIn", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСобытие": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditEvent", "Получает информацию о количестве использованного дискового пространства": "Gets information on the amount of used disk space", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьТаблицу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetTable", -"Параметр active_product устарел, используйте значения параметра visible": "The active_product parameter is deprecated, use the values of the visible parameter", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСобытие": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditEvent", -"Проверяет, что значение является объектом внешней компоненты PostgreSQL": "Checks that the value is an object of a PostgreSQL AddIn", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"Бан\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"Ban\", \"Telegram", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьПодборку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteCollection", -"Квитанция должна быть предварительно создана. См. СформироватьКвитанцию": "The receipt must be previously created. See CreateReceipt", -"`ВыполнитьСразу = Ложь` может быть использовано для получения готовых^^": "`ExecuteRequest=False` can be used to get ready^^", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьТаблицу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditTable", -"Использование данного метода для больших файлов может приводить к сбоям": "Using this method for large files may cause errors", +"`ВыполнитьСразу = Ложь` может быть использовано для получения готовых^^": "`ExecuteRequest=False` can be used to get ready^^", +"Параметр active_product устарел, используйте значения параметра visible": "The active_product parameter is deprecated, use the values of the visible parameter", +"Квитанция должна быть предварительно создана. См. СформироватьКвитанцию": "The receipt must be previously created. See CreateReceipt", "В следующий раз используйте опцию --out для указания пути их сохранения": "Next time, use the --out option to specify the path for saving", -"Информация о договоренности о доставке](@api-docs.cdek.ru/36981626.html": "Information about delivery appointment](@api-docs.cdek.ru/36989601.html", -"Возвращает объект TCP клиента при успешном подключении или неопределено": "Returns the TCP client object on successful connection or undefined", -"Результат функции ПолучитьКодПодтверждения(), если перевести его в JSON": "The result of the function GetConfirmationCode(), if convert it to JSON", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьСсылку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendLink", "Возможно, она не подходит для вашей операционной системы. Текст ошибки:": "It may not be compatible with your OS. Error:", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСобытие": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetEvent", "Получает данные о лимитах на ассортимент, создание и обновление товаров": "Get requests limits for products management methods", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСтраницу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePage", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСобытие": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetEvent", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьЛокацию": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendLocation", -"ДобавитьЗаголовокOAuthV1: добавление параметров URL в строку для подписи": "AddOAuthV1Header: adding URL parameters to the signature string", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСтраницу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPage", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТвитВидео": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTweetVideo", -"Полную документацию можно найти по адресу: (https://openintegrations.dev": "Full documentation can be found at: (https://openintegrations.dev", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТвитОпрос": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTweetPoll", -"Время начала учета. Дата должна совпадать с текущей. Текущее время по ум": "Start time. The date must match the current. Current time by default", -"ДополнитьЗаголовкиАвторизации: формирование заголовка Bearer авторизации": "CompleteAuthHeaders: generating Bearer Authorization header", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьСсылку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendLink", +"Результат функции ПолучитьКодПодтверждения(), если перевести его в JSON": "The result of the function GetConfirmationCode(), if convert it to JSON", +"Возвращает объект TCP клиента при успешном подключении или неопределено": "Returns the TCP client object on successful connection or undefined", +"Информация о договоренности о доставке](@api-docs.cdek.ru/36981626.html": "Information about delivery appointment](@api-docs.cdek.ru/36989601.html", +"Использование данного метода для больших файлов может приводить к сбоям": "Using this method for large files may cause errors", "или неявного, при передаче строки подключения в метод `ОбработатьЗапрос`": "or implicit, when passing the connection string to the `ProcessRequest` method", -"можно получить в браузере по URL из функции СоздатьСсылкуПолученияТокена": "can be obtained in the browser via the URL from the CreateTokenRetrievalLink function", -"Получает информацию об уценке и основном товаре по SKU уценённых товаров": "Retrieves discount and main product information by SKU of the discounted items", +"ДополнитьЗаголовкиАвторизации: формирование заголовка Bearer авторизации": "CompleteAuthHeaders: generating Bearer Authorization header", +"Время начала учета. Дата должна совпадать с текущей. Текущее время по ум": "Start time. The date must match the current. Current time by default", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТвитОпрос": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTweetPoll", "флаг запроса повторного подтверждения участия при редактировании события": "flag for requesting re-confirmation of participation when editing an event", -"ДобавитьЗаголовокOAuthV1: дополнение строки для подписи учетными данными": "AddOAuthV1Header: updating the signature string with credentials", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТвитГифки": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTweetGif", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТвитВидео": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTweetVideo", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСтраницу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPage", +"ДобавитьЗаголовокOAuthV1: добавление параметров URL в строку для подписи": "AddOAuthV1Header: adding URL parameters to the signature string", +"можно получить в браузере по URL из функции СоздатьСсылкуПолученияТокена": "can be obtained in the browser via the URL from the CreateTokenRetrievalLink function", +"Полную документацию можно найти по адресу: (https://openintegrations.dev": "Full documentation can be found at: (https://openintegrations.dev", +"Получает информацию об уценке и основном товаре по SKU уценённых товаров": "Retrieves discount and main product information by SKU of the discounted items", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьКалендарь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteCalendar", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКонтакт": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendContact", -"За один запрос вы можете создать штрихкоды не больше чем для 100 товаров": "You can create barcodes for a maximum of 100 products per request", -"Ссылка](@dev.1c-bitrix.ru/learning/course/?COURSE_ID=93&CHAPTER_ID=07867": "Link](@dev.1c-bitrix.ru/learning/course/?COURSE_ID=93&CHAPTER_ID=07867", +"ДобавитьЗаголовокOAuthV1: дополнение строки для подписи учетными данными": "AddOAuthV1Header: updating the signature string with credentials", "РазделятьМассивыВURL: установка настройки использованя квадратных скобок": "SplitArraysInURL: square brackets option setting", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteMessage", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьКалендарь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateCalendar", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТвитГифки": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTweetGif", "Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными": "Allows to work with invalid certificates, including self signed", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьКалендарь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateCalendar", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteMessage", "Удаляет стадию канбана или Моего плана, при условии, что в ней нет задач": "Removes a kanban (My Plan) stage, provided there are no tasks in it", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПереместитьОбъект": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"MoveObject", +"Ссылка](@dev.1c-bitrix.ru/learning/course/?COURSE_ID=93&CHAPTER_ID=07867": "Link](@dev.1c-bitrix.ru/learning/course/?COURSE_ID=93&CHAPTER_ID=07867", +"За один запрос вы можете создать штрихкоды не больше чем для 100 товаров": "You can create barcodes for a maximum of 100 products per request", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКонтакт": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendContact", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьЛокацию": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendLocation", "Получает соответствие ID Emoji для установки в качестве иконок тем форума": "Gets the mapping of Emoji IDs for setting as forum theme icons", "Она заточена для работы с сообществами и выполнением действий от их имени": "It is geared towards working with communities and performing actions on their behalf", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьПост\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeletePost\", \"VK", "Список картинок в формате Base64 (для многомодальных моделей, вроде llava": "List of pictures in Base64 format (for multimodal models like llava", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditMessage", "Если список подключений не пуст, то ожидание конца таймаута не происходит": "Если список подключений не пуст, то ожидание конца таймаута не происходит", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"НаписатьСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendMessage", "список картинок в формате Base64 (для многомодальных моделей, вроде llava": "list of images in Base64 format (for multimodal models like llava", "список инструментов в формате JSON (для моделей, которые это поддерживают": "list of tools in JSON format (for models that support this", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКартинку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendPicture", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьПост\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePost\", \"VK", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"НаписатьСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendMessage", -"Время заверш. учета. Дата должна совпадать с текущей. Текущее время по ум": "Stop time. The date must match the current. Current time by default", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПереместитьОбъект": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"MoveObject", "дополнительные параметры модели, перечисленные в документации к Modelfile": "additional model parameters listed in the Modelfile documentation", +"Время заверш. учета. Дата должна совпадать с текущей. Текущее время по ум": "Stop time. The date must match the current. Current time by default", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditMessage", "Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский": "Response language: DEFAULT (Russian), RU, EN, TR (Turkish), ZH_HANS (Chinese)", -"Устанавливает размер скидки на уценённые товары, продающиеся по схеме FBS": "Sets the amount of discount on discounted products sold under the FBS scheme", +"Отмечает выбранное сообщение и все сообщения после него как непрочитанные": "Mark current and all messages after as unreaded", "получать уведомления об изменении состояния авторизации инстанса: yes, no": "receive notifications about changes in the authorization state of the instance: yes, no", "Доступные типы параметров: Cтрока, Число, Дата, Булево, ДвоичныеДанные.^^": "Available parameter types: String, Number, Date, Boolean, BinaryData.^^", "Длительность опроса, если необходимо (опрос без длительности не создается": "Poll duration if necessary (poll without duration is not created", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьБазуДанных": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateDatabase", "Получает список id рекламных категорий для создания рекламного объявления": "Gets a list of advertising category IDs for creating an advertising post", -"бесконечный сброс попыток при получении данных может привести к зависанию": "infinite resetting of attempts when receiving data can lead to hangs", -"Истина > будут получены сразу данные PDF файла, Ложь > ответ сервера CDEK": "True > PDF file data will be received, False > receives CDEK server response", +"Метод удаляет файлы на сервере, если они отсутствуют в локальном каталоге": "The method deletes files on the server if they do not exist in the local directory", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьБазуДанных": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateDatabase", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокБаз": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetDatabaseList", "Возвращает список пользователей, просмотревших выбранное важное сообщение": "Return list of important post viewers ids", -"Отмечает выбранное сообщение и все сообщения после него как непрочитанные": "Mark current and all messages after as unreaded", -"Метод удаляет файлы на сервере, если они отсутствуют в локальном каталоге": "The method deletes files on the server if they do not exist in the local directory", "Подробнее: https://openintegrations.dev/docs/Start/Component-requirements": "Read more: https://en.openintegrations.dev/docs/Start/Component-requirements", +"Устанавливает размер скидки на уценённые товары, продающиеся по схеме FBS": "Sets the amount of discount on discounted products sold under the FBS scheme", +"бесконечный сброс попыток при получении данных может привести к зависанию": "infinite resetting of attempts when receiving data can lead to hangs", +"Истина > будут получены сразу данные PDF файла, Ложь > ответ сервера CDEK": "True > PDF file data will be received, False > receives CDEK server response", +"Информация о переводе наложенного платежа](@api-docs.cdek.ru/71059888.html": "Cash on delivery transfer information](@api-docs.cdek.ru/71060213.html", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"Разбан\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"Unban\", \"Telegram", -"URL вашего http-сервиса (или другого обработчика запросов) для авторизации": "URL of your http service (or other request handler) for authorization", "Путь к корневому PEM файлу сертификата, если его нет в системном хранилище": "Path to the root PEM file of the certificate if it is not in the system repository", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendMessage", "ID задачи, после которой надо поставить выбранную (если не заполнено Перед": "ID of the task to be followed by the selected (if Prev not filled", -"Информация о переводе наложенного платежа](@api-docs.cdek.ru/71059888.html": "Cash on delivery transfer information](@api-docs.cdek.ru/71060213.html", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьКомментарий": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateComment", -"Включает или отключает заголовок получения данных от сервера в сжатом виде": "Enables or disables the header for receiving data from the server in compressed form", -"Признак включения в макет полей исключительно для заказо Интернет магазина": "Flag of including fields in the layout exclusively for online store orders", -"Заявка должна быть предварительно создана. См. СоздатьЗаявкуНаВызовКурьера": "The invitation must be previously created. See CreateCourierInvitation", -"Получает прямую ссылку для загрузки объекта без дополнительной авторизации": "Gets a direct link to upload (put) an object without additional authorization", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьТоварыПоИД": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetProductsByID", +"Признак включения в макет полей исключительно для заказо Интернет магазина": "Flag of including fields in the layout exclusively for online store orders", "Для остальных запросов возвращается result:true или false с текстом ошибки": "For other queries, result:true or false with error text is returned", -"ID задачи, перед которой надо поставить выбранную (если не заполнено После": "ID of the task to put the selected one in front of (if After not filled", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьОпрос\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePoll\", \"VK", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьАудио (ДД": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendAudio (DD", -"истина - значение будет вставлено текстом, как есть, ложь - через параметр": "true - the value will be inserted by text as it is, false - through the parameter", +"Получает прямую ссылку для загрузки объекта без дополнительной авторизации": "Gets a direct link to upload (put) an object without additional authorization", +"Заявка должна быть предварительно создана. См. СоздатьЗаявкуНаВызовКурьера": "The invitation must be previously created. See CreateCourierInvitation", +"ID задачи, перед которой надо поставить выбранную (если не заполнено После": "ID of the task to put the selected one in front of (if After not filled", +"URL вашего http-сервиса (или другого обработчика запросов) для авторизации": "URL of your http service (or other request handler) for authorization", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСтатистику": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetStatistics", +"Включает или отключает заголовок получения данных от сервера в сжатом виде": "Enables or disables the header for receiving data from the server in compressed form", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьВидео (ДД": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendVideo (DD", "ДополнитьЗаголовкиАвторизации: формирование заголовка OAuth V1 авторизации": "CompleteAuthHeaders: generating OAuth V1 Authorization header", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьГифку (ДД": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendGif (DD", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПереместитьСобытие": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"MoveEvent", "Список доступных типов: audio, backup, book, compressed, data, development": "List of available types: audio, backup, book, compressed, data, development", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СкоприроватьОбъект": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CopyObject", "Путь к PEM файлу сертификата, если его нет в системном хранилище (при mTLS": "Path to the PEM certificate file if it is not in the system store (for mTLS", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьВидео (ДД": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendVideo (DD", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьКомментарий": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteComment", "Структура настроек (см. ПолучитьСтруктуруПользовательскихНастроекКаледнаря": "Settings structure (see GetCalednarCustomSettingsStructure", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьБазуДанных": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetDatabase", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьФайлПоURL": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadFileByURL", -"Метод для вставки в http-сервис, адрес которого указывается в redirect_uri": "Method for insertion into an http service, the address of which is specified in redirect_uri", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСтатистику": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetStatistics", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПереместитьСобытие": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"MoveEvent", +"истина - значение будет вставлено текстом, как есть, ложь - через параметр": "true - the value will be inserted by text as it is, false - through the parameter", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьКомментарий": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteComment", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПереименоватьКанал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"RenameChannel", +"Метод для вставки в http-сервис, адрес которого указывается в redirect_uri": "Method for insertion into an http service, the address of which is specified in redirect_uri", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьАудио (ДД": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendAudio (DD", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьФайлПоURL": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadFileByURL", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьБазуДанных": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetDatabase", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"НаписатьКомментарий": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"WriteComment", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьВнешнийФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddExternalFile", +"Поиск по названию (4 симв. мин). Для пунктов выдачи укажите полное название": "Search by name (4 chars. min). For delivery points enter the full name", "Получает справочные значения характеристики по заданному значению в запросе": "Gets the reference values of the attribute by the specified value", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СписокПользователей": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UserList", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"КопироватьЛист (доп": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CopySheet (new", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьКомментарий": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetComment", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьЗаписи (одна": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteRecords (one", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьЗаписи (одна": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateEntries (one", -"Поиск по названию (4 симв. мин). Для пунктов выдачи укажите полное название": "Search by name (4 chars. min). For delivery points enter the full name", "разрешить в рекламных кампаниях оптимизацию по целям без доступа к счетчику": "allow optimization by goals in advertising campaigns without access to the counter", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьАльбом\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteAlbum\", \"VK", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьКопиюОбъекта": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateObjectCopy", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьВнешнийФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddExternalFile", +"Информация о реестрах наложенных платежей](@api-docs.cdek.ru/107254706.html": "Cash on delivery registry information](@api-docs.cdek.ru/107254821.html", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТвитКартинки": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTweetImages", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьКомментарии": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetComments", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьАльбом\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateAlbum\", \"VK", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СгруппироватьТовары": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GroupProducts", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьТаблицыБазы": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetDatabaseTables", -"Информация о реестрах наложенных платежей](@api-docs.cdek.ru/107254706.html": "Cash on delivery registry information](@api-docs.cdek.ru/107254821.html", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьВнешнийФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetExternalFile", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьКомментарий": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditComment", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьАудио (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendAudio (Path", -"Полную структуру фильтра можно найти в функции ПолучитьСтруктуруФильтраЗадач": "Full filter structure you can find at GetTasksFilterStructure method", -"Получает прямую ссылку для скачивания объекта без дополнительной авторизации": "Get presigned link for object retrieving without authorization", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьАльбом\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteAlbum\", \"VK", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьКопиюОбъекта": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateObjectCopy", "Возвращает структуру полей для фильтрации лидов в методе ПолучитьСписокЛидов": "Returns the field structure for filtering leads in the GetLeadsList method", "Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer": "From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСтраницуВБазу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePageInDatabase", "в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0": "under the terms of the Attribution 4.0 International (CC BY 4.0 license", "Можно упомянуть пользователя, добавив в текст его userId в следующем формате": "You can mention a user by adding their userId to the text in the following format", -"Функция обязательная для вызова первой при создании нового объекта обработки": "The function must be called first when creating a new processor object", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьИсторию (путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateStory (path", -"Отправляет местоположение по географической широте и долготе в чат или канал": "Sends location by geographic latitude and longitude to a chat or channel", -"Показывает значения, которые можно получить из переданного JSON и возвращает": "Displays the values that can be obtained from the passed JSON and returns", +"Получает прямую ссылку для скачивания объекта без дополнительной авторизации": "Get presigned link for object retrieving without authorization", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТекстовыйТвит": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTextTweet", -"Выберите название и рабочую область, в которой необходимо создать приложение": "Select the name and workspace where you need to create the application", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УстановитьТемуКанала": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SetChannelTheme", +"Отправляет местоположение по географической широте и долготе в чат или канал": "Sends location by geographic latitude and longitude to a chat or channel", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокФайлов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetFileList", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьВидео (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendVideo (Path", -"Получает пустую структуру для установки пользовательских настроек календарей": "Gets an empty structure for setting custom calendar settings", +"Показывает значения, которые можно получить из переданного JSON и возвращает": "Displays the values that can be obtained from the passed JSON and returns", +"Выберите название и рабочую область, в которой необходимо создать приложение": "Select the name and workspace where you need to create the application", +"Функция обязательная для вызова первой при создании нового объекта обработки": "The function must be called first when creating a new processor object", +"Полную структуру фильтра можно найти в функции ПолучитьСтруктуруФильтраЗадач": "Full filter structure you can find at GetTasksFilterStructure method", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьИсторию (путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateStory (path", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьАудио (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendAudio (Path", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УстановитьТемуКанала": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SetChannelTheme", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"Изменение публикации": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ChangePublication", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСвойстваБазы": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditDatabaseProperties", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьИсторию\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateStory\", \"VK", "Создает пост на основе массива идетификаторов объектов (картинок, видео и др": "Creates a post based on an array of object identifiers (images, videos, etc.", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСвойстваБазы": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditDatabaseProperties", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"Изменение публикации": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ChangePublication", "Данные варианты релизов предназначены для использования в OneScript-проектах": "These release options are intended for use in OneScript projects", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ВернутьДочерниеБлоки": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ReturnChildBlocks", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьГифку (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendGif (Path", -"Получает структуру для отбора списка товаров в функции ПолучитьСписокТоваров": "Gets the structure for products list selecting in the GetProductList function", -"!OInt Сообщить(\"Ошибка загрузки участка \" + Строка(Н) + \"/\" + Строка(Попытки": "!OInt Message(\"Chunk upload error \" + String(N) + \"/\" + String(Attempts", -"Возвращает структуру полей для фильтрации задач в методе ПолучитьСписокЗадач": "Return filter structure for GetTasksList", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьВнешнийФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendExternalFile", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УстановитьЦельКанала": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SetChannelGoal", +"!OInt Сообщить(\"Ошибка загрузки участка \" + Строка(Н) + \"/\" + Строка(Попытки": "!OInt Message(\"Chunk upload error \" + String(N) + \"/\" + String(Attempts", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьГифку (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendGif (Path", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьВнешнийФайл": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendExternalFile", "URL для создания кнопки открытия страницы. Только если не заполнено Значение": "URL to create the page open button. Only if the Value is not filled in", "Полуает реестры наложенных платежей, по которым клиенту был переведен платеж": "Receives registers of imposed payments, for which the client was transferred the payment", +"Получает пустую структуру для установки пользовательских настроек календарей": "Gets an empty structure for setting custom calendar settings", +"Получает структуру для отбора списка товаров в функции ПолучитьСписокТоваров": "Gets the structure for products list selecting in the GetProductList function", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьВидео (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendVideo (Path", +"Возвращает структуру полей для фильтрации задач в методе ПолучитьСписокЗадач": "Return filter structure for GetTasksList", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокСвойств": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPropertyList", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКартинку (ДД": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendImage (DD", "Перейти в подраздел **Разработчикам** в разделе **Приложения** боковой панели": "Go to **Developers** in the **Applications** section of the sidebar", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокЗаписей": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetEntryList", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокСвойств": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPropertyList", "С одного аккаунта продавца можно использовать метод не больше 20 раз в минуту": "From one merchant account, you can use the method no more than 20 times per minute", "в своем проекте и **заново получить токен** (последние два пункта инструкции)": "service in your existing project and reacquire the token (the last two steps in the instructions)", -"**Токен** и **ID страницы** - два параметра, необходимые для работы через API": "**Token** and **Page ID** are the two parameters required for working through the API.", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьЗначенияЯчеек": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetCellValues", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьКартинку\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteImage\", \"VK", "Получает информацию об оговоренных с клиентом дате, времени и адресе доставки": "Receives information about the delivery date, time and address agreed with the customer", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьСвойствоТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteProductProperty", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьДокумент (ДД": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendDocument (DD", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокСобытий": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetEventList", +"**Токен** и **ID страницы** - два параметра, необходимые для работы через API": "**Token** and **Page ID** are the two parameters required for working through the API.", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСвойствоТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateProductProperty", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокЗаказов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetOrderList", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокКаналов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetChannelList", "Получает код подтверждения и адрес страницы, на которой его необходимо ввести": "Gets the confirmation code and the address of the page where it needs to be entered", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[4], \"ПолучитьПолеДаты": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[4], \"GetDateField", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокТоваров": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetProductList", -"Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки": "False > The processor object will be returned instead of the response if there were errors in it", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьТег\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteTag\", \"Dropbox", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСвойствоТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateProductProperty", +"Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки": "False > The processor object will be returned instead of the response if there were errors in it", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьОпрос (канал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendPoll (channel", -"Размер файла. Если не заполнен > определяется автоматически скачиванием файла": "File size. If not filled in > determined automatically by downloading the file", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИсториюКанала": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetChannelHistory", "Дата окончания нужного периода доступных таймслотов (28 дней от тек. максимум": "The end date of the desired period of available timeslots (28 days from current max.", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокСобытий": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetEventList", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокКаналов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetChannelList", +"Размер файла. Если не заполнен > определяется автоматически скачиванием файла": "File size. If not filled in > determined automatically by downloading the file", "отмечать входящие сообщения прочитанными при отправке сообщения в чат: yes, no": "mark incoming messages as read when sending a message to chat: yes, no", +"Получает структуру дополнительных параметров для обработки запроса в контексте": "Gets the structure of additional parameters to process the request in context", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СкачатьФайл\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DownloadFile\", \"Dropbox", "Добавлять к ключам пустые скобки в стиле PHP (key[]=value), если Флаг = Истина": "Add PHP style empty brackets to keys (key[]=value) if Flag = True", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьТег\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddTag\", \"Dropbox", -"Получает структуру дополнительных параметров для обработки запроса в контексте": "Gets the structure of additional parameters to process the request in context", "Вне зависимости от выбранного сопособа установки, получать файлы необходимо из": "Regardless of the chosen installation method, the files must be obtained from the", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокПодборок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetCollectionList", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьТоварВПодборку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddProductToCollection", "Для остальных запросов возвращается `result:true` или `false` с текстом ошибки": "For other queries, `result:true` or `false` with error text is returned", "Создание метки](@yandex.ru/dev/metrika/ru/management/openapi/label/createLabel": "Creating a tag](@yandex.ru/dev/metrika/en/management/openapi/label/createLabel", "Позволяет установить заранее созданный объект HTTPЗапрос для дальнейшей работы": "Allows you to set a previously created HTTPRequest object for further work", "Удаление метки](@yandex.ru/dev/metrika/ru/management/openapi/label/deleteLabel": "Deleting a tag](@yandex.ru/dev/metrika/en/management/openapi/label/deleteLabel", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьТоварВПодборку": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddProductToCollection", -"ОтменитьЗаписьMultipart: Не удалось закрыть поток. Возможно, он уже был закрыт": "CancelMultipartBody: Failed to close the stream. It may have already been closed", "получать уведомления о факте того, что сообщение было отредактировано: yes, no": "to be notified when a message has been edited: yes, no", -"Возвращает структуру полей для фильтрации сделок в методе ПолучитьСписокСделок": "Returns the field structure for filtering deals in the GetDealsList method", -"Ложь > Вместо запроса будет возвращен объект обработки, если в ней были ошибки": "False > The processor object will be returned instead of the request if there were errors in it", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокПодборок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetCollectionList", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьТег\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddTag\", \"Dropbox", +"ОтменитьЗаписьMultipart: Не удалось закрыть поток. Возможно, он уже был закрыт": "CancelMultipartBody: Failed to close the stream. It may have already been closed", +"Устанавливает тело в формате x-www-form-urlencoded из коллекции значений полей": "Sets the body to x-www-form-urlencoded from a collection of field values", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьВидеоНаСервер": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadVideoToServer", "УстановитьЗаголовки: переданные параметры не являются коллекцией ключ/значение": "SetHeaders: the passed parameters are not a key/value collection", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьТоварИзПодборки": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"RemoveProductFromCollection", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[6], \"ПолучитьПолеПочты": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[6], \"GetEmailField", -"Все права защищены. Эта программа и сопроводительные материалы предоставляются": "All rights reserved. This program and accompanying materials are provided", +"Возвращает структуру полей для фильтрации сделок в методе ПолучитьСписокСделок": "Returns the field structure for filtering deals in the GetDealsList method", "получать уведомления об устройстве (телефоне) и уровне заряда батареи: yes, no": "receive notifications about the device (phone) and battery level: yes, no", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСвойствоТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditProductProperty", +"Все права защищены. Эта программа и сопроводительные материалы предоставляются": "All rights reserved. This program and accompanying materials are provided", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьПодборкуТоваров": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateProductCollection", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьФайл (в канал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadFile (to channel", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьПост (один путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePost (single path", "!OInt Сообщить(ЛокальныйПуть.Ключ + Символы.ПС + Ответ[\"message\"] + Символы.ПС": "!OInt Message(LocalPath.Key + Chars.LF + Response[\"message\"] + Chars.LF", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьВидеоНаСервер": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadVideoToServer", -"Устанавливает тело в формате x-www-form-urlencoded из коллекции значений полей": "Sets the body to x-www-form-urlencoded from a collection of field values", +"Ложь > Вместо запроса будет возвращен объект обработки, если в ней были ошибки": "False > The processor object will be returned instead of the request if there were errors in it", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСвойствоТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditProductProperty", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьФайл (в канал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadFile (to channel", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКартинку (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendImage (Path", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СкачатьПапку\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DownloadFolder\", \"Dropbox", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[7], \"ПолучитьПолеСсылки": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[7], \"GetLinkField", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокКаталогов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetCatalogList", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКартинку (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendImage (Path", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УстановитьЗначенияЯчеек": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SetCellValues", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьПубличныйОбъект": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPublicObject", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОБоте": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetBotInfo", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьКалендарьСписка": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditListCalendar", "В случае выполнения нескольких операций желательно использовать одно соединение": "If several operations are performed, it is desirable to use one connection", "Создает одну или массив записей по описанию или массиву описаний значений полей": "Creates one or an array of records by description or an array of field value descriptions", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКонтакт (канал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendContact (channel", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьОбсуждение\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateDiscussion\", \"VK", "Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer": "From Consumer Keys -> Access Token and Secret settings page of Twitter Developer", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьПубличныйОбъект": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPublicObject", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьПодборкуТоваров": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditProductCollection", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОБоте": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetBotInfo", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьКалендарьСписка": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetListCalendar", "Возвращает объект TCP клиента при успешном подключении или информацию об ошибке": "Returns TCP client object on successful connection or error information", -"Двоичные данные могут также быть переданы как структура `{'blob':Путь к файлу}`": "Binary data can also be transferred as a structure `{'blob':File path}`", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СкачатьФайл\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DownloadFile\", \"Telegram", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьКалендарьСписка": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetListCalendar", "Изменение метки](@yandex.ru/dev/metrika/ru/management/openapi/label/updateLabel": "Changing a tag](@yandex.ru/dev/metrika/en/management/openapi/label/updateLabel", +"Двоичные данные могут также быть переданы как структура `{'blob':Путь к файлу}`": "Binary data can also be transferred as a structure `{'blob':File path}`", +"Информация о метке](@yandex.ru/dev/metrika/ru/management/openapi/label/getLabel": "Tag information](@yandex.ru/dev/metrika/en/management/openapi/label/getLabel", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьДокумент (Путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendDocument (Path", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОткрытьОбсуждение\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"OpenDiscussion\", \"VK", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[0], \"ПолучитьПолеНомера": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[0], \"GetNumberField", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКонтакт (канал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendContact (channel", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СкачатьФайл\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DownloadFile\", \"Telegram", "УстановитьПрокси: переданные настройки не являются объектом типа ИнтернетПрокси": "SetProxy: passed settings are not an object of the InternetProxy type", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрытьОбсуждение\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CloseDiscussion\", \"VK", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьПапку\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateFolder\", \"Dropbox", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[3], \"ПолучитьПолеФлажка": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[3], \"GetCheckboxField", -"Информация о метке](@yandex.ru/dev/metrika/ru/management/openapi/label/getLabel": "Tag information](@yandex.ru/dev/metrika/en/management/openapi/label/getLabel", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОткрытьОбсуждение\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"OpenDiscussion\", \"VK", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[0], \"ПолучитьПолеНомера": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[0], \"GetNumberField", +"D:\\REPOS\\OpenIntegrations\\src\\ru\\OInt\\tests\\Modules\\Coverage_ЗапускВсехТестов.os": "D:\\REPOS\\OpenIntegrations\\src\\ru\\OInt\\tests\\Modules\\Coverage_StartAllTests.os", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьОбъект\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteObject\", \"Dropbox", "Причина изменения. Обязателен при указании Время и отключенном свободном графике": "Reason for change. Required when Time is specified and free schedule is disabled", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОДиске": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetDiskInfo", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьСообщение (json": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendMessage (json", -"D:\\REPOS\\OpenIntegrations\\src\\ru\\OInt\\tests\\Modules\\Coverage_ЗапускВсехТестов.os": "D:\\REPOS\\OpenIntegrations\\src\\ru\\OInt\\tests\\Modules\\Coverage_StartAllTests.os", "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей": "True > structure with empty valuse, False > field descriptions at values", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьОбъект\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteObject\", \"Dropbox", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСтатистикуПостов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPostStatistics", "Параметры fbs_sku и fbo_sku из ответа метода были отключены 15 августа 2023 года": "The fbs_sku and fbo_sku parameters from the method response were disabled on August 15, 2023", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьКалендарьВСписок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddCalendarToList", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокКалендарей": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetCalendarList", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьСвойстваСтраницы": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditPageProperties", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьФайл\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadFile\", \"Dropbox", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьКалендарьВСписок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddCalendarToList", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[5], \"ПолучитьПолеТелефона": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[5], \"GetPhoneField", +"УстановитьПараметрыURL: Переданные параметры не являются коллекцией ключ/значение": "SetURLParams: The passed parameters are not a key/value collection", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОчиститьОсновнойКалендарь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ClearPrimaryCalendar", "Значения типа Двоичные данные (BLOB) возвращаются в виде `{'blob':Base64 строка}`": "Values of the Binary data type (BLOB) are returned as `{'blob':Base64 строка}`", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСсылкуНаСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetMessageLink", @@ -9416,257 +9418,255 @@ "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьНаименованиеКниги": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditSpreadsheetTitle", "id приложения, которое необходимо создать в профиле на странице для разработчиков": "application ID that needs to be created in the profile on the developer page", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьПревью\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPreview\", \"Dropbox", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[5], \"ПолучитьПолеТелефона": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[5], \"GetPhoneField", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"НаписатьВОбсуждение\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"PostInDiscussion\", \"VK", "Список доступных типов описан на начальной странице документации библиотеки MySQL": "The list of available types is described on the initial page of the MySQL library documentation", -"УстановитьПараметрыURL: Переданные параметры не являются коллекцией ключ/значение": "SetURLParams: The passed parameters are not a key/value collection", +"Для начала работы необходимо вызвать команду `oint` из командной строки/терминала": "To get started, you need to call the command `oint` from the command prompt/terminal", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОКанале": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetChannelInfo", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[2], \"ПолучитьПолеВложения": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[2], \"GetAttachmentField", "Обновление происходит методом ОбновитьТокен с новыми access_token и refresh_token": "The update is done using the UpdateToken method with new access_token and refresh_token", "Если в не знаете с чего начать, то стоит найти метод ПолучитьСтандартныеПараметры": "If you don't know where to start, you should find the GetStandardParameters method", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьТокен\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetToken\", \"Bitrix24", "Токен и ID чата являются основными параметрами всех методов работы с Telegram API": "The token and chat ID are the primary parameters for all methods of working with the Telegram API", -"Для начала работы необходимо вызвать команду `oint` из командной строки/терминала": "To get started, you need to call the command `oint` from the command prompt/terminal", "Ложь > Вместо соединения будет возвращен объект обработки, если в ней были ошибки": "False > The processor object will be returned instead of the connection if there were errors in it", "Сохраните **токен**, который вам прислал BotFather после завершения создания бота": "Save the **token** that BotFather sent you after completing the bot creation", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОбновитьТокен\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"RefreshToken\", \"Bitrix24", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[2], \"ПолучитьПолеВложения": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[2], \"GetAttachmentField", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"НаписатьВОбсуждение\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"PostInDiscussion\", \"VK", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьWebhook\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteWebhook\", \"Telegram", -"Список операций](@yandex.ru/dev/metrika/ru/management/openapi/operation/operations": "List of actions](@yandex.ru/dev/metrika/en/management/openapi/operation/operations", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьПост (одна картинка": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePost (single image", "ОтменитьЗаписьMultipart: Не удалось удалить файл тела. Возможно, он уже был удален": "CancelMultipartBody: Failed to delete the body file. It may have already been deleted", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьГифку\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendGif\", \"Telegram", "Загрузка по частям используется для больших файлов. Стандартный размер `ChunkSize`": "Chunk upload is used for large files. Default `ChunkSize`", +"Список операций](@yandex.ru/dev/metrika/ru/management/openapi/operation/operations": "List of actions](@yandex.ru/dev/metrika/en/management/openapi/operation/operations", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(МассивПолей[1], \"ПолучитьПолеСтроковое": "!OInt OPI_TestDataRetrieval.WriteLog(FieldArray[1], \"GetStringField", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьОпрос\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendSurvey\", \"Telegram", "Формирует простую JSON клавиатуру из массив кнопок для сообщения или нижней панели": "Generates a simple JSON keyboard from an array of buttons for a message or bottom panel", "Вызывает метод получения токена, так как для получения токена из кода, приходящего": "Calls the token acquisition method, as for obtaining a token from the code received", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьРекламноеОбъявление": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateAd", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьНовость\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePost\", \"Bitrix24", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокКомментариев": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetCommentList", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСоставнойПост\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateCompositePost\", \"VK", "Авторизуйтесь в Airtable и перейдите **[на страницу создания персональных токенов]": "Sign in to Airtable and go to the **[personal tokens creation page]", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьОпрос\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendSurvey\", \"Telegram", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСоставнойПост\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateCompositePost\", \"VK", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьНовость\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePost\", \"Bitrix24", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьДанныеПользователя": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetUserData", -"Позволяет установить заранее созданный объект HTTPСоединение для дальнейшей работы": "Allows you to set a previously created HTTPConnection object for further work", "ЗвершитьЗаписьMultipart: Не удалось закрыть запись. Возможно, она уже была закрыта": "EndMultipartBody: Could not close the writer. It may have already been closed", "color=Зеленый) - путь к файлу сохранения результата (двоичных данных в частности": "color=Green) - the path to the result saving file (particularly binary data", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОткрытьТемуФорума (главная": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"OpenForumTopic (main", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СерверноеВремя\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ServerTime\", \"Bitrix24", "В боковом меню выберите пункт Credentials -> Create Credentials -> OAuth client ID": "In the side menu, select Credentials -> Create Credentials -> OAuth client ID", "ОтменитьЗаписьMultipart: Не удалось закрыть запись. Возможно, она уже была закрыта": "CancelMultipartBody: Could not close the writer. It may have already been closed", -"Создание счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/addCounter": "Creating a counter](@yandex.ru/dev/metrika/en/management/openapi/counter/addCounter", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьАудио\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendAudio\", \"Telegram", -"Данные вложений, где ключ > имя файла, значение > путь к файлу иди двоичные данные": "Attachment data where key > filename, value > file path or binary data", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьВидео\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendVideo\", \"Telegram", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьНовость\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeletePost\", \"Bitrix24", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрытьТемуФорума (главная": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CloseForumTopic (main", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьАудио\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendAudio\", \"Telegram", +"Создание счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/addCounter": "Creating a counter](@yandex.ru/dev/metrika/en/management/openapi/counter/addCounter", +"Позволяет установить заранее созданный объект HTTPСоединение для дальнейшей работы": "Allows you to set a previously created HTTPConnection object for further work", "получать уведомления о добавлении чата в список заблокированных контактов: yes, no": "receive notifications when a chat is added to the blocked contacts list: yes, no", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСсылкуДляСкачивания": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetDownloadLink", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьМетаданныеКалендаря": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetCalendarMetadata", -"Пока вам не нужно использовать такие методы, получать communitytoken не обязательно": "You don't need to obtain the 'communitytoken' if you're not using such methods at the moment", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокВнешнихФайлов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetExternalFileList", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ВыгнатьПользователяИзКанала": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"KickUserFromChannel", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьВидео\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendVideo\", \"Telegram", +"Данные вложений, где ключ > имя файла, значение > путь к файлу иди двоичные данные": "Attachment data where key > filename, value > file path or binary data", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрытьТемуФорума (главная": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CloseForumTopic (main", "Возвращает структуру полей для фильтрации пользователей в методе НайтиПользователей": "Returns the field structure for filtering users in the FindUsers method", -"Получить параметры доступа к инстансу](@green-api.com/docs/before-start/#parameters": "Get access parameters to instance](@green-api.com/en/docs/before-start/#parameters", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьОнлайнПользователей": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetOnlineUsers", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокПользователей": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetUserList", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОбОбъекте": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetObjectInfo", +"Получить параметры доступа к инстансу](@green-api.com/docs/before-start/#parameters": "Get access parameters to instance](@green-api.com/en/docs/before-start/#parameters", "Получает информацию о статусе обработки паспортных данных для международных заказов": "Receives information on passport data processing status for international orders", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ВыгнатьПользователяИзКанала": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"KickUserFromChannel", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокВнешнихФайлов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetExternalFileList", +"Пока вам не нужно использовать такие методы, получать communitytoken не обязательно": "You don't need to obtain the 'communitytoken' if you're not using such methods at the moment", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСсылкуДляСкачивания": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetDownloadLink", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьОнлайнПользователей": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetOnlineUsers", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьМетаданныеКалендаря": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetCalendarMetadata", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"КопироватьОбъект\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CopyObject\", \"Dropbox", "Информация о счетчике](@yandex.ru/dev/metrika/ru/management/openapi/counter/counter": "Counter information](@yandex.ru/dev/metrika/en/management/openapi/counter/counter", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьМетаданныеКалендаря": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditCalendarMetadata", -"Для Twitter это довольно значительный набор, что обсуловлено наличием сразу 2-х API": "For Twitter, this is quite a significant set, which is due to the presence of 2 APIs at once", "Получает структуру для внесения остатков товара в функции ОбновитьКоличествоТоваров": "Gets the data structure for udpating product stocks in the UpdateProductsStocks function", "На данной странице описаны все действия, необходимые для полноценного начала работы": "On this page, all the steps necessary to start working are described", "Формирует кнопку действия для клавиатуры сообщения (см. ОтправитьТекстовоеСообщение": "Forms an action button for the message keyboard (see SendTextMessage", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"КопироватьОбъект\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CopyObject\", \"Dropbox", +"Для Twitter это довольно значительный набор, что обсуловлено наличием сразу 2-х API": "For Twitter, this is quite a significant set, which is due to the presence of 2 APIs at once", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьТекстовоеСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendTextMessage", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьМетаданныеКалендаря": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditCalendarMetadata", "!OInt Сообщить(\"Не удалось загрузить часть файла! Отмена загрузки ID:\" + IDЗагрузки": "!OInt Message(\"Failed to upload part of the file! Aborted upload wiht ID:\" + UploadID", "ChunkSize слишком мал. Необходимо увеличить размер части (минимум для данного файла": "ChunkSize is too small. It is necessary to increase the chunk size (minimum for this file", +"Получить пустую структуру можно при помощи метода ПолучитьСокращеннуюСтруктуруТовара": "You can get an empty structure using the GetSimplifiedProductStructure method", "Преобразовывает код в токен после ввода кода при выполнении ПолучитьКодПодтверждения": "Converts the code to a token after entering the code when executing GetConfirmationCode", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОпубликоватьПапку\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"PublishFolder\", \"Dropbox", "OInt CLI - приложение для работы с API различных онлайн-сервисов из командной строки": "OInt CLI - CLI toolkit for integrating with APIs of popular online services", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКонтакт\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendContact\", \"Telegram", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьВариантСвойстваТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteProductPropertyVariant", "ID пользователя из информации о канале не подойдет для отправки сообщений через бота": "The user ID from channel information is not suitable for sending messages through the bot", -"Получить пустую структуру можно при помощи метода ПолучитьСокращеннуюСтруктуруТовара": "You can get an empty structure using the GetSimplifiedProductStructure method", "page?param1=search?text¶m2=John Doe¶m3=value&another¶m4=кириллица¶m5": "page?param1=search?text¶m2=John Doe¶m3=value&another¶m4=cyrillic¶m5", -"Получает пустой макет фильтра получения списка офисов в функции ПолучитьСписокОфисов": "Gets an empty layout of the filter for getting the list of offices in the GetOfficeList function", -"По умолчанию массивы интерпретируются как единый параметр с JSON массивом в значении": "By default, arrays are interpreted as a single parameter with JSON array in value", "Если нужно добавить пользователя интранета, то обязательно передаётся: UF_DEPARTMENT": "If you want to add an intranet user, you must pass UF_DEPARTMENT field", "Изменение счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/editCounter": "Changing a counter](@yandex.ru/dev/metrika/en/management/openapi/counter/editCounter", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьСообщение (картинка": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendMessage (image", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПереместитьОбъект\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"MoveObject\", \"Dropbox", "После завершения создания интеграции, нажмите *Show* и скопируйте **Токен (Secret)**": "After finishing the integration creation, click *Show* and copy the **Token (Secret)**", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПригласитьПользователейВКанал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"InviteUsersToChannel", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьДокумент\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendDocument\", \"Telegram", +"По умолчанию массивы интерпретируются как единый параметр с JSON массивом в значении": "By default, arrays are interpreted as a single parameter with JSON array in value", +"Получает пустой макет фильтра получения списка офисов в функции ПолучитьСписокОфисов": "Gets an empty layout of the filter for getting the list of offices in the GetOfficeList function", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьВариантСвойстваТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"EditProductPropertyVariant", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокРабочихОбластей": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetWorkspaceList", "Файл не был записан! Используйте флаг --debug для получения дополнительной информации": "File was not saved! Use the --debug flag for more information", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПригласитьПользователейВКанал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"InviteUsersToChannel", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗагрузитьФайлПоURL\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UploadFileByURL\", \"Dropbox", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьВариантСвойстваТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddProductPropertyVariant", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateForumTopic\", \"Telegram", +"Удаление счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/deleteCounter": "Deleting a counter](@yandex.ru/dev/metrika/en/management/openapi/counter/deleteCounter", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОткрытьТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"OpenForumTopic\", \"Telegram", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteForumTopic\", \"Telegram", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateForumTopic\", \"Telegram", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьВариантСвойстваТовара": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddProductPropertyVariant", "Описание структур см. здесь https:pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT": "Description of structures see here https:pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT", -"Удаление счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/deleteCounter": "Deleting a counter](@yandex.ru/dev/metrika/en/management/openapi/counter/deleteCounter", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьДокумент\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendDocument\", \"Telegram", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УстановитьWebhook\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SetWebhook\", \"Telegram", -"При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае": "If the connection is closed, an error occurs, or EOF is detected, the read is terminated in either case", "Получает макет для создания о доставке в функции ЗафиксироватьДоговоренностьОДоставке": "Gets the layout to create about delivery in the RegisterDeliveryAppointment function", "**IDПользователя** - ваш ID (администратора канала). См. Получить информацию о канале": "**UserID** - your ID (channel administrator). See Get Channel Information for details", "|--> ОбновитьТокен() ->|access_token --> Используется в т-нии 2-х часов для запросов": "|--> RefreshToken() ->| access_token --> Used in the interval of 2 hours for requests", -"Создайте новый токен, нажав **Generate Token and Scopes** ниже на странице приложения": "Create a new token by clicking Generate Token and Scopes below on the application page", "Все страницы, которые будут созданы как дочерние, должны иметь свойства базы-родителя": "All pages created as children must have parent base properties", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрытьТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CloseForumTopic\", \"Telegram", +"Создайте новый токен, нажав **Generate Token and Scopes** ниже на странице приложения": "Create a new token by clicking Generate Token and Scopes below on the application page", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКартинку\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendImage\", \"Telegram", +"При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае": "If the connection is closed, an error occurs, or EOF is detected, the read is terminated in either case", +"Вызов данного метода должен использоваться в ответ на получение события callbackQuery": "This method call should be used in response to receiving a callbackQuery event", "Можно упомянуть пользователя, добавив в текст его userId в следующем формате @[userId": "You can mention a user by appending their userId to the text in the following format @[userId", "Массив или 1 получатель: UA все, SGn р. группа, Un пользователь, DRn отдел, Gn группа": "Array or 1 recipient: UA all, SGn w. group, Un user, DRn department, Gn group", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьКартинку\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendImage\", \"Telegram", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрытьТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CloseForumTopic\", \"Telegram", -"Вызов данного метода должен использоваться в ответ на получение события callbackQuery": "This method call should be used in response to receiving a callbackQuery event", -"Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей": "True > structure with empty values, False > field types at values", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПереслатьСообщение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ForwardMessage\", \"Telegram", -"статус для сортировки. Аналогичен REAL_STATUS, но имеет дополнительно три мета-статуса": "status for sorting. Similar to REAL_STATUS, but has three additional meta-statuses", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СохранитьКартинкуВАльбом (путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SaveImageToAlbum (path", -"Массив|Один получатель: UA все, SGn раб. группа, Un пользователь, DRn отдел, Gn группа": "Array or a single post target: UA all, SG work group, U user, DR depart., G group", -"Массив|Один получатель (UA все, SGn раб. группа, Un пользователь, DRn отдел, Gn группа": "Array or a single post target (UA all, SG work group, U user, DR depart., G group", -"id группы с \"-\" в начале. Можно найти в настройках группы ВК или в ее URL, если не был": "group ID with \"-\" at the beginning. Can be found in the settings of the VK group or in its URL if not set", -"Получение ссылки для интерактивного получения токена (access_token), который необходим": "Getting a link for interactive token retrieval (access_token), which is necessary", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОткрепитьСообщение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DetachMessage\", \"Telegram", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрепитьСообщение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"PinMessage\", \"Telegram", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокТегов (одиночный": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetTagList (single", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОткрепитьСообщение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DetachMessage\", \"Telegram", +"Получение ссылки для интерактивного получения токена (access_token), который необходим": "Getting a link for interactive token retrieval (access_token), which is necessary", +"id группы с \"-\" в начале. Можно найти в настройках группы ВК или в ее URL, если не был": "group ID with \"-\" at the beginning. Can be found in the settings of the VK group or in its URL if not set", +"Массив|Один получатель (UA все, SGn раб. группа, Un пользователь, DRn отдел, Gn группа": "Array or a single post target (UA all, SG work group, U user, DR depart., G group", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ЗакрепитьСообщение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"PinMessage\", \"Telegram", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СохранитьКартинкуВАльбом (путь": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SaveImageToAlbum (path", +"статус для сортировки. Аналогичен REAL_STATUS, но имеет дополнительно три мета-статуса": "status for sorting. Similar to REAL_STATUS, but has three additional meta-statuses", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПереслатьСообщение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ForwardMessage\", \"Telegram", +"Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей": "True > structure with empty values, False > field types at values", +"Массив|Один получатель: UA все, SGn раб. группа, Un пользователь, DRn отдел, Gn группа": "Array or a single post target: UA all, SG work group, U user, DR depart., G group", "Использование признака `raw` необходимо для составных конструкций, вроде `BEETWEEN`.^^": "The use of the `raw` feature is necessary for compound constructions like `BEETWEEN`.^^", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьМестоположение (канал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendLocation (channel", +"набор разрешений для получаемого ключа. Может быть любой, но offline.access обязателен": "a set of permissions for the received key. Can be any, but offline.access is mandatory", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокТегов\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetTagList\", \"Dropbox", "Список доступных типов описан на начальной странице документации библиотеки PostgreSQL": "The list of available types is described on the initial page of the PostgreSQL library documentation", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьСообщение (отложенное": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendDelayedMessage", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьОбновления\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetUpdates\", \"Telegram", -"набор разрешений для получаемого ключа. Может быть любой, но offline.access обязателен": "a set of permissions for the received key. Can be any, but offline.access is mandatory", "Параметры запроса указываются как массив структур вида `{'Тип данных': 'Значение'}`.^^": "Query parameters are specified as an array of structures of the following type: `{'Type': 'Value'}`.^^", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СохранитьКартинкуВАльбом\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SaveImageToAlbum\", \"VK", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьМестоположение (канал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendLocation (channel", "которые, при этом, созданы не для разныз задач, но просто являются версиями друг друга": "which, at the same time, are not created for different tasks, but are simply versions of each other", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокКатегорийТоваров": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetProductCategoryList", "Зарегистрируйтесь, оформите тариф и скачайте приложение VK Teams [на главной странице]": "Register, book a tariff and download the VK Teams app [on the home page]", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ChangeForumTheme\", \"Telegram", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СохранитьКартинкуВАльбом\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SaveImageToAlbum\", \"VK", "Узнать, есть ли вложенный справочник, можно через метод ПолучитьХарактеристикиКатегории": "You can find out if there is a nested catalog by the GetCharacteristicsCategories method", "Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer": "From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьОпрос (строчный массив": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendPoll (string array", +"Заполните поля App name, User support email и Email addresses (все поля со звездочками)": "Fill in the fields: App name, User support email, and Email addresses (all fields with asterisks)", "Список меток пользователя](@yandex.ru/dev/metrika/ru/management/openapi/label/getLabels": "List of user tags](@yandex.ru/dev/metrika/en/management/openapi/label/getLabels", -"Описание полей фильтра можно найти на странице документации по получению списка товаров": "The description of the filter fields can be found on the documentation page for product list retrieving method", "можно использовать http-сервис. Туда же будет приходить и информация о новых сообщениях": "you can use an HTTP service. Information about new messages will also be sent there", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьСообщение (json массив": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendMessage (json array", "Преобразует массив значений параметров в массив структур описаний для передачи в запрос": "Converts an array of parameter values into an array of description structures to be passed to the query", -"Заполните поля App name, User support email и Email addresses (все поля со звездочками)": "Fill in the fields: App name, User support email, and Email addresses (all fields with asterisks)", +"Описание полей фильтра можно найти на странице документации по получению списка товаров": "The description of the filter fields can be found on the documentation page for product list retrieving method", +"URL: домен для обычных методов или полный URL с параметрами для прямой отправки запросов": "URL: domain for common methods or full URL with parameters for direct request sending", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокОтветовНаСообщение": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetMessageReplyList", "Создать ссылку для авторизации в браузере при помощи функции *ПолучитьСсылкуАвторизации*": "Create a link for authorization in the browser using the *GetAuthorizationLink* function", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьНовость (хук)\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeletePost (wh)\", \"Bitrix24", "получать уведомления о статусах отправки/доставки/прочтении исходящих сообщений: yes, no": "receive notifications about the send/deliver/read status of outgoing messages: yes, no", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьНовость (хук)\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePost (wh)\", \"Bitrix24", -"URL: домен для обычных методов или полный URL с параметрами для прямой отправки запросов": "URL: domain for common methods or full URL with parameters for direct request sending", -"Возвращает структуру включения доп. полей ответа для метода ПолучитьСписокОтправленийFBO": "Returns the structure of inclusion of additional response fields for the GetFBOShipmentsList method", "Связанные функции: ПолучитьСписокТоваров, ПолучитьКоличествоТоваров, ПолучитьЦеныТоваров": "Related functions: GetProductList, GetProductsStocks, GetProductsPrices", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьНовость (хук)\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreatePost (wh)\", \"Bitrix24", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьПользователейКФайлу (доп": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddUsersToFile (new", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СерверноеВремя (хук)\", \"Bitrix24": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ServerTime (wh)\", \"Bitrix24", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПриостановитьРекламноеОбъявление": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"PauseAdvertisement", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьМедиагруппу\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendMediaGroup\", \"Telegram", "Получает структуру для создания товара на основе Ozon ID в функции СоздатьТоварыПоOzonID": "Gets the structure for creating a product based on Ozon ID in the CreateProductByOzonID function", +"Возвращает структуру включения доп. полей ответа для метода ПолучитьСписокОтправленийFBO": "Returns the structure of inclusion of additional response fields for the GetFBOShipmentsList method", +"После создания, перейдите в настройки канала -> Для разработчиков, и скопируйте **Токен**": "After creation, go to the channel settings -> For developers, and copy the **Token**", +"Показывает дни рождения, годовщины и другие значимые события для людей в Google Контактах": "Hollydays", "При установке параметров Таймаут и Размер в 0, чтение производится до окончания сообщения": "When the Timeout and Size parameters are set to 0, reading is performed until the message ends", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокОтложенныхСообщений": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetDelayedMessageList", "Получает макет для создания заявки на вызов курьера в функции СоздатьЗаявкуНаВызовКурьера": "Gets the layout for creating a request for courier call in the CreateCourierInvitation function", -"После создания, перейдите в настройки канала -> Для разработчиков, и скопируйте **Токен**": "After creation, go to the channel settings -> For developers, and copy the **Token**", -"Получает количество пользователей, которые нажали Узнать о поступлении на странице товара": "Gets the number of users who clicked Know about arrival button on the product page", "При следующем обновлении нужно использовать уже новый refresh_token, так что захардкодить": "For the next update, you need to use a new refresh_token, so hardcode", -"Показывает дни рождения, годовщины и другие значимые события для людей в Google Контактах": "Hollydays", -"Отбор новостей по доступу (UA все, SGn раб. группа, Un пользователь, DRn отдел, Gn группа": "Post selection by rights (UA all, SGn work group, Un user, DRn depart, Gn group", -"Отбор новостей по доступу: UA все, SGn раб. группа, Un пользователь, DRn отдел, Gn группа": "Post selection by rights: UA all, SGn work group, Un user, DRn depart, Gn group", "Список доступных счетчиков](@yandex.ru/dev/metrika/ru/management/openapi/counter/counters": "List of available counters](@yandex.ru/dev/metrika/en/management/openapi/counter/counters", +"Отбор новостей по доступу (UA все, SGn раб. группа, Un пользователь, DRn отдел, Gn группа": "Post selection by rights (UA all, SGn work group, Un user, DRn depart, Gn group", "Получает список бакетов. Возможно использование отборов, если они поддерживаются сервисом": "Gets a list of buckets. It is possible to use filters if they are provided by your service", "!OInt Сообщить(Прогресс + ЛокальныйПуть.Ключ + Символы.ПС + Ответ[\"message\"] + Символы.ПС": "!OInt Message(Progress + LocalPath.Key + Chars.LF + Response[\"message\"] + Chars.LF", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокПользователейКанала": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetChannelUserList", +"Отбор новостей по доступу: UA все, SGn раб. группа, Un пользователь, DRn отдел, Gn группа": "Post selection by rights: UA all, SGn work group, Un user, DRn depart, Gn group", +"Получает количество пользователей, которые нажали Узнать о поступлении на странице товара": "Gets the number of users who clicked Know about arrival button on the product page", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюБота\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetBotInfo\", \"Telegram", "Получает информацию о заказах, по которым был переведен наложенны платеж интернет магазину": "Gets information about orders for which cash on delivery was transferred to the online store", -"ВАЖНО: Установка Webhook обязательна по правилам Viber. Для этого надо иметь свободный URL": "IMPORTANT: Setting up Webhook is mandatory according to Viber rules. You need to have a free URL for this.", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьТекстовоеСообщение (форум": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendTextMessage (forum", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСсылкуПолученияТокена\", \"VK": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateTokenRequestLink\", \"VK", "Данные варианты релизов - различные формы поставки расширения для платформы 1С:Предприятие": "These release options are various forms of distribution for the extension for the 1C:Enterprise platform", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтменитьПубликациюФайла\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UnpublishFile\", \"Dropbox", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюБота\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetBotInfo\", \"Telegram", +"ВАЖНО: Установка Webhook обязательна по правилам Viber. Для этого надо иметь свободный URL": "IMPORTANT: Setting up Webhook is mandatory according to Viber rules. You need to have a free URL for this.", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьТекстовоеСообщение (канал": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendTextMessage (channel", "`{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}`": "`{'Field name 1': {'Type': 'Value'}, 'Field name 2': {'Type': 'Value'},...}`", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтменитьПубликациюПапки\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"UnpublishFolder\", \"Dropbox", "Приходит вместе с access_token и используется для его обновления (время жизни access_token": "Comes together with access_token and is used to refresh it (access_token lifetime", -"Получить пустую структуру можно при помощи метода ПолучитьСтруктуруОбновленияХарактеристик": "You can get an empty structure using the GetAttributesUpdateStructure method", "Получает токен по коду, полученному при авторизации по ссылке из ПолучитьСсылкуАвторизации": "Gets the token by the code received when authorizing using the link from GetAuthorizationLink", "Остатки крупногабаритных товаров можно обновлять только на предназначенных для них складах": "Stocks of bulky goods can only be renewed in the warehouses designated for them", +"Получить пустую структуру можно при помощи метода ПолучитьСтруктуруОбновленияХарактеристик": "You can get an empty structure using the GetAttributesUpdateStructure method", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьМестоположение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendLocation\", \"Telegram", "Данная библиотека позволяет работать с функционалом бесплатного плана, т.е. создавать твиты": "This library allows you to work with the functionality of the free plan, meaning you can create tweets", "Получает структуру дополнительных параметров для обработки запросов получения представлений": "Gets the structure of additional parameters for processing embeddings requests", "Аналогично использованию параметра `Расширения` (`exts` в CLI) функции `ВыполнитьЗапросSQL`": "Similar to using the `Extensions` parameter (`exts` in CLI) of the `ExecuteSQLQuery` function", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьМестоположение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendLocation\", \"Telegram", "!OInt Сообщить(OPI_Инструменты.ИнформацияОПрогрессе(ПрочитаноБайт, ОбщийРазмер, \"МБ\", МБайт": "!OInt Message(OPI_Tools.ProgressInfo(BytesRead, TotalSize, \"MB\", MB", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СкрытьГлавнуюТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"HideMainForumTheme\", \"Telegram", -"ПолучитьСсылкуАвторизации() -> Браузер -> code придет на redirect_uri -> ПолучитьТокен(code": "GetAuthorizationLink() -> Browser -> code will come to redirect_uri -> GetToken(code", "Договоренность должна быть предварительно создана. См. ЗафиксироватьДоговоренностьОДоставке": "The appointment must be previously created. See RegisterDeliveryAppointment", "Не удалось инициализировать внешнюю компоненту. Возможно, в системе отсутствует OpenSSL 3.x": "Failed to initialize AddIn. Perhaps OpenSSL 3.x is missing", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьЧислоУчастников\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetMemberCount\", \"Telegram", +"ПолучитьСсылкуАвторизации() -> Браузер -> code придет на redirect_uri -> ПолучитьТокен(code": "GetAuthorizationLink() -> Browser -> code will come to redirect_uri -> GetToken(code", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокОпубликованныхОбъектов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPublishedObjectList", "Отправляет набор файлов в чат или канал. Варианты типов медиа: audio, document, photo, video": "Sends a set of files to a chat or channel. Media types: audio, document, photo, video", "При каждом вызове метода передавайте все изображения, которые должны быть на карточке товара": "On each method call, send all the images that should be on the product card", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСсылкуАвторизации\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetAuthorizationLink\", \"Dropbox", "!OInt Сообщить(OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, \"МБ\", МБайт": "!OInt Message(OPI_Tools.ProgressInfo(CurrentPosition, TotalSize, \"MB\", MB", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокОпубликованныхОбъектов": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPublishedObjectList", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьСсылкуПриглашение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateInvitationLink\", \"Telegram", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокФайловПапки\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetFolderFileList\", \"Dropbox", -"По умолчанию квадратные скобки к ключам параметров при разделении массива не устанавливаются": "By default, square brackets to parameter keys are not set when array splitting is performed", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ВосстановитьОбъектКВерсии\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"RestoreObjectToVersion\", \"Dropbox", "Актуальной версией API является v2 и она требует получения временных токенов. Несмотря на то": "The current version of the API is v2 and it requires obtaining temporary tokens. Despite the fact", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"Dropbox_ПереместитьОбъект\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"Dropbox_MoveObject\", \"Dropbox", "Изменяет имя хранилища (только для хранилища приложения см. ПолучитьСписокХранилищПриложения": "Change storage name (for app storage only, see. GetAppStorage", -"В IDЧатаИсточника можно передавать только chatId из событий (код из ссылки на чат не подходит": "Only the chatId from events can be passed to the FromChatID (the code from the chat link is not suitable)", -"Сгенерируйте новый **токен** и включите возможность добавлять бота в группу (если необходимо)": "Generate a new **token** and enable the ability to add the bot to a group (if necessary)", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПоказатьГлавнуюТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ShowMainForumTheme\", \"Telegram", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьПользователяКФайлу\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddUserToFile\", \"Dropbox", +"По умолчанию квадратные скобки к ключам параметров при разделении массива не устанавливаются": "By default, square brackets to parameter keys are not set when array splitting is performed", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокФайловПапки\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetFolderFileList\", \"Dropbox", "Получает информацию о хранилище с которым может работать приложение для хранения своих данных": "Get information about storage with which the application can work to store its data", -"Запрос не инициализирован. Необходимо вызвать функцию Инициализировать() перед началом работы": "The request is not initialized. It is necessary to call the Initialize() function before starting work", -"Если тип данных не установлен вручную, то он будет подобран в процессе установки тела запроса": "If the data type is not set manually, it will be matched during the process of setting the request body", -"Восстановление счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/undeleteCounter": "Restoring a counter](@yandex.ru/dev/metrika/en/management/openapi/counter/undeleteCounter", "на версии 1.1, а что-то на 2: вплоть до того что они убрали возможность постить твиты из v1.1": "on version 1.1, and something on 2: up to the point that they removed the ability to post tweets from v1.1", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьПользователейКФайлу\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddUsersToFile\", \"Dropbox", +"Восстановление счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/undeleteCounter": "Restoring a counter](@yandex.ru/dev/metrika/en/management/openapi/counter/undeleteCounter", +"Если тип данных не установлен вручную, то он будет подобран в процессе установки тела запроса": "If the data type is not set manually, it will be matched during the process of setting the request body", +"Запрос не инициализирован. Необходимо вызвать функцию Инициализировать() перед началом работы": "The request is not initialized. It is necessary to call the Initialize() function before starting work", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьПользователяКФайлу\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddUserToFile\", \"Dropbox", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПоказатьГлавнуюТемуФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ShowMainForumTheme\", \"Telegram", +"Сгенерируйте новый **токен** и включите возможность добавлять бота в группу (если необходимо)": "Generate a new **token** and enable the ability to add the bot to a group (if necessary)", +"В IDЧатаИсточника можно передавать только chatId из событий (код из ссылки на чат не подходит": "Only the chatId from events can be passed to the FromChatID (the code from the chat link is not suitable)", "Набор инструментов для интеграции с популярными API посредством CLI, 1C:Enterprise и OneScript": "A toolkit for integrating with popular APIs via CLI, 1C:Enterprise and OneScript", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОбОбъекте\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetObjectInfo\", \"Dropbox", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокВерсийОбъекта\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetObjectVersionList\", \"Dropbox", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСтатусЗагрузкиПоURL\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetUploadStatusByUrl\", \"Dropbox", +"Оформляет значение в формате атрибута и добавляет его в массив attributes переданной коллекции": "Formats the value in attribute format and adds it to the Attributes array of the collection", "Получает структуру для обновления характеристик товара в функции ОбновитьХарактеристикиТоваров": "Gets the structure for updating product characteristics in the UpdateProductsAttributes function", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокВерсийОбъекта\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetObjectVersionList\", \"Dropbox", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьПользователейКФайлу\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddUsersToFile\", \"Dropbox", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСтатусЗагрузкиПоURL\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetUploadStatusByUrl\", \"Dropbox", +"Получает список первых файлов каталога или продолжает получение следующих при указании курсора": "Gets the list of the first files in the directory or continues getting the next ones when the cursor is specified", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ДобавитьПользователейКПапке\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"AddUsersToFolder\", \"Dropbox", "Выберите созданный проект и в боковом меню перейдите APIs and Services -> OAuth consent screen": "Select the created project and in the side menu go to APIs and Services -> OAuth consent screen", "Массив|Один получатель (UA все, SG раб. группа, U пользователь, DR отдел, G группа": "Array or a single post target (UA all, SG work group, U user, DR depart., G group", -"Оформляет значение в формате атрибута и добавляет его в массив attributes переданной коллекции": "Formats the value in attribute format and adds it to the Attributes array of the collection", -"Получает список первых файлов каталога или продолжает получение следующих при указании курсора": "Gets the list of the first files in the directory or continues getting the next ones when the cursor is specified", "Включает или исключает поля тела при расчете подписи OAuth в зависимости от требований сервера": "Includes or excludes body fields when calculating the OAuth signature depending on server requirements", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОбОбъекте\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetObjectInfo\", \"Dropbox", +"Информация о магазине](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign": "Market information](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОбАккаунте (сторонний": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetAccountInfo (external", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОтправитьТекстовоеСообщение\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"SendTextMessage\", \"Telegram", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьИнформациюОбАккаунте\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetAccountInfo\", \"Dropbox", -"Информация о магазине](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign": "Market information](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign", +"URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов": "URL: domain for common methods or full URL with parameters for methods of direct request sending", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ИзменитьИмяГлавнойТемыФорума\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ChangeMainForumThemeName\", \"Telegram", "Возвращает объект запущенного TCP сервера при успешном создании или структуру с описанием ошибки": "Returns a running TCP server object on successful creation or a structure with an error description", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСписокИконокАватаров\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetAvatarIconList\", \"Telegram", -"URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов": "URL: domain for common methods or full URL with parameters for methods of direct request sending", -"Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки": "Sends a single request to a specified address and receives a response using the default settings", -"Для очистки пула от неактивных соединений используется функция АктуализироватьВходящиеСоединения": "The ActualiseIncomingConnections function is used to clear the pool of inactive connections", -"В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса": "In such a case, you must use `raw:true` to set the condition directly in the query text", "Возвращает структуру полей для фильтрации комментариев в методе ПолучитьСписокКомментариевЗадачи": "Return filter structure for GetTaskCommentsList", +"Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки": "Sends a single request to a specified address and receives a response using the default settings", +"В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса": "In such a case, you must use `raw:true` to set the condition directly in the query text", +"Для очистки пула от неактивных соединений используется функция АктуализироватьВходящиеСоединения": "The ActualiseIncomingConnections function is used to clear the pool of inactive connections", "который будет возвращать 200 и подлинный SSL сертификат. Если есть сертификат и база опубликована": "which will return 200 and a genuine SSL certificate. If there is a certificate and the database is published", "BotFather предложит вам выбрать имя и никнейм бота, после чего процедура создания будет завершена": "BotFather will prompt you to choose a name and a username for the bot, after which the creation process will be completed", "объектов HTTPЗапрос и HTTPСоединение без их выполнения. См. `ВернутьЗапрос` и `ВернутьСоединение`": "HTTPConnection and HTTPConnection objects without executing them. See `ReturnRequest` and `ReturnConnection`.", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьСсылкуСкачиванияПубличногоОбъекта": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetPublicObjectDownloadLink", +"Тут можно получить ID пользователей канала. ID для бота необходимо получать из прилетов на Webhook": "Here you can get the channel's user IDs. Bot IDs need to be obtained from the Webhook arrivals", "Получите ID этой страинцы. Это можно сделать нажав Share -> Copy link или просто скопировав из URL": "Get the ID of this page. You can do this by clicking Share -> Copy link or simply by copying it from the URL", "что Twitter настаивает на использовании этой актуальной версии, они как-то умудрились не перенести": "that Twitter insists on using this latest version, they somehow managed not to transfer", -"Тут можно получить ID пользователей канала. ID для бота необходимо получать из прилетов на Webhook": "Here you can get the channel's user IDs. Bot IDs need to be obtained from the Webhook arrivals", +"Внимательно выбирайте категорию для товара: для разных категорий применяется разный размер комиссии": "Carefully choose the category for the product: different commission rates apply for different categories", +"Выполняет запрос, возвращающий информацию о событиях бота. Используется при работе в polling режиме": "Executes a request, returning information about bot events. Used in polling mode", "Устанавливает тело запрос из двоичных данных, файла или строки (с преобразованием в двоичные данные": "Sets the request body from binary data, file or string (with conversion to binary data", "color=Зеленый) - флаг, отвечающий за предоставление более подробной информации при работе программы": "color=Green) - a flag responsible for providing more detailed information during program operation", -"Выполняет запрос, возвращающий информацию о событиях бота. Используется при работе в polling режиме": "Executes a request, returning information about bot events. Used in polling mode", -"Внимательно выбирайте категорию для товара: для разных категорий применяется разный размер комиссии": "Carefully choose the category for the product: different commission rates apply for different categories", -"Настройки магазина](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings": "Market settings](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings", -"Получает список из 20 сообщений чата или диалога, в зависимости от указания IDПервого и IDПоследнего": "Gets a list of 20 chat or dialog messages, depending on the FirstID and LastID specified", "color=Зеленый) - выводит справку по текущей команде или методу. Аналогично вызову команды без опций": "color=Green) - displays help on the current command or method. Similar to calling a command without options", -"Использование загрузки частями для файлов < 5 МБ или при размере одной части < 5 МБ приведет к ошибке": "Using multipart upload for files < 5 MB or when the size of a single chunk is < 5 MB will result in an error", +"Получает список из 20 сообщений чата или диалога, в зависимости от указания IDПервого и IDПоследнего": "Gets a list of 20 chat or dialog messages, depending on the FirstID and LastID specified", +"Настройки магазина](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings": "Market settings](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings", "Настройки кабинета](@yandex.ru/dev/market/partner-api/doc/ru/reference/businesses/getBusinessSettings": "Cabinet settings](@yandex.ru/dev/market/partner-api/doc/ru/reference/businesses/getBusinessSettings", +"Использование загрузки частями для файлов < 5 МБ или при размере одной части < 5 МБ приведет к ошибке": "Using multipart upload for files < 5 MB or when the size of a single chunk is < 5 MB will result in an error", +"https:developer.twitter.com/en/portal/dashboard и выбор конкретного проекта из списка (значек c ключем": "https:developer.twitter.com/en/portal/dashboard and select a specific project from the list (icon with key", "Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`": "This is a service method. A `PutObject` method is intended for the common scenario of files uploading", "но только через нее в твит можно добавить картинку. При этом способы авторизации и токены у них разные": "but only through it you can add a picture to the tweet. At the same time, their authentication methods and tokens are different", -"https:developer.twitter.com/en/portal/dashboard и выбор конкретного проекта из списка (значек c ключем": "https:developer.twitter.com/en/portal/dashboard and select a specific project from the list (icon with key", "Получает список лидов (50 шт. за запрос максимум) с фильтром или без (см. ПолучитьСтруктуруФильтраЛидов": "Gets a list of leads (50 per request max) with or without filtering (see GetLeadFilterStructure", "Получает список задач (50 шт. за запрос максимум) с фильтром или без (см. ПолучитьСтруктуруФильтраЗадач": "Get tasks list (50 at one response max)", "Это служебный метод. Для основного сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`": "This is a service method. A `PutObject` method is intended for the main scenario of files uploading", @@ -9674,36 +9674,36 @@ "УстановитьАлгоритмOAuthV1: перед установкой алгоритма авторизация OAuth v1 должна быть инициализирована": "SetOAuthV1Algorithm: OAuth v1 authorization must be initialized before the algorithm is changed", "Для дальнейшего формирования тела используются методы `ДобавитьФайлMultipart` и `ДобавитьПолеMultipart`": "The `AddMultipartFormDataFile` and `AddMultipartFormDataField` methods are used for further body formation", "Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^": "This is a service method. A `PutObject` method is intended for the common scenario of files uploading^", +"Не удалось инициализировать внешнюю компоненту. Возможно, она несовместима с вашей операционной системой": "Failed to initialize an external component. It may not be compatible with your operating system", +"Это служебный метод. Для основного сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^": "This is a service method. A `PutObject` method is intended for the main scenario of files uploading^", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОчиститьСписокЗакрепленныхСообщенийТемы (главная": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ClearMainForumThemePinnedMessages\", \"Telegram", +"Viber периодически стучит по адресу Webhook, так что если он будет неактивен, то все перестанет работать": "Viber periodically knocks on the Webhook address, so if it is inactive, everything will stop working", "Список магазинов пользователя](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns": "List of users shops](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns", "Включает или исключает поля multipart тела при расчете подписи OAuth в зависимости от требований сервера": "Includes or excludes multipart body fields when calculating the OAuth signature depending on server requirements", "Сейчас вы не можете начать диалог с ботом, сначала необходимо установить Webhook. См. Установить Webhook": "You cannot start a conversation with the bot right now. First, you need to set up a webhook. See Set Webhook", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОчиститьСписокЗакрепленныхСообщенийТемы (главная": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ClearMainForumThemePinnedMessages\", \"Telegram", -"Это служебный метод. Для основного сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^": "This is a service method. A `PutObject` method is intended for the main scenario of files uploading^", -"Не удалось инициализировать внешнюю компоненту. Возможно, она несовместима с вашей операционной системой": "Failed to initialize an external component. It may not be compatible with your operating system", -"Viber периодически стучит по адресу Webhook, так что если он будет неактивен, то все перестанет работать": "Viber periodically knocks on the Webhook address, so if it is inactive, everything will stop working", +"Если нужно добавить пользователя экстранета, то в полях необходимо передать: EXTRANET: Y и SONET_GROUP_ID": "If you want to add an extranet user, you must pass in the fields: EXTRANET: Y and SONET_GROUP_ID", "Получает структуру для отбора списка товаров в функциях ПолучитьСписокТоваров и ПолучитьКоличествоТоваров": "Gets the structure for selecting the list of goods in the functions GetProductList and GetProductsStocks", "Получает список сделок (50 шт. за запрос максимум) с фильтром или без (см. ПолучитьСтруктуруФильтраСделок": "Gets the list of deals (50 pcs per query max) with or without filtering (see. GetDealsFilterStructure", -"Если нужно добавить пользователя экстранета, то в полях необходимо передать: EXTRANET: Y и SONET_GROUP_ID": "If you want to add an extranet user, you must pass in the fields: EXTRANET: Y and SONET_GROUP_ID", -"Возврат полей в качестве соответствия позволяет указывать тип фильтрации перед названием фильтруемого поля": "Returning fields as a map allows you to specify the filtering type before the filtered field name", -"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьДанныеИспользованияПространства\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetSpaceUsageData\", \"Dropbox", "Товар отклонён. Чтобы добавить его в «Маркет», укажите реальную цену товара или стоимость оказания услуги.": "Denied", "Параметр `v` означает версию VK API. Тестирование проводилось на 5.131, рекомендуется его таким и оставить": "The parameter `v` denotes the version of the VK API. Testing was conducted on version 5.131, and it is recommended to keep it as such", +"Возврат полей в качестве соответствия позволяет указывать тип фильтрации перед названием фильтруемого поля": "Returning fields as a map allows you to specify the filtering type before the filtered field name", +"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ПолучитьДанныеИспользованияПространства\", \"Dropbox": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"GetSpaceUsageData\", \"Dropbox", "Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart`": "The Multipart record must first be initialized using the `StartMultipartBody` function", "Метод пытается прочесть данные интервалами, длительность которых указана в параметре ДлительностьПопытки.^^": "The method tries to read the data in intervals, the duration of which is specified in the AttemptDuration parameter.^^", "Расширение активно только в рамках соединения. При каждом новом соединении его необходимо подключать заново": "The extension is active only for the current connection. You must reconnect it each time a new connection is established", "!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"ОчиститьСписокЗакрепленныхСообщенийТемы\", \"Telegram": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"ClearForumThemePinnedMessages\", \"Telegram", "В поле *Доступ к данным* добавьте разрешения как на скриншоте ниже, после чего нажмите *Создать приложение*": "In the **Data Access** field, add permissions as shown in the screenshot below, then click **Create Application**", "Например: при `raw:false` фильтр `type:BETWEEN` `value:10 AND 20` будет интерпритирован как `BETWEEN ?1 `^^": "For example: with `raw:false` the filter `type:BETWEEN` `value:10 AND 20` will be interpolated as `BETWEEN ?1 `^^", -"Выполняет запрос, возвращающий базовую информацию о боте: имя, id, возможность добавлять бота в группы и т.д": "Executes the request, returning basic bot information: name, id, ability to add the bot to groups, etc.", "Эту структуру необходимо дополнить полями, зависящими от категории товара из ПолучитьХарактеристикиКатегории": "This structure should be supplemented with fields depending on the product category from the GetCategoryAttributes function", -"Этот метод используется в случае, если прямой заказ доставлялся СДЭК и получатель хочет вернуть его полностью": "This method is used if the direct order was delivered by CDEK and the recipient wants to return it in full", -"и создайте новую страницу. Эта страница будет родительской для всех остальных объектов, создаваемых через API": "and create a new page. This page will serve as the parent for all other objects created through the API", +"Выполняет запрос, возвращающий базовую информацию о боте: имя, id, возможность добавлять бота в группы и т.д": "Executes the request, returning basic bot information: name, id, ability to add the bot to groups, etc.", +"Доступные цвета: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND": "Available colors: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND", "При работе с бесконечным потоком входящих данных обязательно указание параметра МаксимальныйРазмер, так как^^": "When working with an infinite stream of incoming data, it is obligatory to specify the MaxSize parameter, because^^", "В ответе будут все SKU, связанные с переданными. Метод может обработать любые SKU, даже скрытые или удалённые": "The response will contain all SKUs associated with the passed SKUs. The method can process any SKU, even hidden or deleted", -"Доступные цвета: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND": "Available colors: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND", +"Этот метод используется в случае, если прямой заказ доставлялся СДЭК и получатель хочет вернуть его полностью": "This method is used if the direct order was delivered by CDEK and the recipient wants to return it in full", +"и создайте новую страницу. Эта страница будет родительской для всех остальных объектов, создаваемых через API": "and create a new page. This page will serve as the parent for all other objects created through the API", +", так как в самих файлах репозитория бывают промежуточные данные и функции, находящиеся в процессе разработки.": " section, as the repository files may contain intermediate data and functions that are still in development.", "`ПолнаяЗамена` также очищает заголовки, установленные ранее другими способами (например, заголовки авторизации": "`FullReplace` also clears headers previously set by other methods (e.g., authorization headers", "Запуск портативной версии в RHEL/Fedora/CentOS (дистрибутивы, использующие rpm-пакеты) осуществляется командой": "To run the portable version in RHEL/Fedora/CentOS (distributions using rpm packages), use the command ", -", так как в самих файлах репозитория бывают промежуточные данные и функции, находящиеся в процессе разработки.": " section, as the repository files may contain intermediate data and functions that are still in development.", "Выполняет запрос getUpdates, возвращающий информацию о событиях бота. Используется при работе в polling режиме": "Executes a request getUpdates, returning information about bot events. Used in polling mode", "Выполняет запрос /getUpdates, возвращающий информацию о событиях бота. Используется при работе в polling режиме": "Executes a request /getUpdates, returning information about bot events. Used in polling mode", "В теле запроса должен быть один идентификатор или массив однотипных идентификаторов, в ответе будет массив items": "The body of the request must contain a single identifier or an array of identical identifiers, the response will be an array of items", @@ -9714,19 +9714,19 @@ "Методы формирования структуры товара: ПолучитьСтруктуруТовара(), ДобавитьВидеоТовара(), ДобавитьВидеообложкуТовара": "Methods of product structure formation: GetProductStructure(), AddProductVideo(), AddProductVideoCover", "Передача настроек Tls совместно с передачей уже созданного соединения в параметр `Соединение` будет проигнорирована": "Passing Tls settings together with passing an already created connection to the `Connection` parameter will be ignored", "Выполняет запрос /getMe, возвращающий базовую информацию о боте: имя, id, возможность добавлять бота в группы и т.д": "Executes the /getMe request, returning basic bot information: name, id, ability to add the bot to groups, etc.", -"scope определяет доступные для работы функции. В *ПолучитьСтандартныеПараметры()* список scope определен по умолчанию": "The scope determines the functions available for operation. In GetStandardParameters(), the scope list is defined by default", "Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK": "Required fields may depend on the type of order or nesting. Be sure to read the CDEK documentation", "Ссылку на получение acess_token можно получить при помощи функции *СоздатьСсылкуПолученияТокена* или склеить вручную:": "You can obtain a link for acquiring the access token using the function *CreateTokenRetrievalLink* or manually concatenate it", +"scope определяет доступные для работы функции. В *ПолучитьСтандартныеПараметры()* список scope определен по умолчанию": "The scope determines the functions available for operation. In GetStandardParameters(), the scope list is defined by default", "По умолчанию, для создания подписи используется HMAC-SHA256. Для изменения алгоритма можно восопользоваться функцией^^": "By default, HMAC-SHA256 is used to create the signature. To change the algorithm, you can use^^", "После успешного принятия уведомления, необходимо удалить его из очереди при помощи метода `УдалитьУведомлениеИзОчереди`": "Once the notification has been successfully accepted, you must remove it from the queue using the `DeleteNotificationFromQueue` method", "Определяет представление массивов в параметрах URL: как цельный JSON массив или отдельные параметры для каждого элемента": "Defines the representation of arrays in URL parameters: as a whole JSON array or separate parameters for each element", "За один запрос можно изменить наличие для 100 товаров. С одного аккаунта продавца можно отправить до 80 запросов в минуту": "You can change availability for 100 products per request. You can send up to 80 requests per minute from one merchant account", "**Важно:** Имена библиотек чувствительны к регистру и пишутся строчными буквами. Имена методов к регистру не чувствительны": "**Important:** Library names are case-sensitive and should be written in lowercase. Method names are not case-sensitive", "Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^": "Without specifying the `ForcifyResult` flag, result data is returned only for queries beginning with `SELECT` keyword^^", -"Найти своего нового бота вы можете отсканировав QR на странице создания или в настройках (пункт чат-боты) в приложении Viber": "To find your new bot, you can scan the QR code on the creation page or in the settings (chat bots section) within the Viber app", -"По умолчанию данные тела используются при расчете подписи, если оно было установлено при помощи функции `УстановитьFormТело`": "By default, the body data is used in the signature calculation if it was set using the `SetFormBody` function", -"Получите ссылку авторизации при помощи функции *ПолучитьСсылкуАвторизации(Знач КлючПриложения)* и передите по ней в браузере": "Get the authorization link using the *GetAuthorizationLink()* function and pass it in the browser", "За максимальное число попыток отвечает параметр ЧислоПопыток. При успешном получении новых данных число попыток сбрасывается": "The Attempts parameter is responsible for the maximum number of attempts. If the new data is successfully received, the number of attempts is reset", +"Получите ссылку авторизации при помощи функции *ПолучитьСсылкуАвторизации(Знач КлючПриложения)* и передите по ней в браузере": "Get the authorization link using the *GetAuthorizationLink()* function and pass it in the browser", +"По умолчанию данные тела используются при расчете подписи, если оно было установлено при помощи функции `УстановитьFormТело`": "By default, the body data is used in the signature calculation if it was set using the `SetFormBody` function", +"Найти своего нового бота вы можете отсканировав QR на странице создания или в настройках (пункт чат-боты) в приложении Viber": "To find your new bot, you can scan the QR code on the creation page or in the settings (chat bots section) within the Viber app", "Двоичные данные могут также быть переданы как структура `{'blob':Путь к файлу}`. Возвращаются значения двоичных данных (BLOB)^^": "Binary data can also be passed as a `{'blob':File path}` structure. Binary data (BLOB) values are returned^^", "Для загрузки передайте адрес ссылки на изображение в общедоступном облачном хранилище. Формат изображения по ссылке: JPG или PNG": "To upload, pass the link address of the image to public cloud storage. Image format of the linked image: JPG or PNG", "Для загрузки передайте адрес ссылки на изображение в общедоступном облачном хранилище. Формат изображения по ссылке — JPG или PNG": "To upload, pass the URL of the image to public cloud storage. The format of the image is JPG or PNG", @@ -9742,8 +9742,8 @@ "Для выполнения нескольких команд (в версиях для OS и 1С) рекомендуется использовать заранее созданное соединение (см. ОткрытьСоединение": "To execute several commands (in OS and 1C versions), it is recommended to use a connection created in advance (see CreateConnection", "Добавить в модуль http-сервиса (GET) вызов функции *ОбработкаВходящегоЗапросаПослеАвторизации*, передавая HTTPСервисЗапрос как параметр": "Add to the HTTP service module (GET) a call to the *HandleIncomingRequestAfterAuthorization* function, passing the HTTP service request as a parameter", "Все действия при работе с Telegram API осуществляются посредством ботов. Для создания нового бота необходимо в мессенджере начать диалог с": "All actions with the Telegram API are carried out through bots. To create a new bot, you need to start a conversation with", -"При установке из пакетов (Linux) или установщика (Windows, после перезагрузки), сделать это можно из любого места без дополнительных действий": "If app was installed from packages (Linux) or installer (Windows, after reboot), you can do this from any place without additional actions", "При выполнении нескольких запросов в рамках одного соединения, расширения лучше подключить один раз при помощи функции `ПодключитьРасширение`": "When performing multiple requests within a single connection, it is better to connect extensions once using the `ConnectExtension` function", +"При установке из пакетов (Linux) или установщика (Windows, после перезагрузки), сделать это можно из любого места без дополнительных действий": "If app was installed from packages (Linux) or installer (Windows, after reboot), you can do this from any place without additional actions", "Используйте полученный код, ClientID и Client Secret для вызова функции OPI_GoogleWorkspace.ПолучитьТокенПоКоду(ClientID, ClientSecret, Code)": "Use the obtained code, ClientID, and Client Secret to call the function OPI_GoogleWorkspace.GetTokenByCode(ClientID, ClientSecret, Code)", "**OInt CLI** - приложение для командой строки, которое позволяет использовать методы Открытого пакета интеграций независимо от 1С и OneScript": "OInt CLI - a command-line application that allows you to use methods of the Open Integration Package independently of 1C and OneScript", "Эти токены необходимо получить http запросом с указанием кода, который приходит при авторизации на http-сервис redirect_uri. Порядок действий:": "These tokens need to be obtained via an HTTP request with the code that comes during authorization on the HTTP service redirect_uri. The sequence of actions is as follows:", @@ -9757,8 +9757,8 @@ "Вызовите функцию *OPI_YandexID.ПолучитьКодПодтверждения()*, передав ClientID в качестве параметра. Она вернет ответ сервера Yandex, где будут поля": "Call the function *OPI_YandexID.GetConfirmationCode()*, passing ClientID as a parameter. It will return a response from the Yandex server, which will contain the fields", "После запуска **IDПользователя** будет ID конкретного человека, ведущего диалог с ботом. Получить можно из обработыки входящих сообщения по Webhook": "After launch, the **User ID** will be the ID of the specific person engaging with the bot. You can obtain it from processing incoming messages via Webhook", "Откройте URL из **verification_url** в барузере. Скорее всего это будет https://ya.ru/device. В появившееся поле введите **user_code** из пункта 5 ": "Open the URL from **verification_url** in the browser. Most likely, it will be https://ya.ru/device. In the field that appears, enter the **user_code** from step 5", -"Добавление товаров в каталог и изменение информации о них](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings": "Adding products to the catalogue and changing information about them](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings", "Для его работы требуется **.Net Framework 4.8** или сопоставимый **Mono Runtime** (при использовании deb и rpm пакетов устанавливается автоматически)": "It requires .Net Framework 4.8 or a compatible Mono Runtime (automatically installed when using deb and rpm packages)", +"Добавление товаров в каталог и изменение информации о них](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings": "Adding products to the catalogue and changing information about them](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings", "Характеристики представляют из себя структуры с полями complex_id, id и массивом values. Для их быстрого создания есть метод ДополнитьКомплексныйАтрибут": "Attributes are structures with complex_id, id and values fields. For their quick creation there is the CompleteComplexAttribute method", "Например, `ChunkSize равный X` означает, что все файлы, размером больше `X` (в байтах) будут загружаться по частям, где одна часть будет размером `X`.^^": "For example, `ChunkSize=X` means that all files larger than `X` (in bytes) will be downloaded in chunks, where one chunk will be of size `X`.^^", "В зависимости от выбранного способа примения будет отличаться способ получения **ID чата** - параметра, отвечающего за определение объекта взаимодействия": "Depending on the chosen path, the way to obtain the **ChatID** (the parameter responsible for identifying the interaction object) will differ", @@ -9773,18 +9773,18 @@ "Метод внезавно исчез из API на облачном Bitrix24, где проводилось тестирование (09/24). Возможно, он все еще будет работать на других версиях, но это не гарантировано": "The method has suddenly disappeared from the API on the cloud Bitrix24 where it was being tested (09/24). It might still work on other versions, but it's not guaranteed", "Введите название для нового токена, выберите из перечня необходимые **Scopes** (разрешения) и **Access** (базы и рабочие пространства, к которым у токена будет доступ)": "Enter a name for the new token, select the necessary **scopes** (permissions), and choose the databases and workspaces to which the token will have access", "API Key используется в каждом методе работы с API в качестве параметра Токен. Также вы можете сгенерировать токен на основе своего логина и пароля методом *ПолуичтьТокен*": "API Key is used in each API method as a Token parameter. You can also generate a token based on your login and password using the *GetToken* method", -"Если у dictionary_id значение 0, у атрибута нет вложенных справочников. Если значение другое, то справочники есть. Получить их можно методом ПолучитьЗначенияХарактеристик": "If dictionary_id has a value of 0, the attribute has no nested directories. If the value is different, there are directories. You can get them using the GetValuesCharacteristics method", "В сутки можно восстановить из архива не больше 10 товаров, которые были архивированы автоматически. На разархивацию товаров, перенесённых в архив вручную, ограничений нет": "You can restore from the archive no more than 10 products that were automatically archived per day. There are no restrictions on unarchiving products that were manually moved to the archive", +"Если у dictionary_id значение 0, у атрибута нет вложенных справочников. Если значение другое, то справочники есть. Получить их можно методом ПолучитьЗначенияХарактеристик": "If dictionary_id has a value of 0, the attribute has no nested directories. If the value is different, there are directories. You can get them using the GetValuesCharacteristics method", "Пакет содержит множество методов для работы с различными API. Эти методы не треубют глубокого погружения в тонкости работы, но и не ограничивают вас в возможности их модификации": "The package contains numerous methods for working with various APIs. These methods do not require deep understanding of the underlying workings but do not limit your ability to modify them", "Некоторые методы, например для работы с чат-ботом сообщества, принимают в качестве параметра communitytoken - в этих методах он заменяет access_token. Для его получения необходимо": "Some methods, such as those for working with community chat bots, accept the parameter 'communitytoken' instead of 'access_token'. To obtain it, you need to", "Если отсутствие интернета на машине не предполагается, гораздо проще установить OInt напрямую из хаба пакетов. Скачивания файла для этого не требуется, достаточно выполнить команду": "But it is much easier to install OInt directly from the package hub. You don't need to download any files for this, just execute the command", "**Важно:** ID одного и того же пользователя у чата и канала - это разные значения. Нельзя использовать ID, полученный из сообщения боту для вызова методов управления каналом и наоборот": "**Important**: The ID of the same user in chat and channel is different. You cannot use the ID obtained from a message to the bot to invoke channel management methods and vice versa", "ОПИ легко интегрировать в любой проект: в виде проекта EDT, 1C-расширения или пакета OneScript. Для интеграции, независимой от конретных технологий, есть CLI версия под Windows и Linux": "The Open Integrations Package is easy to integrate into any project: as an EDT project, a 1C extension, or a OneScript package. For technology-independent integration, there is a CLI version available for Windows and Linux", "У ОПИ есть подробная документация, а код структурирован и дополнен комментариями. Если же у вас все таки возникнут дополнительные вопросы, то вы всегда можете задать их в Issues на Github": "OpenIntegrations comes with detailed documentation, and the code is well-structured and supplemented with comments. If you still have additional questions, you can always ask them in the Issues section on GitHub", -"Передайте **полученный код**, **AppKey** и **AppSecret** в функцию *ПолучитьТокен(Знач КлючПриложения, Знач СекретПриложения, Знач Код)*, сохраните полученные **access_token** и **refresh_token**": "Pass the **received code**, **AppKey** and **AppSecret** to the function *GetToken()*, save the received **access_token** and **refresh_token**", "Введите название сервиса, выберите *Веб-сервисы* в качестве платформы. Redirect URI можно указать любой или выбрать пункт *Подставить URL для отладки* - для работы с библиотекой он не понадобится": "Enter the service name, select *Web services* as the platform. You can specify any *Redirect URI* or select the Insert debugging URL option - it will not be needed for working with the library", -"Доступные типы (языки) квитанций: tpl_china, tpl_armenia, tpl_russia, tpl_english, tpl_italian, tpl_korean, tpl_latvian, tpl_lithuanian, tpl_german, tpl_turkish, tpl_czech, tpl_thailand, tpl_invoice": "Available receipt types (languages): tpl_china, tpl_armenia, tpl_russia, tpl_english, tpl_italian, tpl_korean, tpl_latvian, tpl_lithuanian, tpl_german, tpl_turkish, tpl_czech, tpl_thailand, tpl_invoice", +"Передайте **полученный код**, **AppKey** и **AppSecret** в функцию *ПолучитьТокен(Знач КлючПриложения, Знач СекретПриложения, Знач Код)*, сохраните полученные **access_token** и **refresh_token**": "Pass the **received code**, **AppKey** and **AppSecret** to the function *GetToken()*, save the received **access_token** and **refresh_token**", "**acess_token** используется во всех остальных функциях библиотеки, а при помощи **refresh_token** его можно обновить, когда срок жизни будет подходить к концу (при помощи функции *ОбновитьТокен()*)": "**access_token** is used in all other functions of the library, and with the help of **refresh_token**, it can be refreshed when its lifespan is nearing the end (using the function *RefreshToken()*)", +"Доступные типы (языки) квитанций: tpl_china, tpl_armenia, tpl_russia, tpl_english, tpl_italian, tpl_korean, tpl_latvian, tpl_lithuanian, tpl_german, tpl_turkish, tpl_czech, tpl_thailand, tpl_invoice": "Available receipt types (languages): tpl_china, tpl_armenia, tpl_russia, tpl_english, tpl_italian, tpl_korean, tpl_latvian, tpl_lithuanian, tpl_german, tpl_turkish, tpl_czech, tpl_thailand, tpl_invoice", "ID группы. Если у вас стандартный адрес группы, то id можно найти в URL. В противном случае он будет на вкладке \"Управление\" в группе, под полем Адрес. owner_id - тоже самое, но со знаком '-' впереди": "Group ID. If you have a standard group URL, you can find the ID in the URL. Otherwise, it will be on the 'Manage' tab in the group, below the Address field. 'owner_id' is the same but with a '-' sign in front of it", "При использовании портативной версии (исполняемого файла exe) `oint` необходимо запускать по полному пути к файлу. В Linux-дистрибутивах, также, предварительно нужно будет прописать `chmod +x <путь к файлу>/oint`": "When using the portable version (exe executable file), `oint` needs to be run with the full path to the file. In Linux distributions, you may also need to execute `chmod +x /oint beforehand`", "Если вы уже используете ОПИ для работы с другими сервисами Google Workspase и выполняли стартовую настройку, то пункты **Создание проекта** и **Настройка OAuth** можно пропустить. Необходимо лишь **включить сервис": "If you're already using the API to interact with other Google Workspace services and have completed the initial setup, you can skip the steps for **Creating a Project** and **Setting Up OAuth**. You just need to enable the", @@ -9821,5 +9821,17 @@ "Работа с Twitter подразумевает работу с двумя API - v1 (1.1) и v2, которые, при этом, не относятся к разным видам действий, но просто являются версиями друг друга. Несмотря на то, что Twitter настаивает на использовании v2, вышло так, что некоторые механизмы (в частности механизм загрузки файлов) в ней так и не появилися. Поэтому, даже для создания обычного твита с картинкой необходима работа с обеими версиями API, а, как следствие, двойной набор авторизационных данны. Этот набор описан в функции": "Working with Twitter involves using two APIs - v1 (1.1) and v2, which are not separate types of actions but simply different versions of the API. Despite Twitter's preference for v2, it turned out that some mechanisms (such as the file upload mechanism) did not appear in it. Therefore, even for creating a regular tweet with an image, you need to work with both API versions, resulting in a double set of authentication data. This set is described in the function", "Не рекомендуется использовать методы служебных модулей в других местах вашей конфигурации (если вы собираетесь обновляться до новых версий в дальнейшем). Для сохранения обратной совместимости, количество/назначение параметров и типы возвращаемых значений для методов работы с API не изменяются, но это не применимо к служебным модулям, которые могут изменяться как угодно для оптимизации и дополнения под новые нужды. Если вам необходим функционал из служебных модулей, рекомендуется скопировать его себе отдельно": "It is not recommended to use the methods of utility modules in other parts of your configuration (if you plan to update to new versions in the future). To maintain backward compatibility, the number/purpose of parameters and the return types for API interaction methods do not change, but this does not apply to utility modules, which can be modified in any way for optimization and adaptation to new requirements. If you need functionality from the utility modules, it is recommended to copy it separately", "Ввести домееное имя и URL обработчика перенаправлений. Тут нужно отметить, что данный механизм создания приложений - новый. Еще недавно приложения VK создавались иначе и иметь redirect_url для них было не нужно. На данный момент не совсем понятно, зачем он нужен нам для серверного приложения - просто такого понятия как серверное приложение у VK теперь нет. Теоретически, туда можно вписать что угодно - для работы с библиотекой в получении обратных данных нет необходимости. Однако, с течением времени, это может измениться": "Enter the domain name and the URL of the redirect handler. It's worth noting that this mechanism for creating VK applications is new. Until recently, VK applications were created differently, and having a redirect URL was unnecessary. At the moment, it's not entirely clear why it's needed for our server application - VK no longer distinguishes server applications as such. Theoretically, you can enter anything there - there is no need for receiving callback data to work with the library. However, this may change over time", -"Перечень необходимых данных в виде структуры содержится в функции *ПолучитьСтандартныеПараметры()*. Вы можете указывать значения параметров прямо в ней или же передавать их структурой при вызове любых других методов библиотеки в качестве необязательного параметра *Параметры* (последний во всех методах билиотеки). В последнем случае стандартные параметры будут перезаписаны по ключам теми, которые переданы при вызове метода. Перезаписаны будут только совпадающие по ключам данные. Если какой то параметр есть в наборе стандартных, но не был передан при вызове метода, то он сохранит стандартное значение": "The list of necessary data in the form of a structure is contained in the function *GetStandardParameters()*. You can specify parameter values directly within it or pass them as a structure when calling any other library methods as an optional parameter *Parameters* (the last one in all library methods). In the latter case, the standard parameters will be overwritten by the ones passed during the method call. Only the data with matching keys will be overwritten. If a parameter exists in the standard set but was not passed during the method call, it will retain its default value" +"Перечень необходимых данных в виде структуры содержится в функции *ПолучитьСтандартныеПараметры()*. Вы можете указывать значения параметров прямо в ней или же передавать их структурой при вызове любых других методов библиотеки в качестве необязательного параметра *Параметры* (последний во всех методах билиотеки). В последнем случае стандартные параметры будут перезаписаны по ключам теми, которые переданы при вызове метода. Перезаписаны будут только совпадающие по ключам данные. Если какой то параметр есть в наборе стандартных, но не был передан при вызове метода, то он сохранит стандартное значение": "The list of necessary data in the form of a structure is contained in the function *GetStandardParameters()*. You can specify parameter values directly within it or pass them as a structure when calling any other library methods as an optional parameter *Parameters* (the last one in all library methods). In the latter case, the standard parameters will be overwritten by the ones passed during the method call. Only the data with matching keys will be overwritten. If a parameter exists in the standard set but was not passed during the method call, it will retain its default value", +"OpenAIОтвет": "OpenAIResponse", +"Open AI (ОПИ": "Open AI (OpenIntegrations", +"OpenAIПредставления": "OpenAIEmbeddings", +"OAI_ОбработкаЗапросов": "OAI_RequestsProcessing", +"Имя участника разговора": "Name of participant in conversation", +"Токен авторизации OpenAI": "OpenAI authorization token", +"ПолучитьСтруктуруСообщения": "GetMessageStructure", +"Доп. заголовки запроса, если необходимо": "Additional request headers, if necessary", +"Источник сообщения: system, user, developer": "Message source: system, user, developer", +"Коллекция КлючЗначение дополнительных параметров": "KeyValue collection of additional parameters", +"Сообщения разговора. См. ПолучитьСтруктуруСообщения": "Conversation messages. See GetMessageStructure", +"Получает структуру сообщения для списка сообщений запроса": "Receives the message structure for the request message list" } \ No newline at end of file diff --git a/service/project.json b/service/project.json index ae08185923..d1eac984db 100644 --- a/service/project.json +++ b/service/project.json @@ -1,20 +1,20 @@ -{ -"version": "1.25.0", -"root": "./src/", -"mainLang": "ru", -"packageSrc": "OInt/", -"configurationSrc": "OPI/src/", -"dictionariesSrc": "./service/dictionaries/", -"workflowsSrc": "./.github/workflows/", -"jenkinsSrc": "./ci/", -"locVarsSrc": "./service/localization_vars/", -"paramsExamplesSrc": "./service/params_examples/", -"codeExamplesSrc": "./docs/ru/examples/", -"testValuesSrc": "./docs/ru/data/", -"testsModule": "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os", -"engineLinux": "C:/engine/linux", -"engineWindows": "C:/engine/windows", -"additionalLangs": [ -"en" -] +{ +"version": "1.25.0", +"root": "./src/", +"mainLang": "ru", +"packageSrc": "OInt/", +"configurationSrc": "OPI/src/", +"dictionariesSrc": "./service/dictionaries/", +"workflowsSrc": "./.github/workflows/", +"jenkinsSrc": "./ci/", +"locVarsSrc": "./service/localization_vars/", +"paramsExamplesSrc": "./service/params_examples/", +"codeExamplesSrc": "./docs/ru/examples/", +"testValuesSrc": "./docs/ru/data/", +"testsModule": "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os", +"engineLinux": "C:/engine/linux", +"engineWindows": "C:/engine/windows", +"additionalLangs": [ +"en" +] } \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_Airtable.os b/src/ru/OInt/core/Modules/OPI_Airtable.os index c7c80e07b3..632c5440f7 100644 --- a/src/ru/OInt/core/Modules/OPI_Airtable.os +++ b/src/ru/OInt/core/Modules/OPI_Airtable.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_Airtable.os +// OneScript: ./OInt/core/Modules/OPI_Airtable.os // Lib: Airtable // CLI: airtable // Keywords: airtable @@ -695,100 +695,3 @@ КонецПроцедуры #КонецОбласти - - -#Region Alternate - -Function GetListOfBases(Val Token, Val Indent = "") Export - Return ПолучитьСписокБаз(Token, Indent); -EndFunction - -Function GetDatabaseTables(Val Token, Val Base) Export - Return ПолучитьТаблицыБазы(Token, Base); -EndFunction - -Function CreateDatabase(Val Token, Val Workspace, Val Name, Val TableCollection) Export - Return СоздатьБазу(Token, Workspace, Name, TableCollection); -EndFunction - -Function CreateTable(Val Token, Val Base, Val Name, Val FieldArray, Val Description = "") Export - Return СоздатьТаблицу(Token, Base, Name, FieldArray, Description); -EndFunction - -Function ModifyTable(Val Token, Val Base, Val Table, Val Name = "", Val Description = "") Export - Return ИзменитьТаблицу(Token, Base, Table, Name, Description); -EndFunction - -Function CreateField(Val Token, Val Base, Val Table, Val FieldStructure) Export - Return СоздатьПоле(Token, Base, Table, FieldStructure); -EndFunction - -Function ModifyField(Val Token, Val Base, Val Table, Val Field, Val Name = "", Val Description = "") Export - Return ИзменитьПоле(Token, Base, Table, Field, Name, Description); -EndFunction - -Function GetStringField(Val Name) Export - Return ПолучитьПолеСтроковое(Name); -EndFunction - -Function GetNumberField(Val Name, Val Precision = 0) Export - Return ПолучитьПолеНомера(Name, Precision); -EndFunction - -Function GetAttachmentField(Val Name) Export - Return ПолучитьПолеВложения(Name); -EndFunction - -Function GetCheckboxField(Val Name) Export - Return ПолучитьПолеФлажка(Name); -EndFunction - -Function GetDateField(Val Name) Export - Return ПолучитьПолеДаты(Name); -EndFunction - -Function GetEmailField(Val Name) Export - Return ПолучитьПолеПочты(Name); -EndFunction - -Function GetPhoneField(Val Name) Export - Return ПолучитьПолеТелефона(Name); -EndFunction - -Function GetLinkField(Val Name) Export - Return ПолучитьПолеСсылки(Name); -EndFunction - -Function GetListOfRecords(Val Token, Val Base, Val Table, Val Indent = "") Export - Return ПолучитьСписокЗаписей(Token, Base, Table, Indent); -EndFunction - -Function GetRecord(Val Token, Val Base, Val Table, Val Record) Export - Return ПолучитьЗапись(Token, Base, Table, Record); -EndFunction - -Function CreatePosts(Val Token, Val Base, Val Table, Val Data) Export - Return СоздатьЗаписи(Token, Base, Table, Data); -EndFunction - -Function DeleteRecords(Val Token, Val Base, Val Table, Val Records) Export - Return УдалитьЗаписи(Token, Base, Table, Records); -EndFunction - -Function GetComments(Val Token, Val Base, Val Table, Val Record, Val Indent = "") Export - Return ПолучитьКомментарии(Token, Base, Table, Record, Indent); -EndFunction - -Function CreateComment(Val Token, Val Base, Val Table, Val Record, Val Text) Export - Return СоздатьКомментарий(Token, Base, Table, Record, Text); -EndFunction - -Function EditComment(Val Token, Val Base, Val Table, Val Record, Val Comment, Val Text) Export - Return ИзменитьКомментарий(Token, Base, Table, Record, Comment, Text); -EndFunction - -Function DeleteComment(Val Token, Val Base, Val Table, Val Record, Val Comment) Export - Return УдалитьКомментарий(Token, Base, Table, Record, Comment); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_Bitrix24.os b/src/ru/OInt/core/Modules/OPI_Bitrix24.os index 6afa423c5b..e24845a6e4 100644 --- a/src/ru/OInt/core/Modules/OPI_Bitrix24.os +++ b/src/ru/OInt/core/Modules/OPI_Bitrix24.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_Bitrix24.os +// OneScript: ./OInt/core/Modules/OPI_Bitrix24.os // Lib: Bitrix24 // CLI: bitrix24 // Keywords: bitrix24, b24, bitrix @@ -5236,724 +5236,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function GetAppAuthLink(Val Domain, Val ClientID) Export - Return ПолучитьСсылкуАвторизацииПриложения(Domain, ClientID); -EndFunction - -Function GetToken(Val ClientID, Val ClientSecret, Val Code) Export - Return ПолучитьТокен(ClientID, ClientSecret, Code); -EndFunction - -Function RefreshToken(Val ClientID, Val ClientSecret, Val Refresh) Export - Return ОбновитьТокен(ClientID, ClientSecret, Refresh); -EndFunction - -Function ServerTime(Val URL, Val Token = "") Export - Return СерверноеВремя(URL, Token); -EndFunction - -Function CreatePost(Val URL, Val Text, Val Visibility = "UA", Val Files = "", Val Title = "", Val Important = False, Val Token = "") Export - Return СоздатьНовость(URL, Text, Visibility, Files, Title, Important, Token); -EndFunction - -Function UpdatePost(Val URL, Val PostID, Val Text, Val Visibility = "UA", Val Files = "", Val Title = "", Val Token = "") Export - Return ИзменитьНовость(URL, PostID, Text, Visibility, Files, Title, Token); -EndFunction - -Function DeletePost(Val URL, Val PostID, Val Token = "") Export - Return УдалитьНовость(URL, PostID, Token); -EndFunction - -Function GetImportantPostViewers(Val URL, Val PostID, Val Token = "") Export - Return ПолучитьСписокПросмотревшихВажное(URL, PostID, Token); -EndFunction - -Function GetPosts(Val URL, Val PostID = "", Val Filter = "UA", Val Token = "") Export - Return ПолучитьНовости(URL, PostID, Filter, Token); -EndFunction - -Function AddPostComment(Val URL, Val PostID, Val Text, Val Token = "") Export - Return ДобавитьКомментарийНовости(URL, PostID, Text, Token); -EndFunction - -Function AddPostRecipients(Val URL, Val PostID, Val Visibility, Val Token = "") Export - Return ДобавитьПолучателейКНовости(URL, PostID, Visibility, Token); -EndFunction - -Function GetTask(Val URL, Val TaskID, Val Token = "") Export - Return ПолучитьЗадачу(URL, TaskID, Token); -EndFunction - -Function GetTasksList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "", Val Fields = "") Export - Return ПолучитьСписокЗадач(URL, Filter, Indent, Token, Fields); -EndFunction - -Function CreateTask(Val URL, Val FieldsStructure, Val Token = "") Export - Return СоздатьЗадачу(URL, FieldsStructure, Token); -EndFunction - -Function UpdateTask(Val URL, Val TaskID, Val FieldsStructure, Val Token = "") Export - Return ИзменитьЗадачу(URL, TaskID, FieldsStructure, Token); -EndFunction - -Function DeleteTask(Val URL, Val TaskID, Val Token = "") Export - Return УдалитьЗадачу(URL, TaskID, Token); -EndFunction - -Function AttachFileToTopic(Val URL, Val TaskID, Val FileID, Val Token = "") Export - Return ДобавитьФайлВЗадачу(URL, TaskID, FileID, Token); -EndFunction - -Function ApproveTask(Val URL, Val TaskID, Val Token = "") Export - Return ПринятьЗадачу(URL, TaskID, Token); -EndFunction - -Function DisapproveTask(Val URL, Val TaskID, Val Token = "") Export - Return ОтклонитьЗадачу(URL, TaskID, Token); -EndFunction - -Function CompleteTask(Val URL, Val TaskID, Val Token = "") Export - Return ЗавершитьЗадачу(URL, TaskID, Token); -EndFunction - -Function RenewTask(Val URL, Val TaskID, Val Token = "") Export - Return ВозобновитьЗадачу(URL, TaskID, Token); -EndFunction - -Function DeferTask(Val URL, Val TaskID, Val Token = "") Export - Return ОтложитьЗадачу(URL, TaskID, Token); -EndFunction - -Function PauseTask(Val URL, Val TaskID, Val Token = "") Export - Return ПриостановитьЗадачу(URL, TaskID, Token); -EndFunction - -Function StartTask(Val URL, Val TaskID, Val Token = "") Export - Return НачатьВыполнениеЗадачи(URL, TaskID, Token); -EndFunction - -Function StartWatchingTask(Val URL, Val TaskID, Val Token = "") Export - Return НачатьНаблюдатьЗаЗадачей(URL, TaskID, Token); -EndFunction - -Function StopWatchingTask(Val URL, Val TaskID, Val Token = "") Export - Return ПрекратитьНаблюдатьЗаЗадачей(URL, TaskID, Token); -EndFunction - -Function DelegateTask(Val URL, Val TaskID, Val UserID, Val Token = "") Export - Return ДелегироватьЗадачу(URL, TaskID, UserID, Token); -EndFunction - -Function AddTaskToFavorites(Val URL, Val TaskID, Val Token = "") Export - Return ДобавитьЗадачуВИзбранное(URL, TaskID, Token); -EndFunction - -Function RemoveTaskFromFavorites(Val URL, Val TaskID, Val Token = "") Export - Return УбратьЗадачуИзИзбранного(URL, TaskID, Token); -EndFunction - -Function GetTaskHistory(Val URL, Val TaskID, Val Token = "") Export - Return ПолучитьИсториюЗадачи(URL, TaskID, Token); -EndFunction - -Function CheckTaskAccesses(Val URL, Val TaskID, Val Users = "", Val Token = "") Export - Return ПроверитьДоступКЗадаче(URL, TaskID, Users, Token); -EndFunction - -Function MuteTask(Val URL, Val TaskID, Val Token = "") Export - Return ОтключитьЗвукЗадачи(URL, TaskID, Token); -EndFunction - -Function UnmuteTask(Val URL, Val TaskID, Val Token = "") Export - Return ВключитьЗвукЗадачи(URL, TaskID, Token); -EndFunction - -Function CreateTasksDependencies(Val URL, Val FromID, Val DestinationID, Val LinkType, Val Token = "") Export - Return СоздатьЗависимостьЗадач(URL, FromID, DestinationID, LinkType, Token); -EndFunction - -Function DeleteTasksDependencies(Val URL, Val FromID, Val DestinationID, Val LinkType, Val Token = "") Export - Return УдалитьЗависимостьЗадач(URL, FromID, DestinationID, LinkType, Token); -EndFunction - -Function GetDailyPlan(Val URL, Val Token = "") Export - Return ПолучитьПланЗадачНаДень(URL, Token); -EndFunction - -Function GetTaskFieldsStructure(Val URL, Val Token = "") Export - Return ПолучитьСтруктуруЗадачи(URL, Token); -EndFunction - -Function GetTasksFilterStructure(Val Clear = False, Val AsMap = False) Export - Return ПолучитьСтруктуруФильтраЗадач(Clear, AsMap); -EndFunction - -Function GetCustomTaskFieldsList(Val URL, Val Token = "") Export - Return ПолучитьСписокПользовательскихПолейЗадачи(URL, Token); -EndFunction - -Function AddCustomTaskField(Val URL, Val Type, Val Name, Val ExternalID = "", Val Title = "", Val Signature = "", Val Token = "") Export - Return ДобавитьПользовательскоеПолеЗадачи(URL, Type, Name, ExternalID, Title, Signature, Token); -EndFunction - -Function UpdateCustomTaskField(Val URL, Val FieldID, Val ExternalID = "", Val Title = "", Val Signature = "", Val Token = "") Export - Return ИзменитьПользовательскоеПолеЗадачи(URL, FieldID, ExternalID, Title, Signature, Token); -EndFunction - -Function GetCustomTaskField(Val URL, Val FieldID, Val Token = "") Export - Return ПолучитьПользовательскоеПолеЗадачи(URL, FieldID, Token); -EndFunction - -Function DeleteCustomTaskField(Val URL, Val FieldID, Val Token = "") Export - Return УдалитьПользовательскоеПолеЗадачи(URL, FieldID, Token); -EndFunction - -Function AddTasksChecklistElement(Val URL, Val TaskID, Val Text, Val Completed = False, Token = "") Export - Return ДобавитьЭлементЧеклистаЗадачи(URL, TaskID, Text, Completed, Token); -EndFunction - -Function UpdateTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Text, Val Token = "") Export - Return ИзменитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Text, Token); -EndFunction - -Function DeleteTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Token = "") Export - Return УдалитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Token); -EndFunction - -Function GetTasksChecklist(Val URL, Val TaskID, Val Token = "") Export - Return ПолучитьЧеклистЗадачи(URL, TaskID, Token); -EndFunction - -Function GetTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Token = "") Export - Return ПолучитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Token); -EndFunction - -Function CompleteTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Token = "") Export - Return ВыполнитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Token); -EndFunction - -Function RenewTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Token = "") Export - Return ВозобновитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Token); -EndFunction - -Function GetTaskCommentsList(Val URL, Val TaskID, Val Token = "") Export - Return ПолучитьСписокКомментариевЗадачи(URL, TaskID, Token); -EndFunction - -Function GetTaskComment(Val URL, Val TaskID, Val CommentID, Val Token = "") Export - Return ПолучитьКомменатрийЗадачи(URL, TaskID, CommentID, Token); -EndFunction - -Function AddTaskComment(Val URL, Val TaskID, Val Text, Val Token = "") Export - Return ДобавитьКомментарийЗадачи(URL, TaskID, Text, Token); -EndFunction - -Function UpdateTaskComment(Val URL, Val TaskID, Val CommentID, Val Text, Val Token = "") Export - Return ИзменитьКомментарийЗадачи(URL, TaskID, CommentID, Text, Token); -EndFunction - -Function DeleteTaskComment(Val URL, Val TaskID, Val CommentID, Val Token = "") Export - Return УдалитьКомментарийЗадачи(URL, TaskID, CommentID, Token); -EndFunction - -Function GetResultsList(Val URL, Val TaskID, Val Token = "") Export - Return ПолучитьСписокРезультатов(URL, TaskID, Token); -EndFunction - -Function CreateResultFromComment(Val URL, Val CommentID, Val Token = "") Export - Return СоздатьРезультатИзКомментария(URL, CommentID, Token); -EndFunction - -Function DeleteResultFromComment(Val URL, Val CommentID, Val Token = "") Export - Return УдалитьРезультатИзКомментария(URL, CommentID, Token); -EndFunction - -Function GetCommentStructure(Val Clear = False) Export - Return ПолучитьСтруктуруКомментария(Clear); -EndFunction - -Function AddKanbanStage(Val URL, Val Name, Val Color = "FFD800", Val PrevStageID = 0, Val EntityID = 0, Val AsAdmin = False, Val Token = "") Export - Return ДобавитьСтадиюКанбана(URL, Name, Color, PrevStageID, EntityID, AsAdmin, Token); -EndFunction - -Function UpdateKanbansStage(Val URL, Val Name, Val StageID, Val Color = "", Val PrevStageID = 0, Val AsAdmin = False, Val Token = "") Export - Return ИзменитьСтадиюКанбана(URL, Name, StageID, Color, PrevStageID, AsAdmin, Token); -EndFunction - -Function DeleteKanbanStage(Val URL, Val StageID, Val AsAdmin = False, Val Token = "") Export - Return УдалитьСтадиюКанбана(URL, StageID, AsAdmin, Token); -EndFunction - -Function GetKanbanStages(Val URL, Val EntityID = 0, Val AsAdmin = False, Val Token = "") Export - Return ПолучитьСтадииКанбана(URL, EntityID, AsAdmin, Token); -EndFunction - -Function MoveTaskToKanbanStage(Val URL, Val TaskID, Val StageID, Val Prev = 0, Val After = 0, Val Token = "") Export - Return ПеренестиЗадачуВСтадиюКанбана(URL, TaskID, StageID, Prev, After, Token); -EndFunction - -Function AddTaskTimeAccounting(Val URL, Val TaskID, Val Time, Val UserID = "", Val Text = "", Val SetupDate = "", Val Token = "") Export - Return ДобавитьТрудозатратыЗадачи(URL, TaskID, Time, UserID, Text, SetupDate, Token); -EndFunction - -Function DeleteTaskTimeAccounting(Val URL, Val TaskID, Val RecordID, Val Token = "") Export - Return УдалитьТрудозатратыЗадачи(URL, TaskID, RecordID, Token); -EndFunction - -Function GetTaskTimeAccountingList(Val URL, Val TaskID, Val Token = "") Export - Return ПолучитьСписокТрудозатратЗадачи(URL, TaskID, Token); -EndFunction - -Function GetTaskTimeAccounting(Val URL, Val TaskID, Val RecordID, Val Token = "") Export - Return ПолучитьТрудозатратыЗадачи(URL, TaskID, RecordID, Token); -EndFunction - -Function UpdateTaskTimeAccounting(Val URL, Val TaskID, Val RecordID, Val Time, Val Text = "", Val SetupDate = "", Val Token = "") Export - Return ИзменитьТрудозатратыЗадачи(URL, TaskID, RecordID, Time, Text, SetupDate, Token); -EndFunction - -Function StartTimekeeping(Val URL, Val UserID = "", Val Time = "", Val Report = "", Val Token = "") Export - Return НачатьУчетВремени(URL, UserID, Time, Report, Token); -EndFunction - -Function StopTimekeeping(Val URL, Val UserID = "", Val Time = "", Val Report = "", Val Token = "") Export - Return ЗавершитьУчетВремени(URL, UserID, Time, Report, Token); -EndFunction - -Function PauseTimekeeping(Val URL, Val UserID = "", Val Token = "") Export - Return ПриостановитьУчетВремени(URL, UserID, Token); -EndFunction - -Function GetTimekeepingStatus(Val URL, Val UserID = "", Val Token = "") Export - Return ПолучитьСтатусУчетаВремени(URL, UserID, Token); -EndFunction - -Function GetTimekeepingSettings(Val URL, Val UserID = "", Val Token = "") Export - Return ПолучитьНастройкиУчетаВремени(URL, UserID, Token); -EndFunction - -Function GetStoragesList(Val URL, Val Token = "") Export - Return ПолучитьСписокХранилищ(URL, Token); -EndFunction - -Function GetAppSotrage(Val URL, Val Token = "") Export - Return ПолучитьХранилищеПриложения(URL, Token); -EndFunction - -Function GetStorage(Val URL, Val StorageID, Val Token = "") Export - Return ПолучитьХранилище(URL, StorageID, Token); -EndFunction - -Function RenameStorage(Val URL, Val StorageID, Val Name, Val Token = "") Export - Return ПереименоватьХранилище(URL, StorageID, Name, Token); -EndFunction - -Function GetStorageObjects(Val URL, Val StorageID, Val Token = "") Export - Return ПолучитьСодержимоеХранилища(URL, StorageID, Token); -EndFunction - -Function CreateStorageFolder(Val URL, Val StorageID, Val Name, Val Token = "") Export - Return СоздатьКаталогВХранилище(URL, StorageID, Name, Token); -EndFunction - -Function GetFolderInformation(Val URL, Val FolderID, Val Token = "") Export - Return ПолучитьИнформациюОКаталоге(URL, FolderID, Token); -EndFunction - -Function CreateSubfolder(Val URL, Val FolderID, Val Name, Val Token = "") Export - Return СоздатьПодкаталог(URL, FolderID, Name, Token); -EndFunction - -Function MakeFolderCopy(Val URL, Val FolderID, Val DestinationID, Val Token = "") Export - Return СкопироватьКаталог(URL, FolderID, DestinationID, Token); -EndFunction - -Function MoveFolder(Val URL, Val FolderID, Val DestinationID, Val Token = "") Export - Return ПереместитьКаталог(URL, FolderID, DestinationID, Token); -EndFunction - -Function DeleteFolder(Val URL, Val FolderID, Val Token = "") Export - Return УдалитьКаталог(URL, FolderID, Token); -EndFunction - -Function GetFolderExternalLink(Val URL, Val FolderID, Val Token = "") Export - Return ПолучитьВнешнююСсылкуКаталога(URL, FolderID, Token); -EndFunction - -Function GetFolderItems(Val URL, Val FolderID, Val Filter = "", Val Token = "") Export - Return ПолучитьДочерниеЭлементыКаталога(URL, FolderID, Filter, Token); -EndFunction - -Function MarkFolderAsDeleted(Val URL, Val FolderID, Val Token = "") Export - Return ПоместитьКаталогВКорзину(URL, FolderID, Token); -EndFunction - -Function RestoreFolder(Val URL, Val FolderID, Val Token = "") Export - Return ВосстановитьКаталог(URL, FolderID, Token); -EndFunction - -Function RenameFolder(Val URL, Val FolderID, Val Name, Val Token = "") Export - Return ПереименоватьКаталог(URL, FolderID, Name, Token); -EndFunction - -Function GetFolderFilterStructure(Val URL, Val Clear = False, Val Token = "") Export - Return ПолучитьСтруктуруФильтраКаталога(URL, Clear, Token); -EndFunction - -Function UploadFileToStorage(Val URL, Val Name, Val File, Val StorageID, Val Rights = "", Val Token = "") Export - Return ЗагрузитьФайлВХранилище(URL, Name, File, StorageID, Rights, Token); -EndFunction - -Function UploadFileToFolder(Val URL, Val Name, Val File, Val FolderID, Val Token = "") Export - Return ЗагрузитьФайлВКаталог(URL, Name, File, FolderID, Token); -EndFunction - -Function GetFileInformation(Val URL, Val FileID, Val Token = "") Export - Return ПолучитьИнформациюОФайле(URL, FileID, Token); -EndFunction - -Function DeleteFile(Val URL, Val FileID, Val Token = "") Export - Return УдалитьФайл(URL, FileID, Token); -EndFunction - -Function GetFileExternalLink(Val URL, Val FileID, Val Token = "") Export - Return ПолучитьВнешнююСсылкуФайла(URL, FileID, Token); -EndFunction - -Function MarkFileAsDeleted(Val URL, Val FileID, Val Token = "") Export - Return ПоместитьФайлВКорзину(URL, FileID, Token); -EndFunction - -Function RestoreFile(Val URL, Val FileID, Val Token = "") Export - Return ВосстановитьФайл(URL, FileID, Token); -EndFunction - -Function MakeCopyFile(Val URL, Val FileID, Val FolderID, Val Token = "") Export - Return СкопироватьФайл(URL, FileID, FolderID, Token); -EndFunction - -Function MoveFileToFolder(Val URL, Val FileID, Val FolderID, Val Token = "") Export - Return ПереместитьФайлВКаталог(URL, FileID, FolderID, Token); -EndFunction - -Function RenameFile(Val URL, Val FileID, Val Name, Val Token = "") Export - Return ПереименоватьФайл(URL, FileID, Name, Token); -EndFunction - -Function CreateChat(Val URL, Val ChatStructure, Val Token = "") Export - Return СоздатьЧат(URL, ChatStructure, Token); -EndFunction - -Function GetChatUsers(Val URL, Val ChatID, Val Token = "") Export - Return ПолучитьСписокПользователейЧата(URL, ChatID, Token); -EndFunction - -Function LeaveChat(Val URL, Val ChatID, Val Token = "") Export - Return ПокинутьЧат(URL, ChatID, Token); -EndFunction - -Function GetUsers(Val URL, Val UserIDs, Val Token = "") Export - Return ПолучитьПользователей(URL, UserIDs, Token); -EndFunction - -Function AddUsersToChat(Val URL, Val ChatID, Val UserIDs, Val HideHistory = False, Val Token = "") Export - Return ДобавитьПользователейВЧат(URL, ChatID, UserIDs, HideHistory, Token); -EndFunction - -Function DeleteUserFromChat(Val URL, Val ChatID, Val UserID, Val Token = "") Export - Return ИсключитьПользователяИзЧата(URL, ChatID, UserID, Token); -EndFunction - -Function ChangeChatTitle(Val URL, Val ChatID, Val Title, Val Token = "") Export - Return ИзменитьЗаголовокЧата(URL, ChatID, Title, Token); -EndFunction - -Function ChangeChatColor(Val URL, Val ChatID, Val Color, Val Token = "") Export - Return ИзменитьЦветЧата(URL, ChatID, Color, Token); -EndFunction - -Function ChangeChatPicture(Val URL, Val ChatID, Val Image, Val Token = "") Export - Return ИзменитьКартинкуЧата(URL, ChatID, Image, Token); -EndFunction - -Function ChangeChatOwner(Val URL, Val ChatID, Val UserID, Val Token = "") Export - Return СменитьВладельцаЧата(URL, ChatID, UserID, Token); -EndFunction - -Function DisableChatNotifications(Val URL, Val ChatID, Val Token = "") Export - Return ОтключитьУведомленияЧата(URL, ChatID, Token); -EndFunction - -Function EnableChatNotifications(Val URL, Val ChatID, Val Token = "") Export - Return ВключитьУведомленияЧата(URL, ChatID, Token); -EndFunction - -Function GetChatMessagesList(Val URL, Val ChatID, Val LastID = "", Val FirstID = "", Val Token = "") Export - Return ПолучитьСписокСообщенийЧата(URL, ChatID, LastID, FirstID, Token); -EndFunction - -Function GetDialog(Val URL, Val ChatID, Val Token = "") Export - Return ПолучитьДиалог(URL, ChatID, Token); -EndFunction - -Function GetChatMembersList(Val URL, Val ChatID, Val Token = "") Export - Return ПолучитьСписокПользователейДиалога(URL, ChatID, Token); -EndFunction - -Function SendWritingNotification(Val URL, Val ChatID, Val Token = "") Export - Return ОтправитьУведомлениеОВводе(URL, ChatID, Token); -EndFunction - -Function GetUserStatus(Val URL, Val Token = "") Export - Return ПолучитьСтатусПользователя(URL, Token); -EndFunction - -Function SetUserStatus(Val URL, Val Status, Val Token = "") Export - Return УстановитьСтатусПользователя(URL, Status, Token); -EndFunction - -Function ReadAll(Val URL, Val Token = "") Export - Return ПрочитатьВсе(URL, Token); -EndFunction - -Function GetChatFilesFolder(Val URL, Val ChatID, Val Token = "") Export - Return ПолучитьКаталогФайловЧата(URL, ChatID, Token); -EndFunction - -Function GetChatStructure(Val Clear = False) Export - Return ПолучитьСтруктуруЧата(Clear); -EndFunction - -Function SendMessage(Val URL, Val ChatID, Val Text, Val Attachments = "", Val Token = "") Export - Return ОтправитьСообщение(URL, ChatID, Text, Attachments, Token); -EndFunction - -Function EditMessage(Val URL, Val MessageID, Val Text = "", Val Attachments = "", Val Token = "") Export - Return ИзменитьСообщение(URL, MessageID, Text, Attachments, Token); -EndFunction - -Function SetMessageReaction(Val URL, Val MessageID, Val Token = "") Export - Return УстановитьРеакциюНаСообщение(URL, MessageID, Token); -EndFunction - -Function DeleteMessage(Val URL, Val MessageID, Val Token = "") Export - Return УдалитьСообщение(URL, MessageID, Token); -EndFunction - -Function SendFile(Val URL, Val ChatID, Val FileID, Val Description = "", Val Token = "") Export - Return ОтправитьФайл(URL, ChatID, FileID, Description, Token); -EndFunction - -Function MarkMessageAsReaded(Val URL, Val ChatID, Val MessageID, Val Token = "") Export - Return ОтметитьСообщениеКакПрочитанное(URL, ChatID, MessageID, Token); -EndFunction - -Function MarkMessageAsUnreaded(Val URL, Val ChatID, Val MessageID, Val Token = "") Export - Return ОтметитьСообщениеКакНепрочитанное(URL, ChatID, MessageID, Token); -EndFunction - -Function GetPictureBlock(Val Name, Val URL) Export - Return ПолучитьБлокКартинки(Name, URL); -EndFunction - -Function GetFileBlock(Val Name, Val URL) Export - Return ПолучитьБлокФайла(Name, URL); -EndFunction - -Function CreatePersonalNotification(Val URL, Val UserID, Val Text, Val Tag = "", Val Attachments = "", Val Token = "") Export - Return СоздатьПерсональноеУведомление(URL, UserID, Text, Tag, Attachments, Token); -EndFunction - -Function CreateSystemNotification(Val URL, Val UserID, Val Text, Val Tag = "", Val Attachments = "", Val Token = "") Export - Return СоздатьСистемноеУведомление(URL, UserID, Text, Tag, Attachments, Token); -EndFunction - -Function DeleteNotification(Val URL, Val NotificationID, Val Token = "") Export - Return УдалитьУведомление(URL, NotificationID, Token); -EndFunction - -Function CreateDepartment(Val URL, Val Name, Val ParentID = "", Val HeadID = "", Val Token = "") Export - Return СоздатьПодразделение(URL, Name, ParentID, HeadID, Token); -EndFunction - -Function UpdateDepartment(Val URL, Val DepartmentID, Val Name = "", Val ParentID = "", Val HeadID = "", Val Token = "") Export - Return ИзменитьПодразделение(URL, DepartmentID, Name, ParentID, HeadID, Token); -EndFunction - -Function GetDepartments(Val URL, Val DepartmentID = "", Val Name = "", Val ParentID = "", Val HeadID = "", Val Token = "") Export - Return ПолучитьПодразделения(URL, DepartmentID, Name, ParentID, HeadID, Token); -EndFunction - -Function DeleteDepartment(Val URL, Val DepartmentID, Val Token = "") Export - Return УдалитьПодразделение(URL, DepartmentID, Token); -EndFunction - -Function GetCurrentUser(Val URL, Val Token = "") Export - Return ПолучитьТекущегоПользователя(URL, Token); -EndFunction - -Function GetUser(Val URL, Val UserID, Val Token = "") Export - Return ПолучитьПользователя(URL, UserID, Token); -EndFunction - -Function CreateUser(Val URL, Val FieldsStructure, Val Token = "") Export - Return СоздатьПользователя(URL, FieldsStructure, Token); -EndFunction - -Function UpdateUser(Val URL, Val UserID, Val FieldsStructure, Val Token = "") Export - Return ИзменитьПользователя(URL, UserID, FieldsStructure, Token); -EndFunction - -Function ChangeUserStatus(Val URL, Val UserID, Val Fire = True, Val Token = "") Export - Return ИзменитьСтатусПользователя(URL, UserID, Fire, Token); -EndFunction - -Function FindUsers(Val URL, Val FilterStructure, Val Token = "") Export - Return НайтиПользователей(URL, FilterStructure, Token); -EndFunction - -Function GetUserFieldsStructure(Val URL, Val Token = "") Export - Return ПолучитьСтурктуруПользователя(URL, Token); -EndFunction - -Function GetUserFilterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраПользователей(Clear); -EndFunction - -Function CreateLead(Val URL, Val FieldsStructure, Val Token = "") Export - Return СоздатьЛид(URL, FieldsStructure, Token); -EndFunction - -Function DeleteLead(Val URL, Val LeadID, Val Token = "") Export - Return УдалитьЛид(URL, LeadID, Token); -EndFunction - -Function GetLead(Val URL, Val LeadID, Val Token = "") Export - Return ПолучитьЛид(URL, LeadID, Token); -EndFunction - -Function GetLeadsList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "") Export - Return ПолучитьСписокЛидов(URL, Filter, Indent, Token); -EndFunction - -Function UpdateLead(Val URL, Val LeadID, Val FieldsStructure, Val Token = "") Export - Return ИзменитьЛид(URL, LeadID, FieldsStructure, Token); -EndFunction - -Function GetLeadStructure(Val URL, Val Token = "") Export - Return ПолучитьСтруктуруЛида(URL, Token); -EndFunction - -Function GetLeadFilterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраЛидов(Clear); -EndFunction - -Function CreateDeal(Val URL, Val FieldsStructure, Val Token = "") Export - Return СоздатьСделку(URL, FieldsStructure, Token); -EndFunction - -Function DeleteDeal(Val URL, Val DealID, Val Token = "") Export - Return УдалитьСделку(URL, DealID, Token); -EndFunction - -Function GetDeal(Val URL, Val DealID, Val Token = "") Export - Return ПолучитьСделку(URL, DealID, Token); -EndFunction - -Function GetDealsList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "") Export - Return ПолучитьСписокСделок(URL, Filter, Indent, Token); -EndFunction - -Function UpdateDeal(Val URL, Val DealID, Val FieldsStructure, Val Token = "") Export - Return ИзменитьСделку(URL, DealID, FieldsStructure, Token); -EndFunction - -Function GetDealStructure(Val URL, Val Token = "") Export - Return ПолучитьСтруктуруСделки(URL, Token); -EndFunction - -Function GetDealsFilterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраСделок(Clear); -EndFunction - -Function GetCalendarList(Val URL, Val OwnerID, Val Type, Val Token = "") Export - Return ПолучитьСписокКалендарей(URL, OwnerID, Type, Token); -EndFunction - -Function CreateCalendar(Val URL, Val FieldsStructure, Val Token = "") Export - Return СоздатьКалендарь(URL, FieldsStructure, Token); -EndFunction - -Function UpdateCalendar(Val URL, Val CalendarID, Val FieldsStructure, Val Token = "") Export - Return ИзменитьКалендарь(URL, CalendarID, FieldsStructure, Token); -EndFunction - -Function DeleteCalendar(Val URL, Val CalendarID, Val OwnerID, Val Type, Val Token = "") Export - Return УдалитьКалендарь(URL, CalendarID, OwnerID, Type, Token); -EndFunction - -Function GetUserBusy(Val URL, Val Users, Val StartDate, Val EndDate, Val Token = "") Export - Return ПолучитьЗанятостьПользователей(URL, Users, StartDate, EndDate, Token); -EndFunction - -Function GetCustomCalendarSettings(Val URL, Val Token = "") Export - Return ПолучитьПользовательскиеНастройкиКалендаря(URL, Token); -EndFunction - -Function SetCustomCalendarSettings(Val URL, Val SettingsStructure, Val Token = "") Export - Return УстановитьПользовательскиеНастройкиКалендаря(URL, SettingsStructure, Token); -EndFunction - -Function GetCalendarSettingsStructure(Val URL, Val Token = "") Export - Return ПолучитьСтруктуруНастроекКалендаря(URL, Token); -EndFunction - -Function GetCalednarCustomSettingsStructure(Val Clear = False) Export - Return ПолучитьСтруктуруПользовательскихНастроекКаледнаря(Clear); -EndFunction - -Function GetCalendarStructure(Val Clear = False) Export - Return ПолучитьСтруктуруКалендаря(Clear); -EndFunction - -Function CreateCalendarEvent(Val URL, Val EventDescription, Val Token = "") Export - Return СоздатьСобытиеКалендаря(URL, EventDescription, Token); -EndFunction - -Function UpdateCalendarEvent(Val URL, Val EventID, Val EventDescription, Val Token = "") Export - Return ИзменитьСобытиеКалендаря(URL, EventID, EventDescription, Token); -EndFunction - -Function GetCalendarEvent(Val URL, Val EventID, Val Token = "") Export - Return ПолучитьСобытиеКалендаря(URL, EventID, Token); -EndFunction - -Function GetCalendarEvents(Val URL, Val OwnerID, Val Type, Val Filter = "", Val Token = "") Export - Return ПолучитьСобытияКалендарей(URL, OwnerID, Type, Filter, Token); -EndFunction - -Function DeleteCalendarEvent(Val URL, Val EventID, Val Token = "") Export - Return УдалитьСобытиеКалендаря(URL, EventID, Token); -EndFunction - -Function GetUserParticipationStatus(Val URL, Val EventID, Val Token = "") Export - Return ПолучитьСтатусУчастияПользователя(URL, EventID, Token); -EndFunction - -Function SetUserParticipationStatus(Val URL, Val EventID, Val Status, Val Token = "") Export - Return УстановитьСтатусУчастияПользователя(URL, EventID, Status, Token); -EndFunction - -Function GetCalendarEventsStructure(Val Clear = False) Export - Return ПолучитьСтруктуруСобытияКалендаря(Clear); -EndFunction - -Function GetCalendarEventsFilterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраСобытийКалендарей(Clear); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_CDEK.os b/src/ru/OInt/core/Modules/OPI_CDEK.os index ab1eedc370..8ccca0e0d4 100644 --- a/src/ru/OInt/core/Modules/OPI_CDEK.os +++ b/src/ru/OInt/core/Modules/OPI_CDEK.os @@ -1,1463 +1,1334 @@ -// OneScript: ./OInt/core/Modules/OPI_CDEK.os -// Lib: CDEK -// CLI: cdek -// Keywords: cdek - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область ОбщиеМетоды - -// Получить токен -// Получает токен на основе идентификатора аккаунта и пароля -// -// Примечание: -// Метод в документации API: [Авторизация клиентов](@api-docs.cdek.ru/29923918.html) -// -// Параметры: -// Аккаунт - Строка - Идентификатор клиента (Account) - account -// Пароль - Строка - Секретный ключ (Password) - pass -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьТокен(Знач Аккаунт, Знач Пароль, ТестовыйAPI = Ложь) Экспорт - - Строка_ = "Строка"; - - URL = СформироватьURL("/oauth/token", ТестовыйAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("grant_type" , "client_credentials", Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("client_id" , Аккаунт , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("client_secret", Пароль , Строка_, Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, , Ложь); - - Возврат Ответ; - -КонецФункции - -// Получить чеки на дату -// Получает информацию о чеках за указанную дату -// -// Примечание: -// Метод в документации API: [Информация о чеке](@api-docs.cdek.ru/68257388.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// ДатаПолучения - Дата - Дата, за которую необходимо получить данные - date -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьЧекиНаДату(Знач Токен, Знач ДатаПолучения, Знач ТестовыйAPI = Ложь) Экспорт - - URL = СформироватьURL("/check", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("date", ДатаПолучения, "ДатаБезВремени", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить реестры платежей на дату -// Полуает реестры наложенных платежей, по которым клиенту был переведен платеж -// -// Примечание: -// Метод в документации API: [Информация о реестрах наложенных платежей](@api-docs.cdek.ru/107254706.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// ДатаПолучения - Дата - Дата, за которую необходимо получить данные - date -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьРеестрыПлатежейНаДату(Знач Токен, Знач ДатаПолучения, Знач ТестовыйAPI = Ложь) Экспорт - - URL = СформироватьURL("/registries", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("date", ДатаПолучения, "ДатаБезВремени", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить переводы платежей на дату -// Получает информацию о заказах, по которым был переведен наложенны платеж интернет магазину -// -// Примечание: -// Метод в документации API: [Информация о переводе наложенного платежа](@api-docs.cdek.ru/71059888.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// ДатаПолучения - Дата - Дата, за которую необходимо получить данные - date -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьПереводыПлатежейНаДату(Знач Токен, Знач ДатаПолучения, Знач ТестовыйAPI = Ложь) Экспорт - - URL = СформироватьURL("/payment", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("date", ДатаПолучения, "ДатаБезВремени", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список офисов -// Получает список офисов с фильтром или без -// -// Примечание: -// Метод в документации API: [Список офисов](@api-docs.cdek.ru/36982648.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Фильтр - Структура Из КлючИЗначение - Фильтр офисов. См. ПолучитьОписаниеФильтраОфисов - filter -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьСписокОфисов(Знач Токен, Знач Фильтр = "", Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтр); - - URL = СформироватьURL("/deliverypoints", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Фильтр, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список регионов -// Получает список доступных регионов -// -// Примечание: -// Метод в документации API: [Список регионов](@api-docs.cdek.ru/33829418.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Страны - Массив Из Строка - Массив кодов стран в формате ISO_31661_alpha2 для отбора - countries -// Страница - Число - Страница выборки результата - page -// Язык - Строка - Язык: rus, eng, zho - lang -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьСписокРегионов(Знач Токен - , Знач Страны = Неопределено - , Знач Страница = 0 - , Знач Язык = "rus" - , Знач ТестовыйAPI = Ложь) Экспорт - - URL = СформироватьURL("/location/regions", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("country_codes", Страны , "Массив", Параметры); - OPI_Инструменты.ДобавитьПоле("page" , Страница, "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("lang" , Язык , "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить описание фильтра офисов -// Получает пустой макет фильтра получения списка офисов в функции ПолучитьСписокОфисов -// -// Примечание: -// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK -// Описания полей в документации: [Список офисов](@api-docs.cdek.ru/36982648.html) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьОписаниеФильтраОфисов(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураФильтра = Новый Структура; - СтруктураФильтра.Вставить("postal_code" , "<Почтовый индекс города, для которого необходим список офисов>"); - СтруктураФильтра.Вставить("city_code" , "<Код населенного пункта СДЭК>"); - СтруктураФильтра.Вставить("type" , "<Тип офиса: PVZ, POSTAMAT, ALL>"); - СтруктураФильтра.Вставить("country_code" , "<Код страны в формате ISO_3166-1_alpha-2>"); - СтруктураФильтра.Вставить("region_code" , "<Код региона по базе СДЭК>"); - СтруктураФильтра.Вставить("have_cashless" , "<Наличие терминала оплаты>"); - СтруктураФильтра.Вставить("have_cash" , "<Есть прием наличных>"); - СтруктураФильтра.Вставить("allowed_cod" , "<Разрешен наложенный платеж>"); - СтруктураФильтра.Вставить("is_dressing_room", "<Наличие примерочной>"); - СтруктураФильтра.Вставить("weight_max" , "<Максимальный вес в кг, который может принять офис>"); - СтруктураФильтра.Вставить("weight_min" , "<Минимальный вес в кг, который принимает офис>"); - СтруктураФильтра.Вставить("lang" , "<Локализация офиса>"); - СтруктураФильтра.Вставить("take_only" , "<Является ли офис только пунктом выдачи>"); - СтруктураФильтра.Вставить("is_handout" , "<Является пунктом выдачи>"); - СтруктураФильтра.Вставить("is_reception" , "<Есть ли в офисе приём заказов>"); - СтруктураФильтра.Вставить("fias_guid" , "<Код города ФИАС>"); - СтруктураФильтра.Вставить("code" , "<Код ПВЗ>"); - СтруктураФильтра.Вставить("is_ltl" , "<Работает ли офис с LTL>"); - СтруктураФильтра.Вставить("fulfillment" , "<Работает ли офис с Фулфилмент.Приход>"); - СтруктураФильтра.Вставить("size" , "<Ограничение выборки результата>"); - СтруктураФильтра.Вставить("page" , "<Номер страницы выборки результата>"); - - Если Пустая Тогда - СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураФильтра; - -КонецФункции - -#КонецОбласти - -#Область РаботаСЗаказми - -// Создать заказ -// Создает заказ по описанию полей -// -// Примечание: -// Метод в документации API: [Регистрация заказа](@api-docs.cdek.ru/29923926.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// ОписаниеЗаказа - Структура Из КлючИЗначение - Набор полей заказа. См. ПолучитьОписаниеЗаказа - order -// ИнтернетМагазин - Булево - Признак типа заказа Интернет магазин - ostore -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция СоздатьЗаказ(Знач Токен, Знач ОписаниеЗаказа, Знач ИнтернетМагазин = Ложь, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаказа); - OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин); - - URL = СформироватьURL("/orders", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - OPI_Инструменты.ДобавитьПоле("type", ?(ИнтернетМагазин, 1, 2), "Число", ОписаниеЗаказа); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, ОписаниеЗаказа, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Изменить заказ -// Изменяет значения полей выбранного заказа -// -// Примечание: -// Метод в документации API: [Изменение заказа](@api-docs.cdek.ru/36981178.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заказа для изменение - uuid -// ОписаниеЗаказа - Структура Из КлючИЗначение - Набор изменяемых полей заказа - order -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ИзменитьЗаказ(Знач Токен, Знач UUID, Знач ОписаниеЗаказа, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаказа); - - URL = СформироватьURL("/orders", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - OPI_Инструменты.ДобавитьПоле("uuid", UUID, "Строка", ОписаниеЗаказа); - - Ответ = OPI_ЗапросыHTTP.PatchСТелом(URL, ОписаниеЗаказа, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Удалить заказ -// Удаляет заказ по UUID -// -// Примечание: -// Метод в документации API: [Удаление заказа](@api-docs.cdek.ru/29924487.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заказа для удаления - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция УдалитьЗаказ(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - - URL = СформироватьURL("/orders/" + UUID, ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Delete(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить заказ -// Получает заказ по UUID -// -// Примечание: -// Метод в документации API: [Информация о заказе](@api-docs.cdek.ru/29923975.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заказа - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьЗаказ(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - - URL = СформироватьURL("/orders/" + UUID, ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить заказ по номеру -// Получает заказ по номеру СДЭК или внутреннему номеру клиента -// -// Примечание: -// Метод в документации API: [Информация о заказе](@api-docs.cdek.ru/29923975.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// НомерЗаказа - Строка - Номер заказа - number -// Внутренний - Булево - Вид номера заказа. Истина > номер в базе клиента, Ложь > номер СДЭК - internal -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьЗаказПоНомеру(Знач Токен, Знач НомерЗаказа, Знач Внутренний = Ложь, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Внутренний); - - URL = СформироватьURL("/orders", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - ИмяПараметра = ?(Внутренний, "im_number", "cdek_number"); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле(ИмяПараметра, НомерЗаказа, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Оформить клиентский возврат -// Оформляет клиентский возврат для заказа интернет магазина -// -// Примечание: -// Этот метод используется в случае, если прямой заказ доставлялся СДЭК и получатель хочет вернуть его полностью -// Если заказ доставлялся другой службой, либо нужно вернуть не все товары, то необходимо использовать метод СоздатьЗаказ с is_client_return = true -// Метод в документации API: [Клиентские возвраты](@api-docs.cdek.ru/122762174.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заказа - uuid -// Тариф - Число - Код тарифа (из доступных по договору) - tariff -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ОформитьКлиентскийВозврат(Знач Токен, Знач UUID, Знач Тариф, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - - URL = СформироватьURL("/orders/" + UUID + "/clientReturn", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("tariff_code", Тариф, "Число", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Создать отказ -// Создает отказ по заказу для возврата в интернет магазин -// -// Примечание: -// Метод в документации API: [Регистрация отказа](@api-docs.cdek.ru/55327658.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заказа - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция СоздатьОтказ(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - - URL = СформироватьURL("/orders/" + UUID + "/refusal", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Сформировать квитанцию -// Формирует квитанции в формате pdf к заказам -// -// Примечание: -// Доступные типы (языки) квитанций: tpl_china, tpl_armenia, tpl_russia, tpl_english, tpl_italian, tpl_korean, tpl_latvian, tpl_lithuanian, tpl_german, tpl_turkish, tpl_czech, tpl_thailand, tpl_invoice -// Рекомендуется указывать не менее 2 копий на листе (параметр КопийНаЛисте): одна приклеивается на груз, вторая остается у отправителя -// Метод в документации API: [Формирование квитанции к заказу](@api-docs.cdek.ru/36967276.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// МассивUUID - Строка, Массив Из Строка - Один или массив UUID заказов - uuids -// Тип - Строка - Тип (язык) квитанции - type -// КопийНаЛисте - Число - Число копий одной квитанции на листе - count -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция СформироватьКвитанцию(Знач Токен - , Знач МассивUUID - , Знач Тип = "tpl_russia" - , Знач КопийНаЛисте = 2 - , Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьМассив(МассивUUID); - - URL = СформироватьURL("/print/orders", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - МассивЗаказов = Новый Массив; - - Для Каждого UUID Из МассивUUID Цикл - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - МассивЗаказов.Добавить(Новый Структура("order_uuid", UUID)); - - КонецЦикла; - - OPI_Инструменты.ДобавитьПоле("orders" , МассивЗаказов, "Массив", Параметры); - OPI_Инструменты.ДобавитьПоле("copy_count", КопийНаЛисте , "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("type" , Тип , "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить квитанцию -// Получает квитанцию к заказу -// -// Примечание: -// Квитанция должна быть предварительно создана. См. СформироватьКвитанцию -// Ссылка на файл с квитанцией к заказам доступна в течение 1 часа -// Метод в документации API: [Получение квитанции к заказу](@api-docs.cdek.ru/36967287.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID квитанции, полученный при ее формировании - uuid -// ПолучитьФайл - Булево - Истина > будут получены сразу данные PDF файла, Ложь > ответ сервера CDEK - getfile -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение, ДвоичныеДанные - сериализованный JSON ответа от CDEK или PDF файл -Функция ПолучитьКвитанцию(Знач Токен, Знач UUID, Знач ПолучитьФайл = Ложь, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - OPI_ПреобразованиеТипов.ПолучитьБулево(ПолучитьФайл); - - URL = СформироватьURL("/print/orders/" + UUID, ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Если ПолучитьФайл Тогда - - Содержимое = Ответ["entity"]; - - Если Не ЗначениеЗаполнено(Содержимое) Тогда - Возврат Ответ; - КонецЕсли; - - URL = Содержимое["url"]; - - Если Не ЗначениеЗаполнено(URL) Тогда - Возврат Ответ; - КонецЕсли; - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - КонецЕсли; - - Возврат Ответ; - -КонецФункции - -// Сформировать штрихкод -// Формирует штрихкод места в формате PDF для заказов -// -// Примечание: -// Метод в документации API: [Формирование ШК места к заказу](@api-docs.cdek.ru/36967295.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// МассивUUID - Строка, Массив Из Строка - Один или массив UUID заказов - uuids -// Копий - Число - Число копий - count -// Формат - Строка - Формат печати: A4, A5, A6, A7 - format -// Язык - Строка - Язык штрихкода: RUS, ENG - lang -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция СформироватьШтрихкод(Знач Токен - , Знач МассивUUID - , Знач Копий = 1 - , Знач Формат = "A4" - , Знач Язык = "RUS" - , Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьМассив(МассивUUID); - - URL = СформироватьURL("/print/barcodes", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - МассивЗаказов = Новый Массив; - - Для Каждого UUID Из МассивUUID Цикл - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - МассивЗаказов.Добавить(Новый Структура("order_uuid", UUID)); - - КонецЦикла; - - OPI_Инструменты.ДобавитьПоле("orders" , МассивЗаказов, "Массив", Параметры); - OPI_Инструменты.ДобавитьПоле("copy_count", Копий , "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("format" , Формат , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("lang" , Язык , "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить штрихкод -// Получает штрихкод места к заказу -// -// Примечание: -// Штрихкод должен быть предварительно создан. См. СформироватьШтрихкод -// Ссылка на файл с ШК местом к заказам доступна в течение 1 часа -// Метод в документации API: [Получение ШК места к заказу](@api-docs.cdek.ru/36967298.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID штрихкода, полученный при его формировании - uuid -// ПолучитьФайл - Булево - Истина > будут получены сразу данные PDF файла, Ложь > ответ сервера CDEK - getfile -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение, ДвоичныеДанные - сериализованный JSON ответа от CDEK или PDF файл -Функция ПолучитьШтрихкод(Знач Токен, Знач UUID, Знач ПолучитьФайл = Ложь, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - OPI_ПреобразованиеТипов.ПолучитьБулево(ПолучитьФайл); - - URL = СформироватьURL("/print/barcodes/" + UUID, ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Если ПолучитьФайл Тогда - - Содержимое = Ответ["entity"]; - - Если Не ЗначениеЗаполнено(Содержимое) Тогда - Возврат Ответ; - КонецЕсли; - - URL = Содержимое["url"]; - - Если Не ЗначениеЗаполнено(URL) Тогда - Возврат Ответ; - КонецЕсли; - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - КонецЕсли; - - Возврат Ответ; - -КонецФункции - -// Создать преалерт -// Создает преалерт для списка заказов -// -// Примечание: -// Метод в документации API: [Регистрация преалерта](@api-docs.cdek.ru/78934763.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// МассивUUID - Строка, Массив Из Строка - Один или массив UUID заказов - uuids -// ДатаПередачи - Дата - Планируемая дата передачи заказов в СДЭК - date -// ПВЗ - Строка - Код ПВЗ, в который планируется передать заказы - point -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция СоздатьПреалерт(Знач Токен, Знач МассивUUID, Знач ДатаПередачи, Знач ПВЗ, Знач ТестовыйAPI = Ложь) Экспорт - - Planned_date_ = "planned_date"; - - OPI_ПреобразованиеТипов.ПолучитьМассив(МассивUUID); - - URL = СформироватьURL("/prealert", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - МассивЗаказов = Новый Массив; - - Для Каждого UUID Из МассивUUID Цикл - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - МассивЗаказов.Добавить(Новый Структура("order_uuid", UUID)); - - КонецЦикла; - - OPI_Инструменты.ДобавитьПоле("orders" , МассивЗаказов, "Массив" , Параметры); - OPI_Инструменты.ДобавитьПоле(Planned_date_ , ДатаПередачи , "ДатаISO" , Параметры); - OPI_Инструменты.ДобавитьПоле("shipment_point", ПВЗ , "Строка" , Параметры); - - Параметры[Planned_date_] = Параметры[Planned_date_] + "+0000"; - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить преалерт -// Получает ранее созданны преалерт -// -// Примечание: -// Преалерт должен быть предварительно создан. См. СоздатьПреалерт -// Метод в документации API: [Информация о преалерте](@api-docs.cdek.ru/78934799.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID преалерта - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьПреалерт(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - - URL = СформироватьURL("/prealert/" + UUID, ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить статус паспортных данных -// Получает информацию о статусе обработки паспортных данных для международных заказов -// -// Примечание: -// Метод в документации API: [Информация о паспортных данных](@api-docs.cdek.ru/55343091.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заказа - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьСтатусПаспортныхДанных(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - URL = СформироватьURL("/passport", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("order_uuid", UUID, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить чек заказа -// Получает информацию о чеке по заказу -// -// Примечание: -// Метод в документации API: [Информация о чеке](@api-docs.cdek.ru/68257388.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заказа - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьЧекЗаказа(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - URL = СформироватьURL("/check", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("order_uuid", UUID, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить описание заказа -// Получает макет для создания заказа в функции СоздатьЗаказ -// -// Примечание: -// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK -// Описания полей в документации: [Регистрация заказа](@api-docs.cdek.ru/29923926.html) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// ТолькоОбязательные - Булево - Истина > в макете будут только обязательные поля - required -// ИнтернетМагазин - Булево - Признак включения в макет полей исключительно для заказо Интернет магазина - ostore -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьОписаниеЗаказа(Знач Пустая = Ложь, Знач ТолькоОбязательные = Ложь, Знач ИнтернетМагазин = Ложь) Экспорт - - // BSLLS:DuplicateStringLiteral-off - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - OPI_ПреобразованиеТипов.ПолучитьБулево(ТолькоОбязательные); - OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин); - - СтруктураЗаказа = Новый Структура; - - СтруктураЗаказа.Вставить("tariff_code" , "<Код тарифа (подробнее см. приложение 1)>"); - - СтруктураПолучателя = Новый Структура; - СтруктураПолучателя.Вставить("company" , "<Название компании>"); - СтруктураПолучателя.Вставить("name" , "<ФИО контактного лица>"); - СтруктураПолучателя.Вставить("passport_series" , "<Серия паспорта>"); - СтруктураПолучателя.Вставить("passport_number" , "<Номер паспорта>"); - СтруктураПолучателя.Вставить("passport_date_of_issue", "<Дата выдачи паспорта>"); - СтруктураПолучателя.Вставить("passport_organization" , "<Орган выдачи паспорта>"); - СтруктураПолучателя.Вставить("tin" , "<ИНН>"); - СтруктураПолучателя.Вставить("passport_date_of_birth", "<Дата рождения>"); - СтруктураПолучателя.Вставить("email" , ""); - СтруктураПолучателя.Вставить("contragent_type" , "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL >"); - - МассивТелефонов = Новый Массив; - СтруктураТелефона = Новый Структура; - - СтруктураТелефона.Вставить("number" , "<Номер телефона>"); - СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>"); - - МассивТелефонов.Добавить(СтруктураТелефона); - - СтруктураПолучателя.Вставить("phones", МассивТелефонов); - - СтруктураЗаказа.Вставить("recipient", СтруктураПолучателя); - - МассивУпаковок = Новый Массив; - СтруктураУпаковки = Новый Структура; - - СтруктураУпаковки.Вставить("number" , "<Номер упаковки>"); - СтруктураУпаковки.Вставить("weight" , "<Общий вес (в граммах)>"); - СтруктураУпаковки.Вставить("length" , "<Габариты упаковки. Длина (в сантиметрах)>"); - СтруктураУпаковки.Вставить("width" , "<Габариты упаковки. Ширина (в сантиметрах)>"); - СтруктураУпаковки.Вставить("height" , "<Габариты упаковки. Высота (в сантиметрах)>"); - СтруктураУпаковки.Вставить("comment", "<Комментарий к упаковке>"); - - МассивПозиций = Новый Массив; - СтруктураПозиции = Новый Структура; - - СтруктураПозиции.Вставить("name" , "<Наименование товара>"); - СтруктураПозиции.Вставить("ware_key", "<Идентификатор/артикул товара>"); - СтруктураПозиции.Вставить("marking" , "<Маркировка товара>"); - - СтруктураОплаты = Новый Структура; - СтруктураОплаты.Вставить("value" , "<Сумма наложенного платежа, в том числе и НДС>"); - СтруктураОплаты.Вставить("vat_sum" , "<Сумма НДС>"); - СтруктураОплаты.Вставить("vat_rate", "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>"); - - СтруктураПозиции.Вставить("payment" , СтруктураОплаты); - СтруктураПозиции.Вставить("cost" , "<Объявленная стоимость товара>"); - СтруктураПозиции.Вставить("weight" , "<Вес (за единицу товара, в граммах)>"); - СтруктураПозиции.Вставить("weight_gross", "<Вес брутто>"); - СтруктураПозиции.Вставить("amount" , "<Количество единиц товара (в штуках)>"); - СтруктураПозиции.Вставить("name_i18n" , "<Наименование на иностранном языке>"); - СтруктураПозиции.Вставить("brand" , "<Бренд на иностранном языке>"); - СтруктураПозиции.Вставить("country_code", "<Код страны производителя товара ISO_3166-1_alpha-2>"); - СтруктураПозиции.Вставить("material" , "<Код материала>"); - СтруктураПозиции.Вставить("wifi_gsm" , "<Содержит wifi или gsm>"); - СтруктураПозиции.Вставить("url" , "<Ссылка на сайт интернет-магазина с описанием товара>"); - - МассивПозиций.Добавить(СтруктураПозиции); - - СтруктураУпаковки.Вставить("items", МассивПозиций); - МассивУпаковок.Добавить(СтруктураУпаковки); - - СтруктураЗаказа.Вставить("packages", МассивУпаковок); - - Если Не ТолькоОбязательные Тогда - - СтруктураЗаказа.Вставить("additional_order_types" , "<Дополнительный тип заказа>"); - СтруктураЗаказа.Вставить("comment" , "<Комментарий к заказу>"); - СтруктураЗаказа.Вставить("developer_key" , "<Ключ разработчика (для разработчиков модулей)>"); - СтруктураЗаказа.Вставить("shipment_point" , "<Код ПВЗ СДЭК для самостоятельного привоза клиентом>"); - СтруктураЗаказа.Вставить("delivery_point" , "<Код офиса СДЭК, на который будет доставлена посылка>"); - СтруктураЗаказа.Вставить("date_invoice" , "<Дата инвойса>"); - СтруктураЗаказа.Вставить("shipper_name" , "<Грузоотправитель>"); - СтруктураЗаказа.Вставить("shipper_address" , "<Адрес грузоотправителя>"); - - СтруктураОтправителя = Новый Структура; - СтруктураОтправителя.Вставить("company" , "<Название компании>"); - СтруктураОтправителя.Вставить("name" , "<ФИО контактного лица>"); - СтруктураОтправителя.Вставить("email" , ""); - СтруктураОтправителя.Вставить("passport_series" , "<Серия паспорта>"); - СтруктураОтправителя.Вставить("passport_number" , "<Номер паспорта>"); - СтруктураОтправителя.Вставить("passport_date_of_issue" , "<Дата выдачи паспорта>"); - СтруктураОтправителя.Вставить("passport_organization" , "<Орган выдачи паспорта>"); - СтруктураОтправителя.Вставить("tin" , "<ИНН>"); - СтруктураОтправителя.Вставить("passport_date_of_birth" , "<Дата рождения>"); - СтруктураОтправителя.Вставить("contragent_type" , "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL>"); - - МассивТелефонов = Новый Массив; - СтруктураТелефона = Новый Структура; - - СтруктураТелефона.Вставить("number" , "<Номер телефона>"); - СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>"); - - МассивТелефонов.Добавить(СтруктураТелефона); - - СтруктураОтправителя.Вставить("phones", МассивТелефонов); - - СтруктураЗаказа.Вставить("sender", СтруктураОтправителя); - - СтруктураАдреса = Новый Структура; - СтруктураАдреса.Вставить("code" , "<Код населенного пункта СДЭК>"); - СтруктураАдреса.Вставить("fias_guid" , "<Уникальный идентификатор ФИАС>"); - СтруктураАдреса.Вставить("postal_code" , "<Почтовый индекс>"); - СтруктураАдреса.Вставить("longitude" , "<Долгота>"); - СтруктураАдреса.Вставить("latitude" , "<Широта>"); - СтруктураАдреса.Вставить("country_code", "<Код страны в формате ISO_3166-1_alpha-2>"); - СтруктураАдреса.Вставить("region" , "<Название региона, уточняющий параметр для поля city>"); - СтруктураАдреса.Вставить("region_code" , "<Код региона СДЭК, уточняющий параметр для поля city>"); - СтруктураАдреса.Вставить("sub_region" , "<Название района региона, уточняющий параметр для поля region>"); - СтруктураАдреса.Вставить("city" , "<Название города, уточняющий параметр для postal_code>"); - СтруктураАдреса.Вставить("kladr_code" , "<Код КЛАДР>"); - СтруктураАдреса.Вставить("address" , "<Строка адреса >"); - - СтруктураЗаказа.Вставить("from_location", СтруктураАдреса); - СтруктураЗаказа.Вставить("to_location" , СтруктураАдреса); - - СтруктураУслуги = Новый Структура; - СтруктураУслуги.Вставить("code" , "<Тип дополнительной услуги>"); - СтруктураУслуги.Вставить("parameter", "<Параметр дополнительной услуги>"); - - СтруктураЗаказа.Вставить("services" , СтруктураУслуги); - СтруктураЗаказа.Вставить("print" , "<Необходимость сформировать печатную форму>"); - СтруктураЗаказа.Вставить("is_client_return" , "<Клиентский возврат>"); - СтруктураЗаказа.Вставить("accompanying_number", "<Номер сопроводительной накладной>"); - СтруктураЗаказа.Вставить("widget_token" , "<Токен, полученный от widget.cdek.ru>"); - - Если ИнтернетМагазин Тогда - - СтруктураЗаказа.Вставить("number", "<Номер заказа в ИС Клиента (uuid, если не заполнено)>"); - - СтруктураСбора = Новый Структура; - СтруктураСбора.Вставить("value" , "<Сумма дополнительного сбора (в том числе и НДС)>"); - СтруктураСбора.Вставить("vat_sum" , "<Сумма НДС>"); - СтруктураСбора.Вставить("vat_rate", "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>"); - - СтруктураЗаказа.Вставить("delivery_recipient_cost", СтруктураСбора); - - МассивПорогов = Новый Массив; - СтруктураПорога = Новый Структура; - - СтруктураПорога.Вставить("threshold", "<Порог стоимости товара в целых единицах валюты>"); - СтруктураПорога.Вставить("sum" , "<Доп. сбор за доставку товаров, общая стоимость которых в интервале>"); - СтруктураПорога.Вставить("vat_sum" , "<Сумма НДС, включённая в доп. сбор за доставку>"); - СтруктураПорога.Вставить("vat_rate" , "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>"); - - МассивПорогов.Добавить(СтруктураПорога); - - СтруктураЗаказа.Вставить("delivery_recipient_cost_adv", МассивПорогов); - - СтруктураПродавца = Новый Структура; - СтруктураПродавца.Вставить("name" , "<Наименование истинного продавца>"); - СтруктураПродавца.Вставить("inn" , "<ИНН истинного продавца>"); - СтруктураПродавца.Вставить("phone" , "<Телефон истинного продавца>"); - СтруктураПродавца.Вставить("ownership_form", "<Код формы собственности>"); - СтруктураПродавца.Вставить("address" , "<Адрес истинного продавца>"); - - СтруктураЗаказа.Вставить("seller", СтруктураПродавца); - - КонецЕсли; - - КонецЕсли; - - Если Пустая Тогда - СтруктураЗаказа = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураЗаказа); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураЗаказа; - - // BSLLS:DuplicateStringLiteral-on - -КонецФункции - -#КонецОбласти - -#Область УправлениеДоставкой - -// Получить доступные интервалы доставки -// Получает доступные интервалы доставки для заказа -// -// Примечание: -// Метод в документации API: [Получение интервалов доставки](@api-docs.cdek.ru/154160502.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заказа - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьДоступныеИнтервалыДоставки(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - URL = СформироватьURL("/delivery/intervals", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("order_uuid", UUID, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Создать заявку на вызов курьера -// Создает новую заявку на вызов курьера для забора груза -// -// Примечание: -// Метод в документации API: [Регистрация отказа](@api-docs.cdek.ru/55327658.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// ОписаниеЗаявки - Структура Из КлючИЗначение - Описание заявки. См. ПолучитьОписаниеЗаявкиКурьера - intake -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция СоздатьЗаявкуНаВызовКурьера(Знач Токен, Знач ОписаниеЗаявки, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаявки); - - URL = СформироватьURL("/intakes", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, ОписаниеЗаявки, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить заявку на вызов курьера -// Получает заявку на вызов курьера по UUID -// -// Примечание: -// Заявка должна быть предварительно создана. См. СоздатьЗаявкуНаВызовКурьера -// Метод в документации API: [Информация о заявке](@api-docs.cdek.ru/29948360.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заявки - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьЗаявкуНаВызовКурьера(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - - URL = СформироватьURL("/intakes/" + UUID, ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Удалить заявку на вызов курьера -// -// Примечание: -// Метод в документации API: [Удаление заявки](@api-docs.cdek.ru/29948379.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID заявки для удаления - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция УдалитьЗаявкуНаВызовКурьера(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - - URL = СформироватьURL("/intakes/" + UUID, ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Delete(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Зафиксировать договоренность о доставке -// Фиксирует оговоренные с клиентом дату, время и адрес доставки -// -// Примечание: -// Метод в документации API: [Регистрация договоренности о доставке](@api-docs.cdek.ru/36981338.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Договоренность - Структура Из КлючИЗначение - Описание договоренности. См. ПолучитьОписаниеДоговоренности - appt -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ЗафиксироватьДоговоренностьОДоставке(Знач Токен, Знач Договоренность, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Договоренность); - - URL = СформироватьURL("/delivery", ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Договоренность, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить договоренность о доставке -// Получает информацию об оговоренных с клиентом дате, времени и адресе доставки -// -// Примечание: -// Договоренность должна быть предварительно создана. См. ЗафиксироватьДоговоренностьОДоставке -// Метод в документации API: [Информация о договоренности о доставке](@api-docs.cdek.ru/36981626.html) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// UUID - Строка - UUID договоренности - uuid -// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK -Функция ПолучитьДоговоренностьОДоставке(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); - - URL = СформироватьURL("/delivery/" + UUID, ТестовыйAPI); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить описание заявки курьера -// Получает макет для создания заявки на вызов курьера в функции СоздатьЗаявкуНаВызовКурьера -// -// Примечание: -// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK -// Описания полей в документации: [Регистрация заявки на вызов курьера](@api-docs.cdek.ru/29925274.html) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// ТолькоОбязательные - Булево - Истина > в макете будут только обязательные поля - required -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьОписаниеЗаявкиКурьера(Знач Пустая = Ложь, Знач ТолькоОбязательные = Ложь) Экспорт - - // BSLLS:DuplicateStringLiteral-off - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - OPI_ПреобразованиеТипов.ПолучитьБулево(ТолькоОбязательные); - - СтруктураЗаявки = Новый Структура; - - СтруктураЗаявки.Вставить("intake_date" , "<Дата ожидания курьера>"); - СтруктураЗаявки.Вставить("intake_time_from" , "<Время начала ожидания курьера>"); - СтруктураЗаявки.Вставить("intake_time_to" , "<Время окончания ожидания курьера>"); - - Если Не ТолькоОбязательные Тогда - - СтруктураЗаявки.Вставить("cdek_number" , "<Номер заказа СДЭК>"); - СтруктураЗаявки.Вставить("order_uuid" , "<Идентификатор заказа в ИС СДЭК>"); - СтруктураЗаявки.Вставить("lunch_time_from" , "<Время начала обеда>"); - СтруктураЗаявки.Вставить("lunch_time_to" , "<Время окончания обеда>"); - СтруктураЗаявки.Вставить("name" , "<Описание груза>"); - СтруктураЗаявки.Вставить("weight" , "<Общий вес (в граммах)>"); - СтруктураЗаявки.Вставить("length" , "<Габариты упаковки. Длина (в сантиметрах)>"); - СтруктураЗаявки.Вставить("width" , "<Габариты упаковки. Ширина (в сантиметрах)>"); - СтруктураЗаявки.Вставить("height" , "<Габариты упаковки. Высота (в сантиметрах)>"); - СтруктураЗаявки.Вставить("comment" , "<Комментарий к заявке для курьера>"); - СтруктураЗаявки.Вставить("need_call" , "<Необходим прозвон отправителя>"); - СтруктураЗаявки.Вставить("courier_power_of_attorney", "<Курьеру необходима доверенность>"); - СтруктураЗаявки.Вставить("courier_identity_card" , "<Курьеру необходим документ удостоверяющий личность>"); - - СтруктураОтправителя = Новый Структура; - СтруктураОтправителя.Вставить("company" , "<Название компании отправителя>"); - СтруктураОтправителя.Вставить("name" , "<ФИО контактного лица>"); - СтруктураОтправителя.Вставить("contragent_type", "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL>"); - - МассивТелефонов = Новый Массив; - - СтруктураТелефона = Новый Структура; - СтруктураТелефона.Вставить("number" , "<Номер телефона>"); - СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>"); - - МассивТелефонов.Добавить(СтруктураТелефона); - - СтруктураОтправителя.Вставить("phones", МассивТелефонов); - - СтруктураЗаявки.Вставить("sender" , СтруктураОтправителя); - - СтруктураАдресаОтправления = Новый Структура; - СтруктураАдресаОтправления.Вставить("code" , "<Код населенного пункта СДЭК>"); - СтруктураАдресаОтправления.Вставить("fias_guid" , "<Уникальный идентификатор ФИАС>"); - СтруктураАдресаОтправления.Вставить("postal_code" , "<Почтовый индекс>"); - СтруктураАдресаОтправления.Вставить("longitude" , "<Долгота>"); - СтруктураАдресаОтправления.Вставить("latitude" , "<Широта>"); - СтруктураАдресаОтправления.Вставить("country_code", "<Код страны>"); - СтруктураАдресаОтправления.Вставить("region" , "<Название региона, уточняющий параметр для поля city>"); - СтруктураАдресаОтправления.Вставить("region_code" , "<Код региона СДЭК, уточняющий параметр для поля city>"); - СтруктураАдресаОтправления.Вставить("sub_region" , "<Название района региона, уточняющий параметр для поля region>"); - СтруктураАдресаОтправления.Вставить("city" , "<Название города, уточняющий параметр для postal_code>"); - СтруктураАдресаОтправления.Вставить("kladr_code" , "<Код КЛАДР. Устаревшее поле>"); - СтруктураАдресаОтправления.Вставить("address" , "<Строка адреса>"); - - СтруктураЗаявки.Вставить("from_location" , СтруктураАдресаОтправления); - - КонецЕсли; - - Если Пустая Тогда - СтруктураЗаявки = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураЗаявки); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураЗаявки; - - // BSLLS:DuplicateStringLiteral-on - -КонецФункции - -// Получить описание договоренности -// Получает макет для создания о доставке в функции ЗафиксироватьДоговоренностьОДоставке -// -// Примечание: -// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK -// Описания полей в документации: [Регистрация договоренности о доставке](@api-docs.cdek.ru/36981338.html) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// ТолькоОбязательные - Булево - Истина > в макете будут только обязательные поля - required -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьОписаниеДоговоренности(Знач Пустая = Ложь, Знач ТолькоОбязательные = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - OPI_ПреобразованиеТипов.ПолучитьБулево(ТолькоОбязательные); - - СтруктураДоговоренности = Новый Структура; - - СтруктураДоговоренности.Вставить("date", "<Дата доставки, согласованная с получателем>"); - - Если Не ТолькоОбязательные Тогда - - СтруктураДоговоренности.Вставить("cdek_number" , "<Номер заказа СДЭК>"); - СтруктураДоговоренности.Вставить("order_uuid" , "<Идентификатор заказа в ИС СДЭК>"); - СтруктураДоговоренности.Вставить("time_from" , "<Время доставки С, согласованное с получателем>"); - СтруктураДоговоренности.Вставить("time_to" , "<Время доставки ПО, согласованное с получателем>"); - СтруктураДоговоренности.Вставить("comment" , "<Комментарий>"); - СтруктураДоговоренности.Вставить("delivery_point", "<Буквенно-цифровой код ПВЗ СДЭК>"); - - СтруктураАдресаДоставки = Новый Структура; - СтруктураАдресаДоставки.Вставить("code" , "<Код населенного пункта СДЭК>"); - СтруктураАдресаДоставки.Вставить("fias_guid" , "<Уникальный идентификатор ФИАС>"); - СтруктураАдресаДоставки.Вставить("postal_code" , "<Почтовый индекс>"); - СтруктураАдресаДоставки.Вставить("longitude" , "<Долгота>"); - СтруктураАдресаДоставки.Вставить("latitude" , "<Широта>"); - СтруктураАдресаДоставки.Вставить("country_code", "<Код страны в формате ISO_3166-1_alpha-2>"); - СтруктураАдресаДоставки.Вставить("region" , "<Название региона>"); - СтруктураАдресаДоставки.Вставить("region_code" , "<Код региона>"); - СтруктураАдресаДоставки.Вставить("sub_region" , "<Название района региона>"); - СтруктураАдресаДоставки.Вставить("city" , "<Название города>"); - СтруктураАдресаДоставки.Вставить("kladr_code" , "<Код КЛАДР>"); - СтруктураАдресаДоставки.Вставить("address" , "<Строка адреса>"); - - СтруктураДоговоренности.Вставить("to_location", СтруктураАдресаДоставки); - - КонецЕсли; - - Если Пустая Тогда - СтруктураДоговоренности = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураДоговоренности); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураДоговоренности; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция СформироватьURL(Знач Метод, Знач ТестовыйAPI) - - OPI_ПреобразованиеТипов.ПолучитьБулево(ТестовыйAPI); - - Если ТестовыйAPI Тогда - URL = "https://api.edu.cdek.ru/v2"; - Иначе - URL = "https://api.cdek.ru/v2"; - КонецЕсли; - - URL = URL + Метод; - - Возврат URL; - -КонецФункции - -Функция СоздатьЗаголовкиЗапроса(Знач Токен) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - - Заголовки = Новый Соответствие; - Заголовки.Вставить("Authorization", "Bearer " + Токен); - Возврат Заголовки; - -КонецФункции - -#КонецОбласти - - -#Region Alternate - -Function GetToken(Val Account, Val Password, TestAPI = False) Export - Return ПолучитьТокен(Account, Password, TestAPI); -EndFunction - -Function GetCashboxChecksByDate(Val Token, Val ReceivingDate, Val TestAPI = False) Export - Return ПолучитьЧекиНаДату(Token, ReceivingDate, TestAPI); -EndFunction - -Function GetDeliveryCashRegistry(Val Token, Val ReceivingDate, Val TestAPI = False) Export - Return ПолучитьРеестрыПлатежейНаДату(Token, ReceivingDate, TestAPI); -EndFunction - -Function GetDeliveryCashTransfers(Val Token, Val ReceivingDate, Val TestAPI = False) Export - Return ПолучитьПереводыПлатежейНаДату(Token, ReceivingDate, TestAPI); -EndFunction - -Function GetOfficeList(Val Token, Val Filter = "", Val TestAPI = False) Export - Return ПолучитьСписокОфисов(Token, Filter, TestAPI); -EndFunction - -Function GetRegionsList(Val Token, Val Countrues = Undefined, Val Page = 0, Val Lang = "rus", Val TestAPI = False) Export - Return ПолучитьСписокРегионов(Token, Countrues, Page, Lang, TestAPI); -EndFunction - -Function GetOfficeFilterDescription(Val Clear = False) Export - Return ПолучитьОписаниеФильтраОфисов(Clear); -EndFunction - -Function CreateOrder(Val Token, Val OrderDescription, Val OnlineStore = False, Val TestAPI = False) Export - Return СоздатьЗаказ(Token, OrderDescription, OnlineStore, TestAPI); -EndFunction - -Function UpdateOrder(Val Token, Val UUID, Val OrderDescription, Val TestAPI = False) Export - Return ИзменитьЗаказ(Token, UUID, OrderDescription, TestAPI); -EndFunction - -Function DeleteOrder(Val Token, Val UUID, Val TestAPI = False) Export - Return УдалитьЗаказ(Token, UUID, TestAPI); -EndFunction - -Function GetOrder(Val Token, Val UUID, Val TestAPI = False) Export - Return ПолучитьЗаказ(Token, UUID, TestAPI); -EndFunction - -Function GetOrderByNumber(Val Token, Val OrderNumber, Val Internal = False, Val TestAPI = False) Export - Return ПолучитьЗаказПоНомеру(Token, OrderNumber, Internal, TestAPI); -EndFunction - -Function CreateCustomerRefund(Val Token, Val UUID, Val Tariff, Val TestAPI = False) Export - Return ОформитьКлиентскийВозврат(Token, UUID, Tariff, TestAPI); -EndFunction - -Function CreateRefusal(Val Token, Val UUID, Val TestAPI = False) Export - Return СоздатьОтказ(Token, UUID, TestAPI); -EndFunction - -Function CreateReceipt(Val Token, Val UUIDArray, Val Type = "tpl_russia", Val CopiesPerSheet = 2, Val TestAPI = False) Export - Return СформироватьКвитанцию(Token, UUIDArray, Type, CopiesPerSheet, TestAPI); -EndFunction - -Function GetReceipt(Val Token, Val UUID, Val GetFile = False, Val TestAPI = False) Export - Return ПолучитьКвитанцию(Token, UUID, GetFile, TestAPI); -EndFunction - -Function CreateBarcode(Val Token, Val UUIDArray, Val Copies = 1, Val Format = "A4", Val Lang = "RUS", Val TestAPI = False) Export - Return СформироватьШтрихкод(Token, UUIDArray, Copies, Format, Lang, TestAPI); -EndFunction - -Function GetBarcode(Val Token, Val UUID, Val GetFile = False, Val TestAPI = False) Export - Return ПолучитьШтрихкод(Token, UUID, GetFile, TestAPI); -EndFunction - -Function CreatePrealert(Val Token, Val UUIDArray, Val TransferDate, Val Point, Val TestAPI = False) Export - Return СоздатьПреалерт(Token, UUIDArray, TransferDate, Point, TestAPI); -EndFunction - -Function GetPrealert(Val Token, Val UUID, Val TestAPI = False) Export - Return ПолучитьПреалерт(Token, UUID, TestAPI); -EndFunction - -Function GetPassportDataStatus(Val Token, Val UUID, Val TestAPI = False) Export - Return ПолучитьСтатусПаспортныхДанных(Token, UUID, TestAPI); -EndFunction - -Function GetCashboxCheck(Val Token, Val UUID, Val TestAPI = False) Export - Return ПолучитьЧекЗаказа(Token, UUID, TestAPI); -EndFunction - -Function GetOrderDescription(Val Clear = False, Val RequiredOnly = False, Val OnlineStore = False) Export - Return ПолучитьОписаниеЗаказа(Clear, RequiredOnly, OnlineStore); -EndFunction - -Function GetAvailableDeliveryIntervals(Val Token, Val UUID, Val TestAPI = False) Export - Return ПолучитьДоступныеИнтервалыДоставки(Token, UUID, TestAPI); -EndFunction - -Function CreateCourierInvitation(Val Token, Val InvitationDescription, Val TestAPI = False) Export - Return СоздатьЗаявкуНаВызовКурьера(Token, InvitationDescription, TestAPI); -EndFunction - -Function GetCourierInvitation(Val Token, Val UUID, Val TestAPI = False) Export - Return ПолучитьЗаявкуНаВызовКурьера(Token, UUID, TestAPI); -EndFunction - -Function DeleteCourierInvitation(Val Token, Val UUID, Val TestAPI = False) Export - Return УдалитьЗаявкуНаВызовКурьера(Token, UUID, TestAPI); -EndFunction - -Function RegisterDeliveryAppointment(Val Token, Val Appointment, Val TestAPI = False) Export - Return ЗафиксироватьДоговоренностьОДоставке(Token, Appointment, TestAPI); -EndFunction - -Function GetDeliveryAppointment(Val Token, Val UUID, Val TestAPI = False) Export - Return ПолучитьДоговоренностьОДоставке(Token, UUID, TestAPI); -EndFunction - -Function GetCourierInvitationsDescription(Val Clear = False, Val RequiredOnly = False) Export - Return ПолучитьОписаниеЗаявкиКурьера(Clear, RequiredOnly); -EndFunction - -Function GetAppointmentDescription(Val Clear = False, Val RequiredOnly = False) Export - Return ПолучитьОписаниеДоговоренности(Clear, RequiredOnly); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_CDEK.os +// Lib: CDEK +// CLI: cdek +// Keywords: cdek + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ОбщиеМетоды + +// Получить токен +// Получает токен на основе идентификатора аккаунта и пароля +// +// Примечание: +// Метод в документации API: [Авторизация клиентов](@api-docs.cdek.ru/29923918.html) +// +// Параметры: +// Аккаунт - Строка - Идентификатор клиента (Account) - account +// Пароль - Строка - Секретный ключ (Password) - pass +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьТокен(Знач Аккаунт, Знач Пароль, ТестовыйAPI = Ложь) Экспорт + + Строка_ = "Строка"; + + URL = СформироватьURL("/oauth/token", ТестовыйAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("grant_type" , "client_credentials", Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("client_id" , Аккаунт , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("client_secret", Пароль , Строка_, Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, , Ложь); + + Возврат Ответ; + +КонецФункции + +// Получить чеки на дату +// Получает информацию о чеках за указанную дату +// +// Примечание: +// Метод в документации API: [Информация о чеке](@api-docs.cdek.ru/68257388.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// ДатаПолучения - Дата - Дата, за которую необходимо получить данные - date +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьЧекиНаДату(Знач Токен, Знач ДатаПолучения, Знач ТестовыйAPI = Ложь) Экспорт + + URL = СформироватьURL("/check", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("date", ДатаПолучения, "ДатаБезВремени", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить реестры платежей на дату +// Полуает реестры наложенных платежей, по которым клиенту был переведен платеж +// +// Примечание: +// Метод в документации API: [Информация о реестрах наложенных платежей](@api-docs.cdek.ru/107254706.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// ДатаПолучения - Дата - Дата, за которую необходимо получить данные - date +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьРеестрыПлатежейНаДату(Знач Токен, Знач ДатаПолучения, Знач ТестовыйAPI = Ложь) Экспорт + + URL = СформироватьURL("/registries", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("date", ДатаПолучения, "ДатаБезВремени", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить переводы платежей на дату +// Получает информацию о заказах, по которым был переведен наложенны платеж интернет магазину +// +// Примечание: +// Метод в документации API: [Информация о переводе наложенного платежа](@api-docs.cdek.ru/71059888.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// ДатаПолучения - Дата - Дата, за которую необходимо получить данные - date +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьПереводыПлатежейНаДату(Знач Токен, Знач ДатаПолучения, Знач ТестовыйAPI = Ложь) Экспорт + + URL = СформироватьURL("/payment", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("date", ДатаПолучения, "ДатаБезВремени", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список офисов +// Получает список офисов с фильтром или без +// +// Примечание: +// Метод в документации API: [Список офисов](@api-docs.cdek.ru/36982648.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Фильтр - Структура Из КлючИЗначение - Фильтр офисов. См. ПолучитьОписаниеФильтраОфисов - filter +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьСписокОфисов(Знач Токен, Знач Фильтр = "", Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтр); + + URL = СформироватьURL("/deliverypoints", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Фильтр, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список регионов +// Получает список доступных регионов +// +// Примечание: +// Метод в документации API: [Список регионов](@api-docs.cdek.ru/33829418.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Страны - Массив Из Строка - Массив кодов стран в формате ISO_31661_alpha2 для отбора - countries +// Страница - Число - Страница выборки результата - page +// Язык - Строка - Язык: rus, eng, zho - lang +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьСписокРегионов(Знач Токен + , Знач Страны = Неопределено + , Знач Страница = 0 + , Знач Язык = "rus" + , Знач ТестовыйAPI = Ложь) Экспорт + + URL = СформироватьURL("/location/regions", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("country_codes", Страны , "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("page" , Страница, "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("lang" , Язык , "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить описание фильтра офисов +// Получает пустой макет фильтра получения списка офисов в функции ПолучитьСписокОфисов +// +// Примечание: +// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK +// Описания полей в документации: [Список офисов](@api-docs.cdek.ru/36982648.html) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьОписаниеФильтраОфисов(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураФильтра = Новый Структура; + СтруктураФильтра.Вставить("postal_code" , "<Почтовый индекс города, для которого необходим список офисов>"); + СтруктураФильтра.Вставить("city_code" , "<Код населенного пункта СДЭК>"); + СтруктураФильтра.Вставить("type" , "<Тип офиса: PVZ, POSTAMAT, ALL>"); + СтруктураФильтра.Вставить("country_code" , "<Код страны в формате ISO_3166-1_alpha-2>"); + СтруктураФильтра.Вставить("region_code" , "<Код региона по базе СДЭК>"); + СтруктураФильтра.Вставить("have_cashless" , "<Наличие терминала оплаты>"); + СтруктураФильтра.Вставить("have_cash" , "<Есть прием наличных>"); + СтруктураФильтра.Вставить("allowed_cod" , "<Разрешен наложенный платеж>"); + СтруктураФильтра.Вставить("is_dressing_room", "<Наличие примерочной>"); + СтруктураФильтра.Вставить("weight_max" , "<Максимальный вес в кг, который может принять офис>"); + СтруктураФильтра.Вставить("weight_min" , "<Минимальный вес в кг, который принимает офис>"); + СтруктураФильтра.Вставить("lang" , "<Локализация офиса>"); + СтруктураФильтра.Вставить("take_only" , "<Является ли офис только пунктом выдачи>"); + СтруктураФильтра.Вставить("is_handout" , "<Является пунктом выдачи>"); + СтруктураФильтра.Вставить("is_reception" , "<Есть ли в офисе приём заказов>"); + СтруктураФильтра.Вставить("fias_guid" , "<Код города ФИАС>"); + СтруктураФильтра.Вставить("code" , "<Код ПВЗ>"); + СтруктураФильтра.Вставить("is_ltl" , "<Работает ли офис с LTL>"); + СтруктураФильтра.Вставить("fulfillment" , "<Работает ли офис с Фулфилмент.Приход>"); + СтруктураФильтра.Вставить("size" , "<Ограничение выборки результата>"); + СтруктураФильтра.Вставить("page" , "<Номер страницы выборки результата>"); + + Если Пустая Тогда + СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураФильтра; + +КонецФункции + +#КонецОбласти + +#Область РаботаСЗаказми + +// Создать заказ +// Создает заказ по описанию полей +// +// Примечание: +// Метод в документации API: [Регистрация заказа](@api-docs.cdek.ru/29923926.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// ОписаниеЗаказа - Структура Из КлючИЗначение - Набор полей заказа. См. ПолучитьОписаниеЗаказа - order +// ИнтернетМагазин - Булево - Признак типа заказа Интернет магазин - ostore +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция СоздатьЗаказ(Знач Токен, Знач ОписаниеЗаказа, Знач ИнтернетМагазин = Ложь, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаказа); + OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин); + + URL = СформироватьURL("/orders", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + OPI_Инструменты.ДобавитьПоле("type", ?(ИнтернетМагазин, 1, 2), "Число", ОписаниеЗаказа); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, ОписаниеЗаказа, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Изменить заказ +// Изменяет значения полей выбранного заказа +// +// Примечание: +// Метод в документации API: [Изменение заказа](@api-docs.cdek.ru/36981178.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заказа для изменение - uuid +// ОписаниеЗаказа - Структура Из КлючИЗначение - Набор изменяемых полей заказа - order +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ИзменитьЗаказ(Знач Токен, Знач UUID, Знач ОписаниеЗаказа, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаказа); + + URL = СформироватьURL("/orders", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + OPI_Инструменты.ДобавитьПоле("uuid", UUID, "Строка", ОписаниеЗаказа); + + Ответ = OPI_ЗапросыHTTP.PatchСТелом(URL, ОписаниеЗаказа, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить заказ +// Удаляет заказ по UUID +// +// Примечание: +// Метод в документации API: [Удаление заказа](@api-docs.cdek.ru/29924487.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заказа для удаления - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция УдалитьЗаказ(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + + URL = СформироватьURL("/orders/" + UUID, ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Delete(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить заказ +// Получает заказ по UUID +// +// Примечание: +// Метод в документации API: [Информация о заказе](@api-docs.cdek.ru/29923975.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заказа - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьЗаказ(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + + URL = СформироватьURL("/orders/" + UUID, ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить заказ по номеру +// Получает заказ по номеру СДЭК или внутреннему номеру клиента +// +// Примечание: +// Метод в документации API: [Информация о заказе](@api-docs.cdek.ru/29923975.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// НомерЗаказа - Строка - Номер заказа - number +// Внутренний - Булево - Вид номера заказа. Истина > номер в базе клиента, Ложь > номер СДЭК - internal +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьЗаказПоНомеру(Знач Токен, Знач НомерЗаказа, Знач Внутренний = Ложь, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Внутренний); + + URL = СформироватьURL("/orders", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + ИмяПараметра = ?(Внутренний, "im_number", "cdek_number"); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле(ИмяПараметра, НомерЗаказа, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Оформить клиентский возврат +// Оформляет клиентский возврат для заказа интернет магазина +// +// Примечание: +// Этот метод используется в случае, если прямой заказ доставлялся СДЭК и получатель хочет вернуть его полностью +// Если заказ доставлялся другой службой, либо нужно вернуть не все товары, то необходимо использовать метод СоздатьЗаказ с is_client_return = true +// Метод в документации API: [Клиентские возвраты](@api-docs.cdek.ru/122762174.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заказа - uuid +// Тариф - Число - Код тарифа (из доступных по договору) - tariff +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ОформитьКлиентскийВозврат(Знач Токен, Знач UUID, Знач Тариф, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + + URL = СформироватьURL("/orders/" + UUID + "/clientReturn", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("tariff_code", Тариф, "Число", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Создать отказ +// Создает отказ по заказу для возврата в интернет магазин +// +// Примечание: +// Метод в документации API: [Регистрация отказа](@api-docs.cdek.ru/55327658.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заказа - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция СоздатьОтказ(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + + URL = СформироватьURL("/orders/" + UUID + "/refusal", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Сформировать квитанцию +// Формирует квитанции в формате pdf к заказам +// +// Примечание: +// Доступные типы (языки) квитанций: tpl_china, tpl_armenia, tpl_russia, tpl_english, tpl_italian, tpl_korean, tpl_latvian, tpl_lithuanian, tpl_german, tpl_turkish, tpl_czech, tpl_thailand, tpl_invoice +// Рекомендуется указывать не менее 2 копий на листе (параметр КопийНаЛисте): одна приклеивается на груз, вторая остается у отправителя +// Метод в документации API: [Формирование квитанции к заказу](@api-docs.cdek.ru/36967276.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// МассивUUID - Строка, Массив Из Строка - Один или массив UUID заказов - uuids +// Тип - Строка - Тип (язык) квитанции - type +// КопийНаЛисте - Число - Число копий одной квитанции на листе - count +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция СформироватьКвитанцию(Знач Токен + , Знач МассивUUID + , Знач Тип = "tpl_russia" + , Знач КопийНаЛисте = 2 + , Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьМассив(МассивUUID); + + URL = СформироватьURL("/print/orders", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + МассивЗаказов = Новый Массив; + + Для Каждого UUID Из МассивUUID Цикл + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + МассивЗаказов.Добавить(Новый Структура("order_uuid", UUID)); + + КонецЦикла; + + OPI_Инструменты.ДобавитьПоле("orders" , МассивЗаказов, "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("copy_count", КопийНаЛисте , "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("type" , Тип , "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить квитанцию +// Получает квитанцию к заказу +// +// Примечание: +// Квитанция должна быть предварительно создана. См. СформироватьКвитанцию +// Ссылка на файл с квитанцией к заказам доступна в течение 1 часа +// Метод в документации API: [Получение квитанции к заказу](@api-docs.cdek.ru/36967287.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID квитанции, полученный при ее формировании - uuid +// ПолучитьФайл - Булево - Истина > будут получены сразу данные PDF файла, Ложь > ответ сервера CDEK - getfile +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение, ДвоичныеДанные - сериализованный JSON ответа от CDEK или PDF файл +Функция ПолучитьКвитанцию(Знач Токен, Знач UUID, Знач ПолучитьФайл = Ложь, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + OPI_ПреобразованиеТипов.ПолучитьБулево(ПолучитьФайл); + + URL = СформироватьURL("/print/orders/" + UUID, ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Если ПолучитьФайл Тогда + + Содержимое = Ответ["entity"]; + + Если Не ЗначениеЗаполнено(Содержимое) Тогда + Возврат Ответ; + КонецЕсли; + + URL = Содержимое["url"]; + + Если Не ЗначениеЗаполнено(URL) Тогда + Возврат Ответ; + КонецЕсли; + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + КонецЕсли; + + Возврат Ответ; + +КонецФункции + +// Сформировать штрихкод +// Формирует штрихкод места в формате PDF для заказов +// +// Примечание: +// Метод в документации API: [Формирование ШК места к заказу](@api-docs.cdek.ru/36967295.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// МассивUUID - Строка, Массив Из Строка - Один или массив UUID заказов - uuids +// Копий - Число - Число копий - count +// Формат - Строка - Формат печати: A4, A5, A6, A7 - format +// Язык - Строка - Язык штрихкода: RUS, ENG - lang +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция СформироватьШтрихкод(Знач Токен + , Знач МассивUUID + , Знач Копий = 1 + , Знач Формат = "A4" + , Знач Язык = "RUS" + , Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьМассив(МассивUUID); + + URL = СформироватьURL("/print/barcodes", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + МассивЗаказов = Новый Массив; + + Для Каждого UUID Из МассивUUID Цикл + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + МассивЗаказов.Добавить(Новый Структура("order_uuid", UUID)); + + КонецЦикла; + + OPI_Инструменты.ДобавитьПоле("orders" , МассивЗаказов, "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("copy_count", Копий , "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("format" , Формат , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("lang" , Язык , "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить штрихкод +// Получает штрихкод места к заказу +// +// Примечание: +// Штрихкод должен быть предварительно создан. См. СформироватьШтрихкод +// Ссылка на файл с ШК местом к заказам доступна в течение 1 часа +// Метод в документации API: [Получение ШК места к заказу](@api-docs.cdek.ru/36967298.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID штрихкода, полученный при его формировании - uuid +// ПолучитьФайл - Булево - Истина > будут получены сразу данные PDF файла, Ложь > ответ сервера CDEK - getfile +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение, ДвоичныеДанные - сериализованный JSON ответа от CDEK или PDF файл +Функция ПолучитьШтрихкод(Знач Токен, Знач UUID, Знач ПолучитьФайл = Ложь, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + OPI_ПреобразованиеТипов.ПолучитьБулево(ПолучитьФайл); + + URL = СформироватьURL("/print/barcodes/" + UUID, ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Если ПолучитьФайл Тогда + + Содержимое = Ответ["entity"]; + + Если Не ЗначениеЗаполнено(Содержимое) Тогда + Возврат Ответ; + КонецЕсли; + + URL = Содержимое["url"]; + + Если Не ЗначениеЗаполнено(URL) Тогда + Возврат Ответ; + КонецЕсли; + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + КонецЕсли; + + Возврат Ответ; + +КонецФункции + +// Создать преалерт +// Создает преалерт для списка заказов +// +// Примечание: +// Метод в документации API: [Регистрация преалерта](@api-docs.cdek.ru/78934763.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// МассивUUID - Строка, Массив Из Строка - Один или массив UUID заказов - uuids +// ДатаПередачи - Дата - Планируемая дата передачи заказов в СДЭК - date +// ПВЗ - Строка - Код ПВЗ, в который планируется передать заказы - point +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция СоздатьПреалерт(Знач Токен, Знач МассивUUID, Знач ДатаПередачи, Знач ПВЗ, Знач ТестовыйAPI = Ложь) Экспорт + + Planned_date_ = "planned_date"; + + OPI_ПреобразованиеТипов.ПолучитьМассив(МассивUUID); + + URL = СформироватьURL("/prealert", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + МассивЗаказов = Новый Массив; + + Для Каждого UUID Из МассивUUID Цикл + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + МассивЗаказов.Добавить(Новый Структура("order_uuid", UUID)); + + КонецЦикла; + + OPI_Инструменты.ДобавитьПоле("orders" , МассивЗаказов, "Массив" , Параметры); + OPI_Инструменты.ДобавитьПоле(Planned_date_ , ДатаПередачи , "ДатаISO" , Параметры); + OPI_Инструменты.ДобавитьПоле("shipment_point", ПВЗ , "Строка" , Параметры); + + Параметры[Planned_date_] = Параметры[Planned_date_] + "+0000"; + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить преалерт +// Получает ранее созданны преалерт +// +// Примечание: +// Преалерт должен быть предварительно создан. См. СоздатьПреалерт +// Метод в документации API: [Информация о преалерте](@api-docs.cdek.ru/78934799.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID преалерта - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьПреалерт(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + + URL = СформироватьURL("/prealert/" + UUID, ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить статус паспортных данных +// Получает информацию о статусе обработки паспортных данных для международных заказов +// +// Примечание: +// Метод в документации API: [Информация о паспортных данных](@api-docs.cdek.ru/55343091.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заказа - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьСтатусПаспортныхДанных(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + URL = СформироватьURL("/passport", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("order_uuid", UUID, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить чек заказа +// Получает информацию о чеке по заказу +// +// Примечание: +// Метод в документации API: [Информация о чеке](@api-docs.cdek.ru/68257388.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заказа - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьЧекЗаказа(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + URL = СформироватьURL("/check", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("order_uuid", UUID, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить описание заказа +// Получает макет для создания заказа в функции СоздатьЗаказ +// +// Примечание: +// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK +// Описания полей в документации: [Регистрация заказа](@api-docs.cdek.ru/29923926.html) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// ТолькоОбязательные - Булево - Истина > в макете будут только обязательные поля - required +// ИнтернетМагазин - Булево - Признак включения в макет полей исключительно для заказо Интернет магазина - ostore +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьОписаниеЗаказа(Знач Пустая = Ложь, Знач ТолькоОбязательные = Ложь, Знач ИнтернетМагазин = Ложь) Экспорт + + // BSLLS:DuplicateStringLiteral-off + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + OPI_ПреобразованиеТипов.ПолучитьБулево(ТолькоОбязательные); + OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин); + + СтруктураЗаказа = Новый Структура; + + СтруктураЗаказа.Вставить("tariff_code" , "<Код тарифа (подробнее см. приложение 1)>"); + + СтруктураПолучателя = Новый Структура; + СтруктураПолучателя.Вставить("company" , "<Название компании>"); + СтруктураПолучателя.Вставить("name" , "<ФИО контактного лица>"); + СтруктураПолучателя.Вставить("passport_series" , "<Серия паспорта>"); + СтруктураПолучателя.Вставить("passport_number" , "<Номер паспорта>"); + СтруктураПолучателя.Вставить("passport_date_of_issue", "<Дата выдачи паспорта>"); + СтруктураПолучателя.Вставить("passport_organization" , "<Орган выдачи паспорта>"); + СтруктураПолучателя.Вставить("tin" , "<ИНН>"); + СтруктураПолучателя.Вставить("passport_date_of_birth", "<Дата рождения>"); + СтруктураПолучателя.Вставить("email" , ""); + СтруктураПолучателя.Вставить("contragent_type" , "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL >"); + + МассивТелефонов = Новый Массив; + СтруктураТелефона = Новый Структура; + + СтруктураТелефона.Вставить("number" , "<Номер телефона>"); + СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>"); + + МассивТелефонов.Добавить(СтруктураТелефона); + + СтруктураПолучателя.Вставить("phones", МассивТелефонов); + + СтруктураЗаказа.Вставить("recipient", СтруктураПолучателя); + + МассивУпаковок = Новый Массив; + СтруктураУпаковки = Новый Структура; + + СтруктураУпаковки.Вставить("number" , "<Номер упаковки>"); + СтруктураУпаковки.Вставить("weight" , "<Общий вес (в граммах)>"); + СтруктураУпаковки.Вставить("length" , "<Габариты упаковки. Длина (в сантиметрах)>"); + СтруктураУпаковки.Вставить("width" , "<Габариты упаковки. Ширина (в сантиметрах)>"); + СтруктураУпаковки.Вставить("height" , "<Габариты упаковки. Высота (в сантиметрах)>"); + СтруктураУпаковки.Вставить("comment", "<Комментарий к упаковке>"); + + МассивПозиций = Новый Массив; + СтруктураПозиции = Новый Структура; + + СтруктураПозиции.Вставить("name" , "<Наименование товара>"); + СтруктураПозиции.Вставить("ware_key", "<Идентификатор/артикул товара>"); + СтруктураПозиции.Вставить("marking" , "<Маркировка товара>"); + + СтруктураОплаты = Новый Структура; + СтруктураОплаты.Вставить("value" , "<Сумма наложенного платежа, в том числе и НДС>"); + СтруктураОплаты.Вставить("vat_sum" , "<Сумма НДС>"); + СтруктураОплаты.Вставить("vat_rate", "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>"); + + СтруктураПозиции.Вставить("payment" , СтруктураОплаты); + СтруктураПозиции.Вставить("cost" , "<Объявленная стоимость товара>"); + СтруктураПозиции.Вставить("weight" , "<Вес (за единицу товара, в граммах)>"); + СтруктураПозиции.Вставить("weight_gross", "<Вес брутто>"); + СтруктураПозиции.Вставить("amount" , "<Количество единиц товара (в штуках)>"); + СтруктураПозиции.Вставить("name_i18n" , "<Наименование на иностранном языке>"); + СтруктураПозиции.Вставить("brand" , "<Бренд на иностранном языке>"); + СтруктураПозиции.Вставить("country_code", "<Код страны производителя товара ISO_3166-1_alpha-2>"); + СтруктураПозиции.Вставить("material" , "<Код материала>"); + СтруктураПозиции.Вставить("wifi_gsm" , "<Содержит wifi или gsm>"); + СтруктураПозиции.Вставить("url" , "<Ссылка на сайт интернет-магазина с описанием товара>"); + + МассивПозиций.Добавить(СтруктураПозиции); + + СтруктураУпаковки.Вставить("items", МассивПозиций); + МассивУпаковок.Добавить(СтруктураУпаковки); + + СтруктураЗаказа.Вставить("packages", МассивУпаковок); + + Если Не ТолькоОбязательные Тогда + + СтруктураЗаказа.Вставить("additional_order_types" , "<Дополнительный тип заказа>"); + СтруктураЗаказа.Вставить("comment" , "<Комментарий к заказу>"); + СтруктураЗаказа.Вставить("developer_key" , "<Ключ разработчика (для разработчиков модулей)>"); + СтруктураЗаказа.Вставить("shipment_point" , "<Код ПВЗ СДЭК для самостоятельного привоза клиентом>"); + СтруктураЗаказа.Вставить("delivery_point" , "<Код офиса СДЭК, на который будет доставлена посылка>"); + СтруктураЗаказа.Вставить("date_invoice" , "<Дата инвойса>"); + СтруктураЗаказа.Вставить("shipper_name" , "<Грузоотправитель>"); + СтруктураЗаказа.Вставить("shipper_address" , "<Адрес грузоотправителя>"); + + СтруктураОтправителя = Новый Структура; + СтруктураОтправителя.Вставить("company" , "<Название компании>"); + СтруктураОтправителя.Вставить("name" , "<ФИО контактного лица>"); + СтруктураОтправителя.Вставить("email" , ""); + СтруктураОтправителя.Вставить("passport_series" , "<Серия паспорта>"); + СтруктураОтправителя.Вставить("passport_number" , "<Номер паспорта>"); + СтруктураОтправителя.Вставить("passport_date_of_issue" , "<Дата выдачи паспорта>"); + СтруктураОтправителя.Вставить("passport_organization" , "<Орган выдачи паспорта>"); + СтруктураОтправителя.Вставить("tin" , "<ИНН>"); + СтруктураОтправителя.Вставить("passport_date_of_birth" , "<Дата рождения>"); + СтруктураОтправителя.Вставить("contragent_type" , "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL>"); + + МассивТелефонов = Новый Массив; + СтруктураТелефона = Новый Структура; + + СтруктураТелефона.Вставить("number" , "<Номер телефона>"); + СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>"); + + МассивТелефонов.Добавить(СтруктураТелефона); + + СтруктураОтправителя.Вставить("phones", МассивТелефонов); + + СтруктураЗаказа.Вставить("sender", СтруктураОтправителя); + + СтруктураАдреса = Новый Структура; + СтруктураАдреса.Вставить("code" , "<Код населенного пункта СДЭК>"); + СтруктураАдреса.Вставить("fias_guid" , "<Уникальный идентификатор ФИАС>"); + СтруктураАдреса.Вставить("postal_code" , "<Почтовый индекс>"); + СтруктураАдреса.Вставить("longitude" , "<Долгота>"); + СтруктураАдреса.Вставить("latitude" , "<Широта>"); + СтруктураАдреса.Вставить("country_code", "<Код страны в формате ISO_3166-1_alpha-2>"); + СтруктураАдреса.Вставить("region" , "<Название региона, уточняющий параметр для поля city>"); + СтруктураАдреса.Вставить("region_code" , "<Код региона СДЭК, уточняющий параметр для поля city>"); + СтруктураАдреса.Вставить("sub_region" , "<Название района региона, уточняющий параметр для поля region>"); + СтруктураАдреса.Вставить("city" , "<Название города, уточняющий параметр для postal_code>"); + СтруктураАдреса.Вставить("kladr_code" , "<Код КЛАДР>"); + СтруктураАдреса.Вставить("address" , "<Строка адреса >"); + + СтруктураЗаказа.Вставить("from_location", СтруктураАдреса); + СтруктураЗаказа.Вставить("to_location" , СтруктураАдреса); + + СтруктураУслуги = Новый Структура; + СтруктураУслуги.Вставить("code" , "<Тип дополнительной услуги>"); + СтруктураУслуги.Вставить("parameter", "<Параметр дополнительной услуги>"); + + СтруктураЗаказа.Вставить("services" , СтруктураУслуги); + СтруктураЗаказа.Вставить("print" , "<Необходимость сформировать печатную форму>"); + СтруктураЗаказа.Вставить("is_client_return" , "<Клиентский возврат>"); + СтруктураЗаказа.Вставить("accompanying_number", "<Номер сопроводительной накладной>"); + СтруктураЗаказа.Вставить("widget_token" , "<Токен, полученный от widget.cdek.ru>"); + + Если ИнтернетМагазин Тогда + + СтруктураЗаказа.Вставить("number", "<Номер заказа в ИС Клиента (uuid, если не заполнено)>"); + + СтруктураСбора = Новый Структура; + СтруктураСбора.Вставить("value" , "<Сумма дополнительного сбора (в том числе и НДС)>"); + СтруктураСбора.Вставить("vat_sum" , "<Сумма НДС>"); + СтруктураСбора.Вставить("vat_rate", "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>"); + + СтруктураЗаказа.Вставить("delivery_recipient_cost", СтруктураСбора); + + МассивПорогов = Новый Массив; + СтруктураПорога = Новый Структура; + + СтруктураПорога.Вставить("threshold", "<Порог стоимости товара в целых единицах валюты>"); + СтруктураПорога.Вставить("sum" , "<Доп. сбор за доставку товаров, общая стоимость которых в интервале>"); + СтруктураПорога.Вставить("vat_sum" , "<Сумма НДС, включённая в доп. сбор за доставку>"); + СтруктураПорога.Вставить("vat_rate" , "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>"); + + МассивПорогов.Добавить(СтруктураПорога); + + СтруктураЗаказа.Вставить("delivery_recipient_cost_adv", МассивПорогов); + + СтруктураПродавца = Новый Структура; + СтруктураПродавца.Вставить("name" , "<Наименование истинного продавца>"); + СтруктураПродавца.Вставить("inn" , "<ИНН истинного продавца>"); + СтруктураПродавца.Вставить("phone" , "<Телефон истинного продавца>"); + СтруктураПродавца.Вставить("ownership_form", "<Код формы собственности>"); + СтруктураПродавца.Вставить("address" , "<Адрес истинного продавца>"); + + СтруктураЗаказа.Вставить("seller", СтруктураПродавца); + + КонецЕсли; + + КонецЕсли; + + Если Пустая Тогда + СтруктураЗаказа = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураЗаказа); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураЗаказа; + + // BSLLS:DuplicateStringLiteral-on + +КонецФункции + +#КонецОбласти + +#Область УправлениеДоставкой + +// Получить доступные интервалы доставки +// Получает доступные интервалы доставки для заказа +// +// Примечание: +// Метод в документации API: [Получение интервалов доставки](@api-docs.cdek.ru/154160502.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заказа - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьДоступныеИнтервалыДоставки(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + URL = СформироватьURL("/delivery/intervals", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("order_uuid", UUID, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Создать заявку на вызов курьера +// Создает новую заявку на вызов курьера для забора груза +// +// Примечание: +// Метод в документации API: [Регистрация отказа](@api-docs.cdek.ru/55327658.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// ОписаниеЗаявки - Структура Из КлючИЗначение - Описание заявки. См. ПолучитьОписаниеЗаявкиКурьера - intake +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция СоздатьЗаявкуНаВызовКурьера(Знач Токен, Знач ОписаниеЗаявки, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаявки); + + URL = СформироватьURL("/intakes", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, ОписаниеЗаявки, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить заявку на вызов курьера +// Получает заявку на вызов курьера по UUID +// +// Примечание: +// Заявка должна быть предварительно создана. См. СоздатьЗаявкуНаВызовКурьера +// Метод в документации API: [Информация о заявке](@api-docs.cdek.ru/29948360.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заявки - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьЗаявкуНаВызовКурьера(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + + URL = СформироватьURL("/intakes/" + UUID, ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить заявку на вызов курьера +// +// Примечание: +// Метод в документации API: [Удаление заявки](@api-docs.cdek.ru/29948379.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID заявки для удаления - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция УдалитьЗаявкуНаВызовКурьера(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + + URL = СформироватьURL("/intakes/" + UUID, ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Delete(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Зафиксировать договоренность о доставке +// Фиксирует оговоренные с клиентом дату, время и адрес доставки +// +// Примечание: +// Метод в документации API: [Регистрация договоренности о доставке](@api-docs.cdek.ru/36981338.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Договоренность - Структура Из КлючИЗначение - Описание договоренности. См. ПолучитьОписаниеДоговоренности - appt +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ЗафиксироватьДоговоренностьОДоставке(Знач Токен, Знач Договоренность, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Договоренность); + + URL = СформироватьURL("/delivery", ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Договоренность, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить договоренность о доставке +// Получает информацию об оговоренных с клиентом дате, времени и адресе доставки +// +// Примечание: +// Договоренность должна быть предварительно создана. См. ЗафиксироватьДоговоренностьОДоставке +// Метод в документации API: [Информация о договоренности о доставке](@api-docs.cdek.ru/36981626.html) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// UUID - Строка - UUID договоренности - uuid +// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK +Функция ПолучитьДоговоренностьОДоставке(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID); + + URL = СформироватьURL("/delivery/" + UUID, ТестовыйAPI); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить описание заявки курьера +// Получает макет для создания заявки на вызов курьера в функции СоздатьЗаявкуНаВызовКурьера +// +// Примечание: +// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK +// Описания полей в документации: [Регистрация заявки на вызов курьера](@api-docs.cdek.ru/29925274.html) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// ТолькоОбязательные - Булево - Истина > в макете будут только обязательные поля - required +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьОписаниеЗаявкиКурьера(Знач Пустая = Ложь, Знач ТолькоОбязательные = Ложь) Экспорт + + // BSLLS:DuplicateStringLiteral-off + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + OPI_ПреобразованиеТипов.ПолучитьБулево(ТолькоОбязательные); + + СтруктураЗаявки = Новый Структура; + + СтруктураЗаявки.Вставить("intake_date" , "<Дата ожидания курьера>"); + СтруктураЗаявки.Вставить("intake_time_from" , "<Время начала ожидания курьера>"); + СтруктураЗаявки.Вставить("intake_time_to" , "<Время окончания ожидания курьера>"); + + Если Не ТолькоОбязательные Тогда + + СтруктураЗаявки.Вставить("cdek_number" , "<Номер заказа СДЭК>"); + СтруктураЗаявки.Вставить("order_uuid" , "<Идентификатор заказа в ИС СДЭК>"); + СтруктураЗаявки.Вставить("lunch_time_from" , "<Время начала обеда>"); + СтруктураЗаявки.Вставить("lunch_time_to" , "<Время окончания обеда>"); + СтруктураЗаявки.Вставить("name" , "<Описание груза>"); + СтруктураЗаявки.Вставить("weight" , "<Общий вес (в граммах)>"); + СтруктураЗаявки.Вставить("length" , "<Габариты упаковки. Длина (в сантиметрах)>"); + СтруктураЗаявки.Вставить("width" , "<Габариты упаковки. Ширина (в сантиметрах)>"); + СтруктураЗаявки.Вставить("height" , "<Габариты упаковки. Высота (в сантиметрах)>"); + СтруктураЗаявки.Вставить("comment" , "<Комментарий к заявке для курьера>"); + СтруктураЗаявки.Вставить("need_call" , "<Необходим прозвон отправителя>"); + СтруктураЗаявки.Вставить("courier_power_of_attorney", "<Курьеру необходима доверенность>"); + СтруктураЗаявки.Вставить("courier_identity_card" , "<Курьеру необходим документ удостоверяющий личность>"); + + СтруктураОтправителя = Новый Структура; + СтруктураОтправителя.Вставить("company" , "<Название компании отправителя>"); + СтруктураОтправителя.Вставить("name" , "<ФИО контактного лица>"); + СтруктураОтправителя.Вставить("contragent_type", "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL>"); + + МассивТелефонов = Новый Массив; + + СтруктураТелефона = Новый Структура; + СтруктураТелефона.Вставить("number" , "<Номер телефона>"); + СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>"); + + МассивТелефонов.Добавить(СтруктураТелефона); + + СтруктураОтправителя.Вставить("phones", МассивТелефонов); + + СтруктураЗаявки.Вставить("sender" , СтруктураОтправителя); + + СтруктураАдресаОтправления = Новый Структура; + СтруктураАдресаОтправления.Вставить("code" , "<Код населенного пункта СДЭК>"); + СтруктураАдресаОтправления.Вставить("fias_guid" , "<Уникальный идентификатор ФИАС>"); + СтруктураАдресаОтправления.Вставить("postal_code" , "<Почтовый индекс>"); + СтруктураАдресаОтправления.Вставить("longitude" , "<Долгота>"); + СтруктураАдресаОтправления.Вставить("latitude" , "<Широта>"); + СтруктураАдресаОтправления.Вставить("country_code", "<Код страны>"); + СтруктураАдресаОтправления.Вставить("region" , "<Название региона, уточняющий параметр для поля city>"); + СтруктураАдресаОтправления.Вставить("region_code" , "<Код региона СДЭК, уточняющий параметр для поля city>"); + СтруктураАдресаОтправления.Вставить("sub_region" , "<Название района региона, уточняющий параметр для поля region>"); + СтруктураАдресаОтправления.Вставить("city" , "<Название города, уточняющий параметр для postal_code>"); + СтруктураАдресаОтправления.Вставить("kladr_code" , "<Код КЛАДР. Устаревшее поле>"); + СтруктураАдресаОтправления.Вставить("address" , "<Строка адреса>"); + + СтруктураЗаявки.Вставить("from_location" , СтруктураАдресаОтправления); + + КонецЕсли; + + Если Пустая Тогда + СтруктураЗаявки = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураЗаявки); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураЗаявки; + + // BSLLS:DuplicateStringLiteral-on + +КонецФункции + +// Получить описание договоренности +// Получает макет для создания о доставке в функции ЗафиксироватьДоговоренностьОДоставке +// +// Примечание: +// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK +// Описания полей в документации: [Регистрация договоренности о доставке](@api-docs.cdek.ru/36981338.html) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// ТолькоОбязательные - Булево - Истина > в макете будут только обязательные поля - required +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьОписаниеДоговоренности(Знач Пустая = Ложь, Знач ТолькоОбязательные = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + OPI_ПреобразованиеТипов.ПолучитьБулево(ТолькоОбязательные); + + СтруктураДоговоренности = Новый Структура; + + СтруктураДоговоренности.Вставить("date", "<Дата доставки, согласованная с получателем>"); + + Если Не ТолькоОбязательные Тогда + + СтруктураДоговоренности.Вставить("cdek_number" , "<Номер заказа СДЭК>"); + СтруктураДоговоренности.Вставить("order_uuid" , "<Идентификатор заказа в ИС СДЭК>"); + СтруктураДоговоренности.Вставить("time_from" , "<Время доставки С, согласованное с получателем>"); + СтруктураДоговоренности.Вставить("time_to" , "<Время доставки ПО, согласованное с получателем>"); + СтруктураДоговоренности.Вставить("comment" , "<Комментарий>"); + СтруктураДоговоренности.Вставить("delivery_point", "<Буквенно-цифровой код ПВЗ СДЭК>"); + + СтруктураАдресаДоставки = Новый Структура; + СтруктураАдресаДоставки.Вставить("code" , "<Код населенного пункта СДЭК>"); + СтруктураАдресаДоставки.Вставить("fias_guid" , "<Уникальный идентификатор ФИАС>"); + СтруктураАдресаДоставки.Вставить("postal_code" , "<Почтовый индекс>"); + СтруктураАдресаДоставки.Вставить("longitude" , "<Долгота>"); + СтруктураАдресаДоставки.Вставить("latitude" , "<Широта>"); + СтруктураАдресаДоставки.Вставить("country_code", "<Код страны в формате ISO_3166-1_alpha-2>"); + СтруктураАдресаДоставки.Вставить("region" , "<Название региона>"); + СтруктураАдресаДоставки.Вставить("region_code" , "<Код региона>"); + СтруктураАдресаДоставки.Вставить("sub_region" , "<Название района региона>"); + СтруктураАдресаДоставки.Вставить("city" , "<Название города>"); + СтруктураАдресаДоставки.Вставить("kladr_code" , "<Код КЛАДР>"); + СтруктураАдресаДоставки.Вставить("address" , "<Строка адреса>"); + + СтруктураДоговоренности.Вставить("to_location", СтруктураАдресаДоставки); + + КонецЕсли; + + Если Пустая Тогда + СтруктураДоговоренности = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураДоговоренности); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураДоговоренности; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СформироватьURL(Знач Метод, Знач ТестовыйAPI) + + OPI_ПреобразованиеТипов.ПолучитьБулево(ТестовыйAPI); + + Если ТестовыйAPI Тогда + URL = "https://api.edu.cdek.ru/v2"; + Иначе + URL = "https://api.cdek.ru/v2"; + КонецЕсли; + + URL = URL + Метод; + + Возврат URL; + +КонецФункции + +Функция СоздатьЗаголовкиЗапроса(Знач Токен) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + + Заголовки = Новый Соответствие; + Заголовки.Вставить("Authorization", "Bearer " + Токен); + Возврат Заголовки; + +КонецФункции + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_Dropbox.os b/src/ru/OInt/core/Modules/OPI_Dropbox.os index 84f8317f9d..418e5abc6e 100644 --- a/src/ru/OInt/core/Modules/OPI_Dropbox.os +++ b/src/ru/OInt/core/Modules/OPI_Dropbox.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_Dropbox.os +// OneScript: ./OInt/core/Modules/OPI_Dropbox.os // Lib: Dropbox // CLI: dropbox // Keywords: dropbox @@ -987,120 +987,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function GetAuthorizationLink(Val AppKey) Export - Return ПолучитьСсылкуАвторизации(AppKey); -EndFunction - -Function GetToken(Val AppKey, Val AppSecret, Val Code) Export - Return ПолучитьТокен(AppKey, AppSecret, Code); -EndFunction - -Function RefreshToken(Val AppKey, Val AppSecret, Val RefreshToken) Export - Return ОбновитьТокен(AppKey, AppSecret, RefreshToken); -EndFunction - -Function GetAccountInformation(Val Token, Val Account = "") Export - Return ПолучитьИнформациюОбАккаунте(Token, Account); -EndFunction - -Function GetSpaceUsageData(Val Token) Export - Return ПолучитьДанныеИспользованияПространства(Token); -EndFunction - -Function GetObjectInformation(Val Token, Val Path, Val Detailed = False) Export - Return ПолучитьИнформациюОбОбъекте(Token, Path, Detailed); -EndFunction - -Function GetListOfFolderFiles(Val Token, Val Path = "", Val Detailed = False, Val Cursor = "") Export - Return ПолучитьСписокФайловПапки(Token, Path, Detailed, Cursor); -EndFunction - -Function GetPreview(Val Token, Val Path) Export - Return ПолучитьПревью(Token, Path); -EndFunction - -Function UploadFile(Val Token, Val File, Val Path, Val Overwrite = False) Export - Return ЗагрузитьФайл(Token, File, Path, Overwrite); -EndFunction - -Function UploadFileByURL(Val Token, Val FileURL, Val Path) Export - Return ЗагрузитьФайлПоURL(Token, FileURL, Path); -EndFunction - -Function GetUploadStatusByURL(Val Token, Val JobID) Export - Return ПолучитьСтатусЗагрузкиПоURL(Token, JobID); -EndFunction - -Function DeleteObject(Val Token, Val Path, Val Irrecoverable = False) Export - Return УдалитьОбъект(Token, Path, Irrecoverable); -EndFunction - -Function CopyObject(Val Token, Val From, Val Target) Export - Return КопироватьОбъект(Token, From, Target); -EndFunction - -Function MoveObject(Val Token, Val From, Val Target) Export - Return ПереместитьОбъект(Token, From, Target); -EndFunction - -Function CreateFolder(Val Token, Val Path) Export - Return СоздатьПапку(Token, Path); -EndFunction - -Function DownloadFile(Val Token, Val Path) Export - Return СкачатьФайл(Token, Path); -EndFunction - -Function DownloadFolder(Val Token, Val Path) Export - Return СкачатьПапку(Token, Path); -EndFunction - -Function GetObjectVersionList(Val Token, Val Path, Val Count = 10) Export - Return ПолучитьСписокВерсийОбъекта(Token, Path, Count); -EndFunction - -Function RestoreObjectToVersion(Val Token, Val Path, Val Version) Export - Return ВосстановитьОбъектКВерсии(Token, Path, Version); -EndFunction - -Function GetTagList(Val Token, Val Paths) Export - Return ПолучитьСписокТегов(Token, Paths); -EndFunction - -Function AddTag(Val Token, Val Path, Val Tag) Export - Return ДобавитьТег(Token, Path, Tag); -EndFunction - -Function DeleteTag(Val Token, Val Path, Val Tag) Export - Return УдалитьТег(Token, Path, Tag); -EndFunction - -Function PublishFolder(Val Token, Val Path) Export - Return ОпубликоватьПапку(Token, Path); -EndFunction - -Function CancelFolderPublication(Val Token, Val FolderID) Export - Return ОтменитьПубликациюПапки(Token, FolderID); -EndFunction - -Function AddUsersToFile(Val Token, Val FileID, Val EmailAddresses, Val ViewOnly = True) Export - Return ДобавитьПользователейКФайлу(Token, FileID, EmailAddresses, ViewOnly); -EndFunction - -Function AddUsersToFolder(Val Token, Val FolderID, Val EmailAddresses, Val ViewOnly = True) Export - Return ДобавитьПользователейКПапке(Token, FolderID, EmailAddresses, ViewOnly); -EndFunction - -Function GetAsynchronousChangeStatus(Val Token, Val JobID) Export - Return ПолучитьСтатусАсинхронногоИзменения(Token, JobID); -EndFunction - -Function CancelFilePublication(Val Token, Val FileID) Export - Return ОтменитьПубликациюФайла(Token, FileID); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_GoogleCalendar.os b/src/ru/OInt/core/Modules/OPI_GoogleCalendar.os index a7511ec061..8e69ce2d1f 100644 --- a/src/ru/OInt/core/Modules/OPI_GoogleCalendar.os +++ b/src/ru/OInt/core/Modules/OPI_GoogleCalendar.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_GoogleCalendar.os +// OneScript: ./OInt/core/Modules/OPI_GoogleCalendar.os // Lib: Google Calendar // CLI: gcalendar // Keywords: google calendar, googlecalendar, gcalendar @@ -655,76 +655,3 @@ КонецПроцедуры #КонецОбласти - - -#Region Alternate - -Function CreateCalendar(Val Token, Val Name) Export - Return СоздатьКалендарь(Token, Name); -EndFunction - -Function GetCalendarMetadata(Val Token, Val Calendar) Export - Return ПолучитьМетаданныеКалендаря(Token, Calendar); -EndFunction - -Function EditCalendarMetadata(Val Token, Val Calendar, Val Name = "", Val Description = "") Export - Return ИзменитьМетаданныеКалендаря(Token, Calendar, Name, Description); -EndFunction - -Function ClearMainCalendar(Val Token) Export - Return ОчиститьОсновнойКалендарь(Token); -EndFunction - -Function DeleteCalendar(Val Token, Val Calendar) Export - Return УдалитьКалендарь(Token, Calendar); -EndFunction - -Function GetCalendarList(Val Token) Export - Return ПолучитьСписокКалендарей(Token); -EndFunction - -Function AddCalendarToList(Val Token, Val Calendar) Export - Return ДобавитьКалендарьВСписок(Token, Calendar); -EndFunction - -Function GetListCalendar(Val Token, Val Calendar) Export - Return ПолучитьКалендарьСписка(Token, Calendar); -EndFunction - -Function DeleteCalendarFromList(Val Token, Val Calendar) Export - Return УдалитьКалендарьИзСписка(Token, Calendar); -EndFunction - -Function EditListCalendar(Val Token, Val Calendar, Val PrimaryColor, Val SecondaryColor, Val Hidden = False) Export - Return ИзменитьКалендарьСписка(Token, Calendar, PrimaryColor, SecondaryColor, Hidden); -EndFunction - -Function GetEventDescription(Val Clear = False) Export - Return ПолучитьОписаниеСобытия(Clear); -EndFunction - -Function GetEventList(Val Token, Val Calendar) Export - Return ПолучитьСписокСобытий(Token, Calendar); -EndFunction - -Function GetEvent(Val Token, Val Calendar, Val Event) Export - Return ПолучитьСобытие(Token, Calendar, Event); -EndFunction - -Function CreateEvent(Val Token, Val Calendar, Val EventDescription) Export - Return СоздатьСобытие(Token, Calendar, EventDescription); -EndFunction - -Function MoveEvent(Val Token, Val SourceCalendar, Val TargetCalendar, Val Event) Export - Return ПереместитьСобытие(Token, SourceCalendar, TargetCalendar, Event); -EndFunction - -Function EditEvent(Val Token, Val Calendar, Val EventDescription, Val Event) Export - Return ИзменитьСобытие(Token, Calendar, EventDescription, Event); -EndFunction - -Function DeleteEvent(Val Token, Val Calendar, Val Event) Export - Return УдалитьСобытие(Token, Calendar, Event); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_GoogleDrive.os b/src/ru/OInt/core/Modules/OPI_GoogleDrive.os index 106fe57256..f2dd6def22 100644 --- a/src/ru/OInt/core/Modules/OPI_GoogleDrive.os +++ b/src/ru/OInt/core/Modules/OPI_GoogleDrive.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_GoogleDrive.os +// OneScript: ./OInt/core/Modules/OPI_GoogleDrive.os // Lib: Google Drive // CLI: gdrive // Keywords: google drive, googledrive, gdrive, google disk @@ -777,64 +777,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function GetObjectInformation(Val Token, Val Identifier) Export - Return ПолучитьИнформациюОбОбъекте(Token, Identifier); -EndFunction - -Function GetDirectoriesList(Val Token, Val NameContains = "", Val Detailed = False) Export - Return ПолучитьСписокКаталогов(Token, NameContains, Detailed); -EndFunction - -Function GetFilesList(Val Token, Val NameContains = "", Val Directory = "") Export - Return ПолучитьСписокФайлов(Token, NameContains, Directory); -EndFunction - -Function UploadFile(Val Token, Val File, Val Description) Export - Return ЗагрузитьФайл(Token, File, Description); -EndFunction - -Function CreateFolder(Val Token, Val Name, Val Parent = "") Export - Return СоздатьПапку(Token, Name, Parent); -EndFunction - -Function DownloadFile(Val Token, Val Identifier, Val SavePath = "") Export - Return СкачатьФайл(Token, Identifier, SavePath); -EndFunction - -Function CopyObject(Val Token, Val Identifier, Val NewName = "", Val NewParent = "") Export - Return СкопироватьОбъект(Token, Identifier, NewName, NewParent); -EndFunction - -Function UpdateFile(Val Token, Val Identifier, Val File, Val NewName = "") Export - Return ОбновитьФайл(Token, Identifier, File, NewName); -EndFunction - -Function DeleteObject(Val Token, Val Identifier) Export - Return УдалитьОбъект(Token, Identifier); -EndFunction - -Function GetFileDescription(Val Clear = False) Export - Return ПолучитьОписаниеФайла(Clear); -EndFunction - -Function CreateComment(Val Token, Val Identifier, Val Comment) Export - Return СоздатьКомментарий(Token, Identifier, Comment); -EndFunction - -Function GetComment(Val Token, Val ObjectID, Val CommentID) Export - Return ПолучитьКомментарий(Token, ObjectID, CommentID); -EndFunction - -Function GetCommentList(Val Token, Val ObjectID) Export - Return ПолучитьСписокКомментариев(Token, ObjectID); -EndFunction - -Function DeleteComment(Val Token, Val ObjectID, Val CommentID) Export - Return УдалитьКомментарий(Token, ObjectID, CommentID); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_GoogleSheets.os b/src/ru/OInt/core/Modules/OPI_GoogleSheets.os index 4afad0f657..dd433b9199 100644 --- a/src/ru/OInt/core/Modules/OPI_GoogleSheets.os +++ b/src/ru/OInt/core/Modules/OPI_GoogleSheets.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_GoogleSheets.os +// OneScript: ./OInt/core/Modules/OPI_GoogleSheets.os // Lib: Google Sheets // CLI: gsheets // Keywords: googlesheets, google sheets, spreadsheets @@ -419,44 +419,3 @@ КонецПроцедуры #КонецОбласти - - -#Region Alternate - -Function CreateSpreadsheet(Val Token, Val Name, Val ArrayOfSheetNames) Export - Return СоздатьКнигу(Token, Name, ArrayOfSheetNames); -EndFunction - -Function GetSpreadsheet(Val Token, Val Identifier) Export - Return ПолучитьКнигу(Token, Identifier); -EndFunction - -Function EditSpreadsheetTitle(Val Token, Val Spreadsheet, Val Name) Export - Return ИзменитьНаименованиеКниги(Token, Spreadsheet, Name); -EndFunction - -Function AddSheet(Val Token, Val Spreadsheet, Val Name) Export - Return ДобавитьЛист(Token, Spreadsheet, Name); -EndFunction - -Function DeleteSheet(Val Token, Val Spreadsheet, Val Sheet) Export - Return УдалитьЛист(Token, Spreadsheet, Sheet); -EndFunction - -Function CopySheet(Val Token, Val From, Val Target, Val Sheet) Export - Return КопироватьЛист(Token, From, Target, Sheet); -EndFunction - -Function SetCellValues(Val Token, Val Spreadsheet, Val ValueMapping, Val Sheet = "", Val MajorDimension = "COLUMNS") Export - Return УстановитьЗначенияЯчеек(Token, Spreadsheet, ValueMapping, Sheet, MajorDimension); -EndFunction - -Function ClearCells(Val Token, Val Spreadsheet, Val CellsArray, Val Sheet = "") Export - Return ОчиститьЯчейки(Token, Spreadsheet, CellsArray, Sheet); -EndFunction - -Function GetCellValues(Val Token, Val Spreadsheet, Val CellsArray = "", Val Sheet = "") Export - Return ПолучитьЗначенияЯчеек(Token, Spreadsheet, CellsArray, Sheet); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_GoogleWorkspace.os b/src/ru/OInt/core/Modules/OPI_GoogleWorkspace.os index 977c29646a..01e1aa61d0 100644 --- a/src/ru/OInt/core/Modules/OPI_GoogleWorkspace.os +++ b/src/ru/OInt/core/Modules/OPI_GoogleWorkspace.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_GoogleWorkspace.os +// OneScript: ./OInt/core/Modules/OPI_GoogleWorkspace.os // Lib: Google Workspace // CLI: google @@ -243,28 +243,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function FormCodeRetrievalLink(Val ClientID, Val Calendar = True, Val Drive = True, Val Sheets = True) Export - Return СформироватьСсылкуПолученияКода(ClientID, Calendar, Drive, Sheets); -EndFunction - -Function GetTokenByCode(Val ClientID, Val ClientSecret, Val Code) Export - Return ПолучитьТокенПоКоду(ClientID, ClientSecret, Code); -EndFunction - -Function RefreshToken(Val ClientID, Val ClientSecret, Val RefreshToken) Export - Return ОбновитьТокен(ClientID, ClientSecret, RefreshToken); -EndFunction - -Function GetServiceAccountToken(Val Data, Val Scope, Val Expire = 3600) Export - Return ПолучитьТокенServiceАккаунта(Data, Scope, Expire); -EndFunction - -Function GetAuthorizationHeader(Val Token) Export - Return ПолучитьЗаголовокАвторизации(Token); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_GreenAPI.os b/src/ru/OInt/core/Modules/OPI_GreenAPI.os index 3e719f2474..3269ba1031 100644 --- a/src/ru/OInt/core/Modules/OPI_GreenAPI.os +++ b/src/ru/OInt/core/Modules/OPI_GreenAPI.os @@ -1,1464 +1,1287 @@ -// OneScript: ./OInt/core/Modules/OPI_GreenAPI.os -// Lib: Green API -// CLI: greenapi -// Keywords: greenapi, whatsapp - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область Аккаунт - -// Сформировать параметры доступа -// Формирует структуру основных авторизационных данных -// -// Примечание: -// Подробнее в документации API: [Получить параметры доступа к инстансу](@green-api.com/docs/before-start/#parameters) -// -// Параметры: -// ApiUrl - Строка - Ссылка на хост API - api -// MediaUrl - Строка - Ссылка на хост API для отправки файлов - media -// IdInstance - Строка - Уникальный номер инстанса - id -// ApiTokenInstance - Строка - Ключ доступа инстанса - token -// -// Возвращаемое значение: -// Структура - Структура параметров доступа -Функция СформироватьПараметрыДоступа(Знач ApiUrl, Знач MediaUrl, Знач IdInstance, Знач ApiTokenInstance) Экспорт - - Строка_ = "Строка"; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("apiUrl" , ApiUrl , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("mediaUrl" , MediaUrl , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("idInstance" , IdInstance , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("apiTokenInstance", ApiTokenInstance, Строка_, Параметры); - - Возврат Параметры; - -КонецФункции - -// Получить информацию об аккаунте -// Получает информацию об аккаунте -// -// Примечание: -// Метод в документации API: [GetWaSettings](@green-api.com/docs/api/account/GetWaSettings/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьИнформациюОбАккаунте(Знач ПараметрыДоступа) Экспорт - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "getWaSettings"); - Ответ = OPI_ЗапросыHTTP.Get(URL); - - Возврат Ответ; - -КонецФункции - -// Получить настройки инстанса -// Получает текущие настройки инстанса -// -// Примечание: -// Метод в документации API: [GetSettings](@green-api.com/docs/api/account/GetSettings/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьНастройкиИнстанса(Знач ПараметрыДоступа) Экспорт - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "getSettings"); - Ответ = OPI_ЗапросыHTTP.Get(URL); - - Возврат Ответ; - -КонецФункции - -// Установить настройки инстанса -// Устанавливает настройки инстанса -// -// Примечание -// Метод в документации API: [SetSettings](@green-api.com/docs/api/account/SetSettings/) -// -// Параметры: -// Настройки - Структура Из КлючИЗначение - Настройки инстанса. См. ПолучитьСтруктуруНастроекИнстанса - settings -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция УстановитьНастройкиИнстанса(Знач Настройки, Знач ПараметрыДоступа) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыДоступа); - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Настройки); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "setSettings"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Настройки); - - Возврат Ответ; - -КонецФункции - -// Получить состояние инстанса -// Получает состояние инстанса -// -// Примечание: -// Метод в документации API: [GetStateInstance](@green-api.com/docs/api/account/GetStateInstance/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьСостояниеИнстанса(Знач ПараметрыДоступа) Экспорт - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "getStateInstance"); - Ответ = OPI_ЗапросыHTTP.Get(URL); - - Возврат Ответ; - -КонецФункции - -// Перезапустить инстанс -// Перезапускает инстанс -// -// Примечание: -// Метод в документации API: [Reboot](@green-api.com/docs/api/account/Reboot/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПерезапуститьИнстанс(Знач ПараметрыДоступа) Экспорт - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "reboot"); - Ответ = OPI_ЗапросыHTTP.Get(URL); - - Возврат Ответ; - -КонецФункции - -// Разлогинить инстанс -// Разлогинивает инстанс -// -// Примечание: -// Метод в документации API: [Logout](@green-api.com/docs/api/account/Logout/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция РазлогинитьИнстанс(Знач ПараметрыДоступа) Экспорт - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "logout"); - Ответ = OPI_ЗапросыHTTP.Get(URL); - - Возврат Ответ; - -КонецФункции - -// Получить QR -// Получает QR-код авторизации -// -// Примечание: -// Метод в документации API: [QR](@green-api.com/docs/api/account/QR/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// ДвоичныеДанные, Соответствие Из КлючИЗначение - QR код или информация об ошибке -Функция ПолучитьQR(Знач ПараметрыДоступа) Экспорт - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "qr"); - Ответ = OPI_ЗапросыHTTP.Get(URL); - - Попытка - - Если Ответ["type"] = "qrCode" Тогда - Результат = Base64Значение(Ответ["message"]); - КонецЕсли; - - Исключение - Результат = Ответ; - КонецПопытки; - - Возврат Результат; - -КонецФункции - -// Получить код авторизации -// Получает код авторизации для связи по номеру телефона -// -// Примечание: -// Метод в документации API: [GetAuthorizationCode](@green-api.com/docs/api/account/GetAuthorizationCode/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// НомерТелефона - Строка, Число - Номер телефона в международном формате без + и 00 - phone -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьКодАвторизации(Знач ПараметрыДоступа, Знач НомерТелефона) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("phoneNumber", НомерТелефона, "Число", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "getAuthorizationCode"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Установить картинку профиля -// Устанавливает новую картинку профиля -// -// Примечание: -// Метод в документации API: [SetProfilePicture](@green-api.com/docs/api/account/SetProfilePicture/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// Картинка - ДвоичныеДанные, Строка - Картинка профиля - picture -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция УстановитьКартинкуПрофиля(Знач ПараметрыДоступа, Знач Картинка) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - - СоответствиеКартинки = Новый Соответствие(); - СоответствиеКартинки.Вставить("file|file.jpg", Картинка); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "setProfilePicture"); - Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, , СоответствиеКартинки); - - Возврат Ответ; - -КонецФункции - -// Архивировать чат -// Архивирует выбранный чат -// -// Примечание: -// Метод в документации API: [ArchiveChat](@green-api.com/docs/api/service/archiveChat/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - ID чата для архивации - chat -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция АрхивироватьЧат(Знач ПараметрыДоступа, Знач IDЧата) Экспорт - - Возврат УправлениеАрхивациейЧата(ПараметрыДоступа, IDЧата, Истина); - -КонецФункции - -// Разархивировать чат -// Разархивирует выбранный чат -// -// Примечание: -// Метод в документации API: [UnarchiveChat](@green-api.com/docs/api/service/unarchiveChat/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - ID чата для разархивации - chat -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция РазархивироватьЧат(Знач ПараметрыДоступа, Знач IDЧата) Экспорт - - Возврат УправлениеАрхивациейЧата(ПараметрыДоступа, IDЧата, Ложь); - -КонецФункции - -// Получить структуру настроек инстанса -// Получает шаблон структуры для установки настроек инстанса -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура настроек инстанса -Функция ПолучитьСтруктуруНастроекИнстанса(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураНастроек = Новый Структура; - - СтруктураНастроек.Вставить("webhookUrl" , ""); - СтруктураНастроек.Вставить("webhookUrlToken" , "<токен для доступа к вашему серверу уведомлений, если требуется>"); - СтруктураНастроек.Вставить("delaySendMessagesMilliseconds" , "<интервал отправки сообщений в миллисекундах>"); - СтруктураНастроек.Вставить("markIncomingMessagesReaded" , "<отмечать входящие сообщения прочитанными: yes, no>"); - СтруктураНастроек.Вставить("markIncomingMessagesReadedOnReply", "<отмечать входящие сообщения прочитанными при отправке сообщения в чат: yes, no>"); - СтруктураНастроек.Вставить("outgoingWebhook" , "<получать уведомления о статусах отправки/доставки/прочтении исходящих сообщений: yes, no>"); - СтруктураНастроек.Вставить("outgoingMessageWebhook" , "<получать уведомления о сообщениях, отправленных с телефона: yes, no>"); - СтруктураНастроек.Вставить("outgoingAPIMessageWebhook" , "<получать уведомления о сообщениях, отправленных через API: yes, no>"); - СтруктураНастроек.Вставить("stateWebhook" , "<получать уведомления об изменении состояния авторизации инстанса: yes, no>"); - СтруктураНастроек.Вставить("incomingWebhook" , "<получать уведомления о входящих сообщениях и файлах: yes, no>"); - СтруктураНастроек.Вставить("deviceWebhook" , "<получать уведомления об устройстве (телефоне) и уровне заряда батареи: yes, no>"); - СтруктураНастроек.Вставить("keepOnlineStatus" , "<выставляет статус 'В сети' для вашего аккаунта>"); - СтруктураНастроек.Вставить("pollMessageWebhook" , "<получать уведомления о создании опроса и голосовании в опросе: yes, no>"); - СтруктураНастроек.Вставить("incomingBlockWebhook" , "<получать уведомления о добавлении чата в список заблокированных контактов: yes, no>"); - СтруктураНастроек.Вставить("incomingCallWebhook" , "<получать уведомления о статусах входящего звонка: yes, no>"); - СтруктураНастроек.Вставить("editedMessageWebhook" , "<получать уведомления о факте того, что сообщение было отредактировано: yes, no>"); - СтруктураНастроек.Вставить("deletedMessageWebhook" , "<получать уведомления о факте того, что сообщение было удалено: yes, no>"); - - Если Пустая Тогда - СтруктураНастроек = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураНастроек); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураНастроек; - -КонецФункции - -#КонецОбласти - -#Область УправлениеГруппами - -// Получить информацию о группе -// Получает данные группового чата -// -// Примечание: -// Метод в документации API: [GetGroupData](@green-api.com/docs/api/groups/GetGroupData/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDГруппы - Строка - Идентификатор группового чата - group -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьИнформациюОГруппе(Знач ПараметрыДоступа, Знач IDГруппы) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "getGroupData"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Создать группу -// Создает новый групповой чат -// -// Примечание: -// Метод в документации API: [CreateGroup](@green-api.com/docs/api/groups/CreateGroup/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// Имя - Строка - Наименование группового чата - name -// Участники - Массив Из Строка - Массив участников чата - members -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция СоздатьГруппу(Знач ПараметрыДоступа, Знач Имя, Знач Участники = Неопределено) Экспорт - - Если Не ЗначениеЗаполнено(Участники) Тогда - Участники = Новый Массив; - КонецЕсли; - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("groupName", Имя , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("chatIds" , Участники, "Коллекция", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "createGroup"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Изменить имя группы -// Изменяет имя существующей группы -// -// Примечание: -// Метод в документации API: [UpdateGroupName](@green-api.com/docs/api/groups/UpdateGroupName/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDГруппы - Строка - Идентификатор группового чата - group -// Имя - Строка - Новое наименование группового чата - name -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ИзменитьИмяГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач Имя) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("groupId" , IDГруппы, "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("groupName", Имя , "Строка", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "updateGroupName"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Добавить участника в группу -// Добавляет участника в групповой чат -// -// Примечание: -// Метод в документации API: [AddGroupParticipant](@green-api.com/docs/api/groups/AddGroupParticipant/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDГруппы - Строка - Идентификатор группового чата - group -// IDПользователя - Строка - ID пользователя для добавления - user -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ДобавитьУчастникаВГруппу(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт - - Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "addGroupParticipant"); - - Возврат Ответ; - -КонецФункции - -// Исключить участника группы -// Исключает участника из группы -// -// Примечание: -// Метод в документации API: [RemoveGroupParticipant](@green-api.com/docs/api/groups/RemoveGroupParticipant/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDГруппы - Строка - Идентификатор группового чата - group -// IDПользователя - Строка - ID пользователя для добавления - user -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ИсключитьУчастникаГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт - - Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "removeGroupParticipant"); - - Возврат Ответ; - -КонецФункции - -// Назначить права администратора -// Назначает пользователя администратором группы -// -// Примечание: -// Метод в документации API: [SetGroupAdmin](@green-api.com/docs/api/groups/SetGroupAdmin/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDГруппы - Строка - Идентификатор группового чата - group -// IDПользователя - Строка - ID пользователя для добавления - user -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция НазначитьПраваАдминистратора(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт - - Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "setGroupAdmin"); - - Возврат Ответ; - -КонецФункции - -// Отозвать права администратора -// Отзывает права администратора у пользователя -// -// Примечание: -// Метод в документации API: [RemoveAdmin](@green-api.com/docs/api/groups/RemoveAdmin/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDГруппы - Строка - Идентификатор группового чата - group -// IDПользователя - Строка - ID пользователя для добавления - user -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ОтозватьПраваАдминистратора(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт - - Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "removeAdmin"); - - Возврат Ответ; - -КонецФункции - -// Покинуть группу -// Производит выход текущего аккаунта из группового чата -// -// Примечание: -// Метод в документации API: [LeaveGroup](@green-api.com/docs/api/groups/LeaveGroup/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDГруппы - Строка - Идентификатор группового чата - group -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПокинутьГруппу(Знач ПараметрыДоступа, Знач IDГруппы) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "leaveGroup"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Установить картинку группы -// Устанавливает картинку группового чата -// -// Примечание: -// Метод в документации API: [SetGroupPicture](@green-api.com/docs/api/groups/SetGroupPicture/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDГруппы - Строка - Идентификатор группового чата - group -// Картинка - ДвоичныеДанные, Строка - Картинка профиля - picture -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция УстановитьКартинкуГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач Картинка) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры); - - СоответствиеКартинки = Новый Соответствие(); - СоответствиеКартинки.Вставить("file|file.jpg", Картинка); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "setGroupPicture"); - Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, Параметры, СоответствиеКартинки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область ОтправкаСообщений - -// Отправить текстовое сообщение -// Отправляет текстовое сообщение в выбранный чат -// -// Примечание: -// Метод в документации API: [SendMessage](@green-api.com/docs/api/sending/SendMessage/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// Текст - Строка - Текст сообщения - text -// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ОтправитьТекстовоеСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач Текст, Знач IDЦитируемого = "") Экспорт - - Строка_ = "Строка"; - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendMessage"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Отправить файл -// Отправляет файл в выбранный чат -// -// Примечание: -// Метод в документации API: [SendFileByUpload](@green-api.com/docs/api/sending/SendFileByUpload/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// Файл - Строка, ДвоичныеДанные - Данные или путь к файлу - file -// ИмяФайла - Строка - Имя загружаемого файла с раширением - filename -// Описание - Строка - Текст сообщения под файлом - caption -// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ОтправитьФайл(Знач ПараметрыДоступа - , Знач IDЧата - , Знач Файл - , Знач ИмяФайла - , Знач Описание = "" - , Знач IDЦитируемого = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); - - Строка_ = "Строка"; - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры); - - СоответствиеФайла = Новый Соответствие(); - СоответствиеФайла.Вставить(СтрШаблон("file|%1", ИмяФайла), Файл); - - URL = СформироватьМедиаURL(ПараметрыДоступа, "SendFileByUpload"); - Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, Параметры, СоответствиеФайла); - - Возврат Ответ; - -КонецФункции - -// Отправить файл по URL -// Отправляет файл по URL в выбранный чат -// -// Примечание: -// Метод в документации API: [SendFileByUrl](@green-api.com/docs/api/sending/SendFileByUrl/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// URLФайла - Строка - URL файла для отправки - url -// ИмяФайла - Строка - Имя загружаемого файла с раширением - filename -// Описание - Строка - Текст сообщения под файлом - caption -// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ОтправитьФайлПоURL(Знач ПараметрыДоступа - , Знач IDЧата - , Знач URLФайла - , Знач ИмяФайла - , Знач Описание = "" - , Знач IDЦитируемого = "") Экспорт - - Строка_ = "Строка"; - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("urlFile" , URLФайла , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendFileByUrl"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Отправить опрос -// Отправляет опрос с вариантами ответов в выбранный чат -// -// Примечание: -// Метод в документации API: [SendPoll](@green-api.com/docs/api/sending/SendPoll/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// Текст - Строка - Текст сообщения - text -// Варианты - Массив Из Строка - Варианты ответов - options -// МножественныйВыбор - Булево - Позволяет выбирать несколько вариантов ответа - multi -// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ОтправитьОпрос(Знач ПараметрыДоступа - , Знач IDЧата - , Знач Текст - , Знач Варианты - , Знач МножественныйВыбор = Ложь - , Знач IDЦитируемого = "") Экспорт - - Строка_ = "Строка"; - Параметры = Новый Структура; - МассивВариантов = Новый Массив; - - OPI_ПреобразованиеТипов.ПолучитьМассив(Варианты); - - Для Каждого Вариант Из Варианты Цикл - МассивВариантов.Добавить(Новый Структура("optionName", Вариант)); - КонецЦикла; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_ , Параметры); - OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_ , Параметры); - OPI_Инструменты.ДобавитьПоле("options" , МассивВариантов , "Коллекция", Параметры); - OPI_Инструменты.ДобавитьПоле("multipleAnswers", МножественныйВыбор, "Булево" , Параметры); - OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого , Строка_ , Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendPoll"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Отправить локацию -// Отправляет данные о местоположении в указанный чат -// -// Примечание: -// Метод в документации API: [SendPoll](@green-api.com/docs/api/sending/SendPoll/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// Локация - Структура Из КлючИЗначение - Описание локации. См. ПолучитьОписаниеЛокации - loc -// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ОтправитьЛокацию(Знач ПараметрыДоступа, Знач IDЧата, Знач Локация, Знач IDЦитируемого = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Локация); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка", Параметры); - - Для Каждого Элемент Из Локация Цикл - Параметры.Вставить(Элемент.Ключ, Элемент.Значение); - КонецЦикла; - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendLocation"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Отправить контакт -// Отправляет контакт с номером телефона в выбранный чат -// -// Примечание: -// Метод в документации API: [SendContact](@green-api.com/docs/api/sending/SendContact/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// Контакт - Структура Из КлючИЗначение - Описание контакта. См. ПолучитьОписаниеКонтакта - contact -// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ОтправитьКонтакт(Знач ПараметрыДоступа, Знач IDЧата, Знач Контакт, Знач IDЦитируемого = "") Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("contact" , Контакт , "Коллекция", Параметры); - OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка" , Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendContact"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Переслать сообщения -// Пересылает сообщения из одного чата в другой -// -// Примечание: -// Метод в документации API: [ForwardMessages](@green-api.com/docs/api/sending/ForwardMessages/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// Откуда - Строка - ID чата источника сообщения - from -// Куда - Строка - ID чата приемника сообщения - to -// Сообщения - Строка, Массив Из Строка - Сообщения или одно сообщения для отправки - msgs -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПереслатьСообщения(Знач ПараметрыДоступа, Знач Откуда, Знач Куда, Знач Сообщения) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , Куда , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("chatIdFrom", Откуда , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("messages" , Сообщения, "Коллекция", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "forwardMessages"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Изменить текст сообщения -// Изменяет текст сообщения -// -// Примечание: -// Метод в документации API: [EditMessage](@green-api.com/docs/api/service/EditMessage/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// IDСообщения - Строка - Идентификатор сообщения - message -// Текст - Строка - Новый текст сообщения - text -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ИзменитьТекстСообщения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения, Знач Текст) Экспорт - - Строка_ = "Строка"; - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_, Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "editMessage"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Удалить сообщение -// Удаляет сообщение в выбранном чате -// -// Примечание: -// Метод в документации API: [DeleteMessage](@green-api.com/docs/api/service/deleteMessage/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// IDСообщения - Строка - Идентификатор сообщения - message -// ТолькоУОтправителя - Булево - Удалять только у отправителя - sender -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция УдалитьСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения, Знач ТолькоУОтправителя = Ложь) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("idMessage" , IDСообщения , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("onlySenderDelete", ТолькоУОтправителя, "Булево", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "deleteMessage"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Получить описание контакта -// Получает описание контакта для функции ОтправитьКонстакт -// -// Параметры: -// Телефон - Число - Телефон в международном формате без знака плюс - phone -// Имя - Строка - Имя контакта - name -// Фамилия - Строка - Фамилия контакта - surname -// Отчество - Строка - Отчество контакта - midname -// Компания - Строка - Название компании контакта - company -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Описание контакта -Функция ПолучитьОписаниеКонтакта(Знач Телефон - , Знач Имя = "" - , Знач Фамилия = "" - , Знач Отчество = "" - , Знач Компания = "") Экспорт - - Строка_ = "Строка"; - Контакт = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("phoneContact", Телефон , "Число", Контакт); - OPI_Инструменты.ДобавитьПоле("firstName" , Имя , Строка_, Контакт); - OPI_Инструменты.ДобавитьПоле("middleName" , Фамилия , Строка_, Контакт); - OPI_Инструменты.ДобавитьПоле("lastName" , Отчество, Строка_, Контакт); - OPI_Инструменты.ДобавитьПоле("company" , Компания, Строка_, Контакт); - - Возврат Контакт; - -КонецФункции - -// Получить описание локации -// Получает описание локации для отправки в ОтправитьЛокацию -// -// Параметры: -// Широта - Число - Географическая широта - lat -// Долгота - Число - Географическая долгота - long -// Адрес - Строка - Адрес локации - addr -// Название - Строка - Название локации - name -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Описание локации -Функция ПолучитьОписаниеЛокации(Знач Широта, Знач Долгота, Знач Адрес = "", Знач Название = "") Экспорт - - Локация = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("latitude" , Широта , "Число" , Локация); - OPI_Инструменты.ДобавитьПоле("longitude" , Долгота , "Число" , Локация); - OPI_Инструменты.ДобавитьПоле("address" , Адрес , "Строка", Локация); - OPI_Инструменты.ДобавитьПоле("nameLocation", Название, "Строка", Локация); - - Возврат Локация; - -КонецФункции - -#КонецОбласти - -#Область ПолучениеУведомлений - -// Получить уведомление -// Получает одно уведомление из очереди -// -// Примечание: -// После успешного принятия уведомления, необходимо удалить его из очереди при помощи метода `УдалитьУведомлениеИзОчереди` -// Метод в документации API: [ReceiveNotification](@green-api.com/docs/api/receiving/technology-http-api/ReceiveNotification/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// Таймаут - Число - Таймаут ожидания новых сообщений при пустой очереди - timeout -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьУведомление(Знач ПараметрыДоступа, Знач Таймаут = 5) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("receiveTimeout", Таймаут, "Число", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "receiveNotification"); - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Удалить уведомление из очереди -// Удаляет уведомление из очерели после успешного получения -// -// Примечание: -// Метод в документации API: [DeleteNotification](@green-api.com/docs/api/receiving/technology-http-api/DeleteNotification/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDДоставки - Строка, Число - Идентификатор доставки из метода ПолучитьУведомление - receipt -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция УдалитьУведомлениеИзОчереди(Знач ПараметрыДоступа, Знач IDДоставки) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDДоставки); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "deleteNotification"); - URL = СтрШаблон("%1/%2", URL, IDДоставки); - - Ответ = OPI_ЗапросыHTTP.Delete(URL); - - Возврат Ответ; - -КонецФункции - -// Скачать файл сообщения -// Получает ссылку на скачивание файла из входящего сообщения -// -// Примечание: -// Метод в документации API: [DownloadFile](@green-api.com/docs/api/receiving/files/DownloadFile/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// IDСообщения - Строка - Идентификатор сообщения с файлом - message -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция СкачатьФайлСообщения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, "Строка", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "downloadFile"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Установить отметку прочтения -// Устанавливает отметку Прочитано для сообщения или всех сообщений чата -// -// Примечание: -// Метод в документации API: [ReadChat](@green-api.com/docs/api/marks/ReadChat/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// IDСообщения - Строка - Идентификатор сообщения. Все сообщения, если не заполнено - message -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция УстановитьОтметкуПрочтения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения = "") Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("idMessage" , IDСообщения, "Строка", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "readChat"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область ОчередьСообщений - -// Получить очередь сообщений -// Получает список сообщений в очереди на отправку -// -// Примечание: -// Метод в документации API: [ShowMessagesQueue](@green-api.com/docs/api/queues/ShowMessagesQueue/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьОчередьСообщений(Знач ПараметрыДоступа) Экспорт - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "showMessagesQueue"); - Ответ = OPI_ЗапросыHTTP.Get(URL); - - Возврат Ответ; - -КонецФункции - -// Очистить очередь сообщений -// Очищает очередь сообщений на отправку -// -// Примечание: -// Метод в документации API: [ClearMessagesQueue](@green-api.com/docs/api/queues/ClearMessagesQueue/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ОчиститьОчередьСообщений(Знач ПараметрыДоступа) Экспорт - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "clearMessagesQueue"); - Ответ = OPI_ЗапросыHTTP.Get(URL); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область ЖурналыСообщений - -// Получить историю чата -// Получает историю сообщений чата -// -// Примечание: -// Метод в документации API: [GetChatHistory](@green-api.com/docs/api/journals/GetChatHistory/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// Количество - Число - Количество сообщений для получения - count -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьИсториюЧата(Знач ПараметрыДоступа, Знач IDЧата, Знач Количество = 100) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId", IDЧата , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("count" , Количество, "Число" , Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "getChatHistory"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Получить сообщение -// Получает информацию о сообщении чата по ID -// -// Примечание: -// Метод в документации API: [GetMessage](@green-api.com/docs/api/journals/GetMessage/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// IDЧата - Строка - Идентификатор чата - chat -// IDСообщения - Строка - Идентификатор сообщения - msg -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, "Строка" , Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "getMessage"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -// Получить журнал входящих сообщений -// Получает список входящих сообщений инстанса за указанный интервал -// -// Примечание: -// Метод в документации API: [LastIncomingMessages](@green-api.com/docs/api/journals/LastIncomingMessages/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// Период - Число - Время в минутах, за которое требуется показать сообщения - period -// -// Возвращаемое значение: -// Массив Из Произвольный - сериализованный JSON ответа от Green API -Функция ПолучитьЖурналВходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastIncomingMessages"); - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры); - - Если Не ЗначениеЗаполнено(Ответ) Тогда - Возврат Новый Массив; - КонецЕсли; - - Возврат Ответ; - -КонецФункции - -// Получить журнал исходящих сообщений -// Получает список исходящих сообщений инстанса за указанный интервал -// -// Примечание: -// Метод в документации API: [LastOutgoingMessages](@green-api.com/docs/api/journals/LastOutgoingMessages/) -// -// Параметры: -// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access -// Период - Число - Время в минутах, за которое требуется показать сообщения - period -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API -Функция ПолучитьЖурналИсходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastOutgoingMessages"); - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция СформироватьОсновнойURL(Знач ПараметрыДоступа, Знач Метод) - - Возврат СформироватьURL(ПараметрыДоступа, Метод, "apiUrl"); - -КонецФункции - -Функция СформироватьМедиаURL(Знач ПараметрыДоступа, Знач Метод) - - Возврат СформироватьURL(ПараметрыДоступа, Метод, "mediaUrl"); - -КонецФункции - -Функция СформироватьURL(ПараметрыДоступа, Метод, ПолеURL) - - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыДоступа); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод); - - ОбязательныеПоля = СтрРазделить(ПолеURL + ",idInstance,apiTokenInstance", ","); - ОтсутствующиеПоля = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ПараметрыДоступа, ОбязательныеПоля); - - Если ОтсутствующиеПоля.Количество() > 0 Тогда - ВызватьИсключение "Отсутствуют обязательные поля в параметрах доступа!"; - КонецЕсли; - - Url = ПараметрыДоступа[ПолеURL]; - IdInstance = ПараметрыДоступа["idInstance"]; - ApiTokenInstance = ПараметрыДоступа["apiTokenInstance"]; - - URL = СтрШаблон("%1/waInstance%2/%3/%4", Url, IdInstance, Метод, ApiTokenInstance); - - Возврат URL; - -КонецФункции - -Функция ДействиеСУчастникомГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя, Знач Метод) - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("groupId" , IDГруппы , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("participantChatId", IDПользователя, "Строка", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, Метод); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -Функция УправлениеАрхивациейЧата(Знач ПараметрыДоступа, Знач IDЧата, Знач Архивация) - - Метод = ?(Архивация, "archiveChat", "unarchiveChat"); - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("chatId", IDЧата, "Строка", Параметры); - - URL = СформироватьОсновнойURL(ПараметрыДоступа, Метод); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - - -#Region Alternate - -Function FormAccessParameters(Val ApiUrl, Val MediaUrl, Val IdInstance, Val ApiTokenInstance) Export - Return СформироватьПараметрыДоступа(ApiUrl, MediaUrl, IdInstance, ApiTokenInstance); -EndFunction - -Function GetAccountInformation(Val AccessParameters) Export - Return ПолучитьИнформациюОбАккаунте(AccessParameters); -EndFunction - -Function GetInstanceSettings(Val AccessParameters) Export - Return ПолучитьНастройкиИнстанса(AccessParameters); -EndFunction - -Function SetInstanceSettings(Val Settings, Val AccessParameters) Export - Return УстановитьНастройкиИнстанса(Settings, AccessParameters); -EndFunction - -Function GetInstanceStatus(Val AccessParameters) Export - Return ПолучитьСостояниеИнстанса(AccessParameters); -EndFunction - -Function RebootInstance(Val AccessParameters) Export - Return ПерезапуститьИнстанс(AccessParameters); -EndFunction - -Function LogoutInstance(Val AccessParameters) Export - Return РазлогинитьИнстанс(AccessParameters); -EndFunction - -Function GetQR(Val AccessParameters) Export - Return ПолучитьQR(AccessParameters); -EndFunction - -Function GetAuthorizationCode(Val AccessParameters, Val PhoneNumber) Export - Return ПолучитьКодАвторизации(AccessParameters, PhoneNumber); -EndFunction - -Function SetProfilePicture(Val AccessParameters, Val Image) Export - Return УстановитьКартинкуПрофиля(AccessParameters, Image); -EndFunction - -Function ArchiveChat(Val AccessParameters, Val ChatID) Export - Return АрхивироватьЧат(AccessParameters, ChatID); -EndFunction - -Function UnarchiveChat(Val AccessParameters, Val ChatID) Export - Return РазархивироватьЧат(AccessParameters, ChatID); -EndFunction - -Function GetInstanceSettingsStructure(Val Clear = False) Export - Return ПолучитьСтруктуруНастроекИнстанса(Clear); -EndFunction - -Function GetGroupInformation(Val AccessParameters, Val GroupID) Export - Return ПолучитьИнформациюОГруппе(AccessParameters, GroupID); -EndFunction - -Function CreateGroup(Val AccessParameters, Val Name, Val Members = Undefined) Export - Return СоздатьГруппу(AccessParameters, Name, Members); -EndFunction - -Function UpdateGroupName(Val AccessParameters, Val GroupID, Val Name) Export - Return ИзменитьИмяГруппы(AccessParameters, GroupID, Name); -EndFunction - -Function AddGroupMember(Val AccessParameters, Val GroupID, Val UserID) Export - Return ДобавитьУчастникаВГруппу(AccessParameters, GroupID, UserID); -EndFunction - -Function ExcludeGroupMember(Val AccessParameters, Val GroupID, Val UserID) Export - Return ИсключитьУчастникаГруппы(AccessParameters, GroupID, UserID); -EndFunction - -Function SetAdminRights(Val AccessParameters, Val GroupID, Val UserID) Export - Return НазначитьПраваАдминистратора(AccessParameters, GroupID, UserID); -EndFunction - -Function RevokeAdminRights(Val AccessParameters, Val GroupID, Val UserID) Export - Return ОтозватьПраваАдминистратора(AccessParameters, GroupID, UserID); -EndFunction - -Function LeaveGroup(Val AccessParameters, Val GroupID) Export - Return ПокинутьГруппу(AccessParameters, GroupID); -EndFunction - -Function SetGroupPicture(Val AccessParameters, Val GroupID, Val Image) Export - Return УстановитьКартинкуГруппы(AccessParameters, GroupID, Image); -EndFunction - -Function SendTextMessage(Val AccessParameters, Val ChatID, Val Text, Val ReplyID = "") Export - Return ОтправитьТекстовоеСообщение(AccessParameters, ChatID, Text, ReplyID); -EndFunction - -Function SendFile(Val AccessParameters, Val ChatID, Val File, Val FileName, Val Description = "", Val ReplyID = "") Export - Return ОтправитьФайл(AccessParameters, ChatID, File, FileName, Description, ReplyID); -EndFunction - -Function SendFileByURL(Val AccessParameters, Val ChatID, Val FileURL, Val FileName, Val Description = "", Val ReplyID = "") Export - Return ОтправитьФайлПоURL(AccessParameters, ChatID, FileURL, FileName, Description, ReplyID); -EndFunction - -Function SendPoll(Val AccessParameters, Val ChatID, Val Text, Val Options, Val MultipleSelect = False, Val ReplyID = "") Export - Return ОтправитьОпрос(AccessParameters, ChatID, Text, Options, MultipleSelect, ReplyID); -EndFunction - -Function SendLocation(Val AccessParameters, Val ChatID, Val Location, Val ReplyID = "") Export - Return ОтправитьЛокацию(AccessParameters, ChatID, Location, ReplyID); -EndFunction - -Function SendContact(Val AccessParameters, Val ChatID, Val Contact, Val ReplyID = "") Export - Return ОтправитьКонтакт(AccessParameters, ChatID, Contact, ReplyID); -EndFunction - -Function ForwardMessages(Val AccessParameters, Val From, Val Target, Val Messages) Export - Return ПереслатьСообщения(AccessParameters, From, Target, Messages); -EndFunction - -Function EditMessageText(Val AccessParameters, Val ChatID, Val MessageID, Val Text) Export - Return ИзменитьТекстСообщения(AccessParameters, ChatID, MessageID, Text); -EndFunction - -Function DeleteMessage(Val AccessParameters, Val ChatID, Val MessageID, Val ForSenderOnly = False) Export - Return УдалитьСообщение(AccessParameters, ChatID, MessageID, ForSenderOnly); -EndFunction - -Function GetContactDescription(Val Phone, Val Name = "", Val LastName = "", Val Patronymic = "", Val Company = "") Export - Return ПолучитьОписаниеКонтакта(Phone, Name, LastName, Patronymic, Company); -EndFunction - -Function GetLocationDescription(Val Latitude, Val Longitude, Val Address = "", Val Name = "") Export - Return ПолучитьОписаниеЛокации(Latitude, Longitude, Address, Name); -EndFunction - -Function GetNotification(Val AccessParameters, Val Timeout = 5) Export - Return ПолучитьУведомление(AccessParameters, Timeout); -EndFunction - -Function DeleteNotificationFromQueue(Val AccessParameters, Val ReceiptID) Export - Return УдалитьУведомлениеИзОчереди(AccessParameters, ReceiptID); -EndFunction - -Function DownloadMessageFile(Val AccessParameters, Val ChatID, Val MessageID) Export - Return СкачатьФайлСообщения(AccessParameters, ChatID, MessageID); -EndFunction - -Function SetReadMark(Val AccessParameters, Val ChatID, Val MessageID = "") Export - Return УстановитьОтметкуПрочтения(AccessParameters, ChatID, MessageID); -EndFunction - -Function GetMessageQueue(Val AccessParameters) Export - Return ПолучитьОчередьСообщений(AccessParameters); -EndFunction - -Function ClearMessageQueue(Val AccessParameters) Export - Return ОчиститьОчередьСообщений(AccessParameters); -EndFunction - -Function GetChatHistory(Val AccessParameters, Val ChatID, Val Count = 100) Export - Return ПолучитьИсториюЧата(AccessParameters, ChatID, Count); -EndFunction - -Function GetMessage(Val AccessParameters, Val ChatID, Val MessageID) Export - Return ПолучитьСообщение(AccessParameters, ChatID, MessageID); -EndFunction - -Function GetIncomingMessageLog(Val AccessParameters, Val Period = 1440) Export - Return ПолучитьЖурналВходящихСообщений(AccessParameters, Period); -EndFunction - -Function GetOutgoingMessageLog(Val AccessParameters, Val Period = 1440) Export - Return ПолучитьЖурналИсходящихСообщений(AccessParameters, Period); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_GreenAPI.os +// Lib: Green API +// CLI: greenapi +// Keywords: greenapi, whatsapp + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область Аккаунт + +// Сформировать параметры доступа +// Формирует структуру основных авторизационных данных +// +// Примечание: +// Подробнее в документации API: [Получить параметры доступа к инстансу](@green-api.com/docs/before-start/#parameters) +// +// Параметры: +// ApiUrl - Строка - Ссылка на хост API - api +// MediaUrl - Строка - Ссылка на хост API для отправки файлов - media +// IdInstance - Строка - Уникальный номер инстанса - id +// ApiTokenInstance - Строка - Ключ доступа инстанса - token +// +// Возвращаемое значение: +// Структура - Структура параметров доступа +Функция СформироватьПараметрыДоступа(Знач ApiUrl, Знач MediaUrl, Знач IdInstance, Знач ApiTokenInstance) Экспорт + + Строка_ = "Строка"; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("apiUrl" , ApiUrl , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("mediaUrl" , MediaUrl , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("idInstance" , IdInstance , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("apiTokenInstance", ApiTokenInstance, Строка_, Параметры); + + Возврат Параметры; + +КонецФункции + +// Получить информацию об аккаунте +// Получает информацию об аккаунте +// +// Примечание: +// Метод в документации API: [GetWaSettings](@green-api.com/docs/api/account/GetWaSettings/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьИнформациюОбАккаунте(Знач ПараметрыДоступа) Экспорт + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "getWaSettings"); + Ответ = OPI_ЗапросыHTTP.Get(URL); + + Возврат Ответ; + +КонецФункции + +// Получить настройки инстанса +// Получает текущие настройки инстанса +// +// Примечание: +// Метод в документации API: [GetSettings](@green-api.com/docs/api/account/GetSettings/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьНастройкиИнстанса(Знач ПараметрыДоступа) Экспорт + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "getSettings"); + Ответ = OPI_ЗапросыHTTP.Get(URL); + + Возврат Ответ; + +КонецФункции + +// Установить настройки инстанса +// Устанавливает настройки инстанса +// +// Примечание +// Метод в документации API: [SetSettings](@green-api.com/docs/api/account/SetSettings/) +// +// Параметры: +// Настройки - Структура Из КлючИЗначение - Настройки инстанса. См. ПолучитьСтруктуруНастроекИнстанса - settings +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция УстановитьНастройкиИнстанса(Знач Настройки, Знач ПараметрыДоступа) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыДоступа); + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Настройки); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "setSettings"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Настройки); + + Возврат Ответ; + +КонецФункции + +// Получить состояние инстанса +// Получает состояние инстанса +// +// Примечание: +// Метод в документации API: [GetStateInstance](@green-api.com/docs/api/account/GetStateInstance/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьСостояниеИнстанса(Знач ПараметрыДоступа) Экспорт + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "getStateInstance"); + Ответ = OPI_ЗапросыHTTP.Get(URL); + + Возврат Ответ; + +КонецФункции + +// Перезапустить инстанс +// Перезапускает инстанс +// +// Примечание: +// Метод в документации API: [Reboot](@green-api.com/docs/api/account/Reboot/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПерезапуститьИнстанс(Знач ПараметрыДоступа) Экспорт + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "reboot"); + Ответ = OPI_ЗапросыHTTP.Get(URL); + + Возврат Ответ; + +КонецФункции + +// Разлогинить инстанс +// Разлогинивает инстанс +// +// Примечание: +// Метод в документации API: [Logout](@green-api.com/docs/api/account/Logout/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция РазлогинитьИнстанс(Знач ПараметрыДоступа) Экспорт + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "logout"); + Ответ = OPI_ЗапросыHTTP.Get(URL); + + Возврат Ответ; + +КонецФункции + +// Получить QR +// Получает QR-код авторизации +// +// Примечание: +// Метод в документации API: [QR](@green-api.com/docs/api/account/QR/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// ДвоичныеДанные, Соответствие Из КлючИЗначение - QR код или информация об ошибке +Функция ПолучитьQR(Знач ПараметрыДоступа) Экспорт + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "qr"); + Ответ = OPI_ЗапросыHTTP.Get(URL); + + Попытка + + Если Ответ["type"] = "qrCode" Тогда + Результат = Base64Значение(Ответ["message"]); + КонецЕсли; + + Исключение + Результат = Ответ; + КонецПопытки; + + Возврат Результат; + +КонецФункции + +// Получить код авторизации +// Получает код авторизации для связи по номеру телефона +// +// Примечание: +// Метод в документации API: [GetAuthorizationCode](@green-api.com/docs/api/account/GetAuthorizationCode/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// НомерТелефона - Строка, Число - Номер телефона в международном формате без + и 00 - phone +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьКодАвторизации(Знач ПараметрыДоступа, Знач НомерТелефона) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("phoneNumber", НомерТелефона, "Число", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "getAuthorizationCode"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Установить картинку профиля +// Устанавливает новую картинку профиля +// +// Примечание: +// Метод в документации API: [SetProfilePicture](@green-api.com/docs/api/account/SetProfilePicture/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// Картинка - ДвоичныеДанные, Строка - Картинка профиля - picture +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция УстановитьКартинкуПрофиля(Знач ПараметрыДоступа, Знач Картинка) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + + СоответствиеКартинки = Новый Соответствие(); + СоответствиеКартинки.Вставить("file|file.jpg", Картинка); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "setProfilePicture"); + Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, , СоответствиеКартинки); + + Возврат Ответ; + +КонецФункции + +// Архивировать чат +// Архивирует выбранный чат +// +// Примечание: +// Метод в документации API: [ArchiveChat](@green-api.com/docs/api/service/archiveChat/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - ID чата для архивации - chat +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция АрхивироватьЧат(Знач ПараметрыДоступа, Знач IDЧата) Экспорт + + Возврат УправлениеАрхивациейЧата(ПараметрыДоступа, IDЧата, Истина); + +КонецФункции + +// Разархивировать чат +// Разархивирует выбранный чат +// +// Примечание: +// Метод в документации API: [UnarchiveChat](@green-api.com/docs/api/service/unarchiveChat/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - ID чата для разархивации - chat +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция РазархивироватьЧат(Знач ПараметрыДоступа, Знач IDЧата) Экспорт + + Возврат УправлениеАрхивациейЧата(ПараметрыДоступа, IDЧата, Ложь); + +КонецФункции + +// Получить структуру настроек инстанса +// Получает шаблон структуры для установки настроек инстанса +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура настроек инстанса +Функция ПолучитьСтруктуруНастроекИнстанса(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураНастроек = Новый Структура; + + СтруктураНастроек.Вставить("webhookUrl" , ""); + СтруктураНастроек.Вставить("webhookUrlToken" , "<токен для доступа к вашему серверу уведомлений, если требуется>"); + СтруктураНастроек.Вставить("delaySendMessagesMilliseconds" , "<интервал отправки сообщений в миллисекундах>"); + СтруктураНастроек.Вставить("markIncomingMessagesReaded" , "<отмечать входящие сообщения прочитанными: yes, no>"); + СтруктураНастроек.Вставить("markIncomingMessagesReadedOnReply", "<отмечать входящие сообщения прочитанными при отправке сообщения в чат: yes, no>"); + СтруктураНастроек.Вставить("outgoingWebhook" , "<получать уведомления о статусах отправки/доставки/прочтении исходящих сообщений: yes, no>"); + СтруктураНастроек.Вставить("outgoingMessageWebhook" , "<получать уведомления о сообщениях, отправленных с телефона: yes, no>"); + СтруктураНастроек.Вставить("outgoingAPIMessageWebhook" , "<получать уведомления о сообщениях, отправленных через API: yes, no>"); + СтруктураНастроек.Вставить("stateWebhook" , "<получать уведомления об изменении состояния авторизации инстанса: yes, no>"); + СтруктураНастроек.Вставить("incomingWebhook" , "<получать уведомления о входящих сообщениях и файлах: yes, no>"); + СтруктураНастроек.Вставить("deviceWebhook" , "<получать уведомления об устройстве (телефоне) и уровне заряда батареи: yes, no>"); + СтруктураНастроек.Вставить("keepOnlineStatus" , "<выставляет статус 'В сети' для вашего аккаунта>"); + СтруктураНастроек.Вставить("pollMessageWebhook" , "<получать уведомления о создании опроса и голосовании в опросе: yes, no>"); + СтруктураНастроек.Вставить("incomingBlockWebhook" , "<получать уведомления о добавлении чата в список заблокированных контактов: yes, no>"); + СтруктураНастроек.Вставить("incomingCallWebhook" , "<получать уведомления о статусах входящего звонка: yes, no>"); + СтруктураНастроек.Вставить("editedMessageWebhook" , "<получать уведомления о факте того, что сообщение было отредактировано: yes, no>"); + СтруктураНастроек.Вставить("deletedMessageWebhook" , "<получать уведомления о факте того, что сообщение было удалено: yes, no>"); + + Если Пустая Тогда + СтруктураНастроек = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураНастроек); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураНастроек; + +КонецФункции + +#КонецОбласти + +#Область УправлениеГруппами + +// Получить информацию о группе +// Получает данные группового чата +// +// Примечание: +// Метод в документации API: [GetGroupData](@green-api.com/docs/api/groups/GetGroupData/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDГруппы - Строка - Идентификатор группового чата - group +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьИнформациюОГруппе(Знач ПараметрыДоступа, Знач IDГруппы) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "getGroupData"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Создать группу +// Создает новый групповой чат +// +// Примечание: +// Метод в документации API: [CreateGroup](@green-api.com/docs/api/groups/CreateGroup/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// Имя - Строка - Наименование группового чата - name +// Участники - Массив Из Строка - Массив участников чата - members +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция СоздатьГруппу(Знач ПараметрыДоступа, Знач Имя, Знач Участники = Неопределено) Экспорт + + Если Не ЗначениеЗаполнено(Участники) Тогда + Участники = Новый Массив; + КонецЕсли; + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("groupName", Имя , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("chatIds" , Участники, "Коллекция", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "createGroup"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Изменить имя группы +// Изменяет имя существующей группы +// +// Примечание: +// Метод в документации API: [UpdateGroupName](@green-api.com/docs/api/groups/UpdateGroupName/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDГруппы - Строка - Идентификатор группового чата - group +// Имя - Строка - Новое наименование группового чата - name +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ИзменитьИмяГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач Имя) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("groupId" , IDГруппы, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("groupName", Имя , "Строка", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "updateGroupName"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Добавить участника в группу +// Добавляет участника в групповой чат +// +// Примечание: +// Метод в документации API: [AddGroupParticipant](@green-api.com/docs/api/groups/AddGroupParticipant/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDГруппы - Строка - Идентификатор группового чата - group +// IDПользователя - Строка - ID пользователя для добавления - user +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ДобавитьУчастникаВГруппу(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт + + Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "addGroupParticipant"); + + Возврат Ответ; + +КонецФункции + +// Исключить участника группы +// Исключает участника из группы +// +// Примечание: +// Метод в документации API: [RemoveGroupParticipant](@green-api.com/docs/api/groups/RemoveGroupParticipant/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDГруппы - Строка - Идентификатор группового чата - group +// IDПользователя - Строка - ID пользователя для добавления - user +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ИсключитьУчастникаГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт + + Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "removeGroupParticipant"); + + Возврат Ответ; + +КонецФункции + +// Назначить права администратора +// Назначает пользователя администратором группы +// +// Примечание: +// Метод в документации API: [SetGroupAdmin](@green-api.com/docs/api/groups/SetGroupAdmin/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDГруппы - Строка - Идентификатор группового чата - group +// IDПользователя - Строка - ID пользователя для добавления - user +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция НазначитьПраваАдминистратора(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт + + Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "setGroupAdmin"); + + Возврат Ответ; + +КонецФункции + +// Отозвать права администратора +// Отзывает права администратора у пользователя +// +// Примечание: +// Метод в документации API: [RemoveAdmin](@green-api.com/docs/api/groups/RemoveAdmin/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDГруппы - Строка - Идентификатор группового чата - group +// IDПользователя - Строка - ID пользователя для добавления - user +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ОтозватьПраваАдминистратора(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт + + Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "removeAdmin"); + + Возврат Ответ; + +КонецФункции + +// Покинуть группу +// Производит выход текущего аккаунта из группового чата +// +// Примечание: +// Метод в документации API: [LeaveGroup](@green-api.com/docs/api/groups/LeaveGroup/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDГруппы - Строка - Идентификатор группового чата - group +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПокинутьГруппу(Знач ПараметрыДоступа, Знач IDГруппы) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "leaveGroup"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Установить картинку группы +// Устанавливает картинку группового чата +// +// Примечание: +// Метод в документации API: [SetGroupPicture](@green-api.com/docs/api/groups/SetGroupPicture/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDГруппы - Строка - Идентификатор группового чата - group +// Картинка - ДвоичныеДанные, Строка - Картинка профиля - picture +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция УстановитьКартинкуГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач Картинка) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры); + + СоответствиеКартинки = Новый Соответствие(); + СоответствиеКартинки.Вставить("file|file.jpg", Картинка); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "setGroupPicture"); + Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, Параметры, СоответствиеКартинки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область ОтправкаСообщений + +// Отправить текстовое сообщение +// Отправляет текстовое сообщение в выбранный чат +// +// Примечание: +// Метод в документации API: [SendMessage](@green-api.com/docs/api/sending/SendMessage/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// Текст - Строка - Текст сообщения - text +// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ОтправитьТекстовоеСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач Текст, Знач IDЦитируемого = "") Экспорт + + Строка_ = "Строка"; + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendMessage"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Отправить файл +// Отправляет файл в выбранный чат +// +// Примечание: +// Метод в документации API: [SendFileByUpload](@green-api.com/docs/api/sending/SendFileByUpload/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// Файл - Строка, ДвоичныеДанные - Данные или путь к файлу - file +// ИмяФайла - Строка - Имя загружаемого файла с раширением - filename +// Описание - Строка - Текст сообщения под файлом - caption +// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ОтправитьФайл(Знач ПараметрыДоступа + , Знач IDЧата + , Знач Файл + , Знач ИмяФайла + , Знач Описание = "" + , Знач IDЦитируемого = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + + Строка_ = "Строка"; + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры); + + СоответствиеФайла = Новый Соответствие(); + СоответствиеФайла.Вставить(СтрШаблон("file|%1", ИмяФайла), Файл); + + URL = СформироватьМедиаURL(ПараметрыДоступа, "SendFileByUpload"); + Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, Параметры, СоответствиеФайла); + + Возврат Ответ; + +КонецФункции + +// Отправить файл по URL +// Отправляет файл по URL в выбранный чат +// +// Примечание: +// Метод в документации API: [SendFileByUrl](@green-api.com/docs/api/sending/SendFileByUrl/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// URLФайла - Строка - URL файла для отправки - url +// ИмяФайла - Строка - Имя загружаемого файла с раширением - filename +// Описание - Строка - Текст сообщения под файлом - caption +// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ОтправитьФайлПоURL(Знач ПараметрыДоступа + , Знач IDЧата + , Знач URLФайла + , Знач ИмяФайла + , Знач Описание = "" + , Знач IDЦитируемого = "") Экспорт + + Строка_ = "Строка"; + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("urlFile" , URLФайла , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendFileByUrl"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Отправить опрос +// Отправляет опрос с вариантами ответов в выбранный чат +// +// Примечание: +// Метод в документации API: [SendPoll](@green-api.com/docs/api/sending/SendPoll/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// Текст - Строка - Текст сообщения - text +// Варианты - Массив Из Строка - Варианты ответов - options +// МножественныйВыбор - Булево - Позволяет выбирать несколько вариантов ответа - multi +// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ОтправитьОпрос(Знач ПараметрыДоступа + , Знач IDЧата + , Знач Текст + , Знач Варианты + , Знач МножественныйВыбор = Ложь + , Знач IDЦитируемого = "") Экспорт + + Строка_ = "Строка"; + Параметры = Новый Структура; + МассивВариантов = Новый Массив; + + OPI_ПреобразованиеТипов.ПолучитьМассив(Варианты); + + Для Каждого Вариант Из Варианты Цикл + МассивВариантов.Добавить(Новый Структура("optionName", Вариант)); + КонецЦикла; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_ , Параметры); + OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_ , Параметры); + OPI_Инструменты.ДобавитьПоле("options" , МассивВариантов , "Коллекция", Параметры); + OPI_Инструменты.ДобавитьПоле("multipleAnswers", МножественныйВыбор, "Булево" , Параметры); + OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого , Строка_ , Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendPoll"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Отправить локацию +// Отправляет данные о местоположении в указанный чат +// +// Примечание: +// Метод в документации API: [SendPoll](@green-api.com/docs/api/sending/SendPoll/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// Локация - Структура Из КлючИЗначение - Описание локации. См. ПолучитьОписаниеЛокации - loc +// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ОтправитьЛокацию(Знач ПараметрыДоступа, Знач IDЧата, Знач Локация, Знач IDЦитируемого = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Локация); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка", Параметры); + + Для Каждого Элемент Из Локация Цикл + Параметры.Вставить(Элемент.Ключ, Элемент.Значение); + КонецЦикла; + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendLocation"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Отправить контакт +// Отправляет контакт с номером телефона в выбранный чат +// +// Примечание: +// Метод в документации API: [SendContact](@green-api.com/docs/api/sending/SendContact/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// Контакт - Структура Из КлючИЗначение - Описание контакта. См. ПолучитьОписаниеКонтакта - contact +// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ОтправитьКонтакт(Знач ПараметрыДоступа, Знач IDЧата, Знач Контакт, Знач IDЦитируемого = "") Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("contact" , Контакт , "Коллекция", Параметры); + OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка" , Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendContact"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Переслать сообщения +// Пересылает сообщения из одного чата в другой +// +// Примечание: +// Метод в документации API: [ForwardMessages](@green-api.com/docs/api/sending/ForwardMessages/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// Откуда - Строка - ID чата источника сообщения - from +// Куда - Строка - ID чата приемника сообщения - to +// Сообщения - Строка, Массив Из Строка - Сообщения или одно сообщения для отправки - msgs +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПереслатьСообщения(Знач ПараметрыДоступа, Знач Откуда, Знач Куда, Знач Сообщения) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , Куда , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("chatIdFrom", Откуда , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("messages" , Сообщения, "Коллекция", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "forwardMessages"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Изменить текст сообщения +// Изменяет текст сообщения +// +// Примечание: +// Метод в документации API: [EditMessage](@green-api.com/docs/api/service/EditMessage/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// IDСообщения - Строка - Идентификатор сообщения - message +// Текст - Строка - Новый текст сообщения - text +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ИзменитьТекстСообщения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения, Знач Текст) Экспорт + + Строка_ = "Строка"; + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_, Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "editMessage"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Удалить сообщение +// Удаляет сообщение в выбранном чате +// +// Примечание: +// Метод в документации API: [DeleteMessage](@green-api.com/docs/api/service/deleteMessage/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// IDСообщения - Строка - Идентификатор сообщения - message +// ТолькоУОтправителя - Булево - Удалять только у отправителя - sender +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция УдалитьСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения, Знач ТолькоУОтправителя = Ложь) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("idMessage" , IDСообщения , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("onlySenderDelete", ТолькоУОтправителя, "Булево", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "deleteMessage"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Получить описание контакта +// Получает описание контакта для функции ОтправитьКонстакт +// +// Параметры: +// Телефон - Число - Телефон в международном формате без знака плюс - phone +// Имя - Строка - Имя контакта - name +// Фамилия - Строка - Фамилия контакта - surname +// Отчество - Строка - Отчество контакта - midname +// Компания - Строка - Название компании контакта - company +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Описание контакта +Функция ПолучитьОписаниеКонтакта(Знач Телефон + , Знач Имя = "" + , Знач Фамилия = "" + , Знач Отчество = "" + , Знач Компания = "") Экспорт + + Строка_ = "Строка"; + Контакт = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("phoneContact", Телефон , "Число", Контакт); + OPI_Инструменты.ДобавитьПоле("firstName" , Имя , Строка_, Контакт); + OPI_Инструменты.ДобавитьПоле("middleName" , Фамилия , Строка_, Контакт); + OPI_Инструменты.ДобавитьПоле("lastName" , Отчество, Строка_, Контакт); + OPI_Инструменты.ДобавитьПоле("company" , Компания, Строка_, Контакт); + + Возврат Контакт; + +КонецФункции + +// Получить описание локации +// Получает описание локации для отправки в ОтправитьЛокацию +// +// Параметры: +// Широта - Число - Географическая широта - lat +// Долгота - Число - Географическая долгота - long +// Адрес - Строка - Адрес локации - addr +// Название - Строка - Название локации - name +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Описание локации +Функция ПолучитьОписаниеЛокации(Знач Широта, Знач Долгота, Знач Адрес = "", Знач Название = "") Экспорт + + Локация = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("latitude" , Широта , "Число" , Локация); + OPI_Инструменты.ДобавитьПоле("longitude" , Долгота , "Число" , Локация); + OPI_Инструменты.ДобавитьПоле("address" , Адрес , "Строка", Локация); + OPI_Инструменты.ДобавитьПоле("nameLocation", Название, "Строка", Локация); + + Возврат Локация; + +КонецФункции + +#КонецОбласти + +#Область ПолучениеУведомлений + +// Получить уведомление +// Получает одно уведомление из очереди +// +// Примечание: +// После успешного принятия уведомления, необходимо удалить его из очереди при помощи метода `УдалитьУведомлениеИзОчереди` +// Метод в документации API: [ReceiveNotification](@green-api.com/docs/api/receiving/technology-http-api/ReceiveNotification/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// Таймаут - Число - Таймаут ожидания новых сообщений при пустой очереди - timeout +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьУведомление(Знач ПараметрыДоступа, Знач Таймаут = 5) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("receiveTimeout", Таймаут, "Число", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "receiveNotification"); + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Удалить уведомление из очереди +// Удаляет уведомление из очерели после успешного получения +// +// Примечание: +// Метод в документации API: [DeleteNotification](@green-api.com/docs/api/receiving/technology-http-api/DeleteNotification/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDДоставки - Строка, Число - Идентификатор доставки из метода ПолучитьУведомление - receipt +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция УдалитьУведомлениеИзОчереди(Знач ПараметрыДоступа, Знач IDДоставки) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDДоставки); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "deleteNotification"); + URL = СтрШаблон("%1/%2", URL, IDДоставки); + + Ответ = OPI_ЗапросыHTTP.Delete(URL); + + Возврат Ответ; + +КонецФункции + +// Скачать файл сообщения +// Получает ссылку на скачивание файла из входящего сообщения +// +// Примечание: +// Метод в документации API: [DownloadFile](@green-api.com/docs/api/receiving/files/DownloadFile/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// IDСообщения - Строка - Идентификатор сообщения с файлом - message +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция СкачатьФайлСообщения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, "Строка", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "downloadFile"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Установить отметку прочтения +// Устанавливает отметку Прочитано для сообщения или всех сообщений чата +// +// Примечание: +// Метод в документации API: [ReadChat](@green-api.com/docs/api/marks/ReadChat/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// IDСообщения - Строка - Идентификатор сообщения. Все сообщения, если не заполнено - message +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция УстановитьОтметкуПрочтения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения = "") Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("idMessage" , IDСообщения, "Строка", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "readChat"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область ОчередьСообщений + +// Получить очередь сообщений +// Получает список сообщений в очереди на отправку +// +// Примечание: +// Метод в документации API: [ShowMessagesQueue](@green-api.com/docs/api/queues/ShowMessagesQueue/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьОчередьСообщений(Знач ПараметрыДоступа) Экспорт + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "showMessagesQueue"); + Ответ = OPI_ЗапросыHTTP.Get(URL); + + Возврат Ответ; + +КонецФункции + +// Очистить очередь сообщений +// Очищает очередь сообщений на отправку +// +// Примечание: +// Метод в документации API: [ClearMessagesQueue](@green-api.com/docs/api/queues/ClearMessagesQueue/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ОчиститьОчередьСообщений(Знач ПараметрыДоступа) Экспорт + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "clearMessagesQueue"); + Ответ = OPI_ЗапросыHTTP.Get(URL); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область ЖурналыСообщений + +// Получить историю чата +// Получает историю сообщений чата +// +// Примечание: +// Метод в документации API: [GetChatHistory](@green-api.com/docs/api/journals/GetChatHistory/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// Количество - Число - Количество сообщений для получения - count +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьИсториюЧата(Знач ПараметрыДоступа, Знач IDЧата, Знач Количество = 100) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId", IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("count" , Количество, "Число" , Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "getChatHistory"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Получить сообщение +// Получает информацию о сообщении чата по ID +// +// Примечание: +// Метод в документации API: [GetMessage](@green-api.com/docs/api/journals/GetMessage/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// IDЧата - Строка - Идентификатор чата - chat +// IDСообщения - Строка - Идентификатор сообщения - msg +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, "Строка" , Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "getMessage"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +// Получить журнал входящих сообщений +// Получает список входящих сообщений инстанса за указанный интервал +// +// Примечание: +// Метод в документации API: [LastIncomingMessages](@green-api.com/docs/api/journals/LastIncomingMessages/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// Период - Число - Время в минутах, за которое требуется показать сообщения - period +// +// Возвращаемое значение: +// Массив Из Произвольный - сериализованный JSON ответа от Green API +Функция ПолучитьЖурналВходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastIncomingMessages"); + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры); + + Если Не ЗначениеЗаполнено(Ответ) Тогда + Возврат Новый Массив; + КонецЕсли; + + Возврат Ответ; + +КонецФункции + +// Получить журнал исходящих сообщений +// Получает список исходящих сообщений инстанса за указанный интервал +// +// Примечание: +// Метод в документации API: [LastOutgoingMessages](@green-api.com/docs/api/journals/LastOutgoingMessages/) +// +// Параметры: +// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access +// Период - Число - Время в минутах, за которое требуется показать сообщения - period +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API +Функция ПолучитьЖурналИсходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastOutgoingMessages"); + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СформироватьОсновнойURL(Знач ПараметрыДоступа, Знач Метод) + + Возврат СформироватьURL(ПараметрыДоступа, Метод, "apiUrl"); + +КонецФункции + +Функция СформироватьМедиаURL(Знач ПараметрыДоступа, Знач Метод) + + Возврат СформироватьURL(ПараметрыДоступа, Метод, "mediaUrl"); + +КонецФункции + +Функция СформироватьURL(ПараметрыДоступа, Метод, ПолеURL) + + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыДоступа); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод); + + ОбязательныеПоля = СтрРазделить(ПолеURL + ",idInstance,apiTokenInstance", ","); + ОтсутствующиеПоля = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ПараметрыДоступа, ОбязательныеПоля); + + Если ОтсутствующиеПоля.Количество() > 0 Тогда + ВызватьИсключение "Отсутствуют обязательные поля в параметрах доступа!"; + КонецЕсли; + + Url = ПараметрыДоступа[ПолеURL]; + IdInstance = ПараметрыДоступа["idInstance"]; + ApiTokenInstance = ПараметрыДоступа["apiTokenInstance"]; + + URL = СтрШаблон("%1/waInstance%2/%3/%4", Url, IdInstance, Метод, ApiTokenInstance); + + Возврат URL; + +КонецФункции + +Функция ДействиеСУчастникомГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя, Знач Метод) + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("groupId" , IDГруппы , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("participantChatId", IDПользователя, "Строка", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, Метод); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +Функция УправлениеАрхивациейЧата(Знач ПараметрыДоступа, Знач IDЧата, Знач Архивация) + + Метод = ?(Архивация, "archiveChat", "unarchiveChat"); + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("chatId", IDЧата, "Строка", Параметры); + + URL = СформироватьОсновнойURL(ПараметрыДоступа, Метод); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_MySQL.os b/src/ru/OInt/core/Modules/OPI_MySQL.os index e4566c2988..d4619532ce 100644 --- a/src/ru/OInt/core/Modules/OPI_MySQL.os +++ b/src/ru/OInt/core/Modules/OPI_MySQL.os @@ -1,690 +1,613 @@ -// OneScript: ./OInt/core/Modules/OPI_MySQL.os -// Lib: MySQL -// CLI: mysql -// Keywords: mysql, my sql - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params -//@skip-check constructor-function-return-section -//@skip-check doc-comment-collection-item-type - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область ОсновныеМетоды - -// Открыть соединение !NOCLI -// Создает подключение к указанной базе -// -// Параметры: -// СтрокаПодключения - Строка - Строка подключения. См. СформироватьСтрокуПодключения - sting -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Произвольный - Объект коннектора или структура с информацией об ошибке -Функция ОткрытьСоединение(Знач СтрокаПодключения = "", Знач Tls = "") Экспорт - - Если ЭтоКоннектор(СтрокаПодключения) Тогда - Возврат СтрокаПодключения; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(СтрокаПодключения); - OPI_Инструменты.ВернутьУправляющиеПоследовательности(СтрокаПодключения); - - Коннектор = OPI_Компоненты.ПолучитьКомпоненту("MySQL"); - - Tls = OPI_Компоненты.УстановитьTls(Коннектор, Tls); - - Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда - Возврат Tls; - КонецЕсли; - - Коннектор.ConnectionString = СтрокаПодключения; - - Результат = Коннектор.Connect(); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); - - Возврат ?(Результат["result"], Коннектор, Результат); - -КонецФункции - -// Закрыть соединение !NOCLI -// Явно закрывает переданное соединение -// -// Параметры: -// Соединение - Произвольный - Объект компоненты с открытым соединением - dbc -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Результат закрытия соединения -Функция ЗакрытьСоединение(Знач Соединение) Экспорт - - Если ЭтоКоннектор(Соединение) Тогда - - Результат = Соединение.Close(); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); - - Иначе - - Результат = Новый Структура("result,error", Ложь, "It's not a connection"); - - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// Это коннектор !NOCLI -// Проверяет, что значение является объектом внешней компоненты MySQL -// -// Параметры: -// Значение - Произвольный - Значение для проверки - value -// -// Возвращаемое значение: -// Булево - Это коннектор -Функция ЭтоКоннектор(Знач Значение) Экспорт - - Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_MySQL.Main"; - -КонецФункции - -// Выполнить запрос SQL -// Выполняет произвольный SQL запрос -// -// Примечание: -// Параметры запроса указываются как массив структур вида `{'Тип данных': 'Значение'}`.^^ -// Список доступных типов описан на начальной странице документации библиотеки MySQL -// Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^ -// Для остальных запросов возвращается `result:true` или `false` с текстом ошибки -// -// Параметры: -// ТекстЗапроса - Строка - Текст запроса к базе - sql -// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params -// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса - , Знач Параметры = "" - , Знач ФорсироватьРезультат = Ложь - , Знач Соединение = "" - , Знач Tls = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина); - OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат); - - Параметры_ = ОбработатьПараметры(Параметры); - - Если ЭтоКоннектор(Соединение) Тогда - ЗакрыватьСоединение = Ложь; - Коннектор = Соединение; - Иначе - ЗакрыватьСоединение = Истина; - Коннектор = ОткрытьСоединение(Соединение, Tls); - КонецЕсли; - - Если Не ЭтоКоннектор(Коннектор) Тогда - Возврат Коннектор; - КонецЕсли; - - Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат); - - Если ЗакрыватьСоединение Тогда - ЗакрытьСоединение(Коннектор); - КонецЕсли; - - Результат = OPI_Инструменты.JsonВСтруктуру(Результат); - - Возврат Результат; - -КонецФункции - -// Сформировать строку подключения -// Формирует строку подключения из переданных данных -// -// Параметры: -// Адрес - Строка - IP адрес или доменное имя сервера - addr -// База - Строка - Имя базы данных для подключения - db -// Логин - Строка - Логин пользователя mysql - login -// Пароль - Строка - Пароль пользователя mysql - pass -// Порт - Строка - Порт подключения - port -// -// Возвращаемое значение: -// Строка - Строка подключения к базе MySQL -Функция СформироватьСтрокуПодключения(Знач Адрес, Знач База = "", Знач Логин = "", Знач Пароль = "", Знач Порт = "3306") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин); - OPI_ПреобразованиеТипов.ПолучитьСтроку(База); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); - - Порт = ?(ЗначениеЗаполнено(Порт), ":" + Порт, Порт); - Пароль = ?(ЗначениеЗаполнено(Пароль), ":" + Пароль, Пароль); - - ШаблонСтроки = "mysql://%1%2@%3%4/%5"; - СтрокаПодключения = СтрШаблон(ШаблонСтроки, Логин, Пароль, Адрес, Порт, База); - - Возврат СтрокаПодключения; - -КонецФункции - -// Получить настройки TLS -// Формирует настройки для использования TLS при выполнении запросов -// -// Примечание: -// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^ -// или неявного, при передаче строки подключения в методы ORM. -// Передача настроек Tls совместно с передачей уже созданного соединения в параметр `Соединение` будет проигнорирована -// -// Параметры: -// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust -// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура настроек TLS соединения -Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт - - Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату); - -КонецФункции - -#КонецОбласти - -#Область ORM - -// Создать базу данных -// Создает базу данных с указанным именем -// -// Параметры: -// База - Строка - Имя базы - base -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция СоздатьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_MySQL, База, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Удалить базу данных -// Удаляет базу данных -// -// Параметры: -// База - Строка - Имя базы - base -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция УдалитьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_MySQL, База, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Создать таблицу -// Создает пустую таблицу в базе -// -// Примечание: -// Список доступных типов описан на начальной странице документации библиотеки MySQL -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// СтруктураКолонок - Структура Из КлючИЗначение - Структура колонок: Ключ > имя, Значение > Тип данных - cols -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_MySQL, Таблица, СтруктураКолонок, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Очистить таблицу -// Очищает таблицу базы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_MySQL, Таблица, , Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Удалить таблицу -// Удаляет таблицу из базы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_MySQL, Таблица, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Получить информацию о таблице -// Получает информацию о таблице -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.ПолучитьСтруктуруТаблицы(OPI_MySQL, Таблица, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Добавить записи -// Добавляет записи в таблицу -// -// Примечание: -// Данные записей указываются как массив структур вида:^ -// `{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}` -// Список доступных типов описан на начальной странице документации библиотеки MySQL -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// МассивДанных - Массив Из Структура - Массив структур данных строк: Ключ > поле, Значение > значение поля - rows -// Транзакция - Булево - Истина > добавление записей в транзакции с откатом при ошибке - trn -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.ДобавитьЗаписи(OPI_MySQL, Таблица, МассивДанных, Транзакция, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Получить записи -// Получает записи из выбранной таблицы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Поля - Массив Из Строка - Поля для выборки - fields -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Сортировка - Структура Из КлючИЗначение - Сортировка: Ключ > поле, Значение > направление (ASC, DESC) - order -// Количество - Число - Ограничение количества получаемых строк - limit -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ПолучитьЗаписи(Знач Таблица - , Знач Поля = "*" - , Знач Фильтры = "" - , Знач Сортировка = "" - , Знач Количество = "" - , Знач Соединение = "" - , Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.ПолучитьЗаписи(OPI_MySQL - , Таблица - , Поля - , Фильтры - , Сортировка - , Количество - , Соединение - , Tls); - - Возврат Результат; - -КонецФункции - -// Обновить записи -// Обновляет значение записей по выбранным критериям -// -// Примечание: -// Данные записей указываются как массив структур вида:^ -// `{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}` -// Список доступных типов описан на начальной странице документации библиотеки MySQL -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// СтруктураЗначений - Структура Из КлючИЗначение - Структура значений: Ключ > поле, Значение > значение поля - values -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ОбновитьЗаписи(Знач Таблица - , Знач СтруктураЗначений - , Знач Фильтры = "" - , Знач Соединение = "" - , Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.ОбновитьЗаписи(OPI_MySQL, Таблица, СтруктураЗначений, Фильтры, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Удалить записи -// Удаляет записи из таблицы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_MySQL, Таблица, Фильтры, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Получить структуру фильтра записей -// Получает структуру шаблон для фильтрации записей в запросах ORM -// -// Примечание: -// Использование признака `raw` необходимо для составных конструкций, вроде `BEETWEEN`.^^ -// Например: при `raw:false` фильтр `type:BETWEEN` `value:10 AND 20` будет интерпритирован как `BETWEEN ?1 `^^ -// где `?1 = "10 AND 20"`, что приведет к ошибке.^^ -// В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Элемент фильтра записей -Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт - - Возврат OPI_ЗапросыSQL.ПолучитьСтруктуруФильтраЗаписей(Пустая); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -Функция ПолучитьОсобенности() Экспорт - - Особенности = Новый Соответствие; - Особенности.Вставить("НумерацияПараметров", Ложь); - Особенности.Вставить("МаркерПараметров" , "?"); - Особенности.Вставить("СУБД" , "mysql"); - - Возврат Особенности; - -КонецФункции - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ОбработатьПараметры(Знач Параметры) - - Если Не ЗначениеЗаполнено(Параметры) Тогда - Возврат "[]"; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры); - - Для Н = 0 По Параметры.ВГраница() Цикл - - ТекущийПараметр = Параметры[Н]; - - ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр); - - Параметры[Н] = ТекущийПараметр; - - КонецЦикла; - - Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь); - - Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда - ВызватьИсключение "Ошибка валидации JSON массива параметров!"; - КонецЕсли; - - Возврат Параметры_; - -КонецФункции - -Функция ОбработатьПараметр(ТекущийПараметр, КакОбъект = Истина) - - ТекущийТип = ТипЗнч(ТекущийПараметр); - ТекущийКлюч = ""; - - Если ТекущийТип = Тип("ДвоичныеДанные") Тогда - - ТекущийПараметр = Base64Строка(ТекущийПараметр); - ТекущийКлюч = "BYTES"; - - ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда - - ТекущийПараметр = Строка(ТекущийПараметр); - ТекущийКлюч = "TEXT"; - - ИначеЕсли ТекущийТип = Тип("Булево") Тогда - - ТекущийПараметр = ?(ТекущийПараметр, 1, 0); - ТекущийКлюч = "INT"; - - ИначеЕсли ТекущийТип = Тип("Число") Тогда - - ТекущийКлюч = "DOUBLE"; - - ИначеЕсли ТекущийТип = Тип("Дата") Тогда - - ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр); - ТекущийКлюч = "DATE"; - - Иначе - - ОбработатьПараметрКоллекцию(ТекущийТип, ТекущийПараметр, ТекущийКлюч); - - КонецЕсли; - - Если КакОбъект Тогда - ТекущийПараметр = Новый Структура(ТекущийКлюч, ТекущийПараметр); - КонецЕсли; - - Возврат ТекущийПараметр; - -КонецФункции - -Процедура ОбработатьПараметрКоллекцию(Знач ТекущийТип, ТекущийПараметр, ТекущийКлюч) - - Если ТекущийТип = Тип("Структура") Или ТекущийТип = Тип("Соответствие") Тогда - - Если OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTES") Тогда - - ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр); - ТекущийКлюч = "BYTES"; - - Иначе - - Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл - - ТекущийКлюч = вРег(ЭлементПараметра.Ключ); - ТекущееЗначение = ЭлементПараметра.Значение; - - ТекущийПараметр = ОбработатьПараметр(ТекущееЗначение, Ложь); - - Прервать; - - КонецЦикла; - - КонецЕсли; - - Иначе - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр); - ТекущийКлюч = "TEXT"; - - КонецЕсли; - -КонецПроцедуры - -Функция ОбработатьСтруктуруBlob(Знач Значение) - - Bytea_ = "BYTES"; - - ЗначениеДанных = Значение[Bytea_]; - - Если ТипЗнч(ЗначениеДанных) = Тип("ДвоичныеДанные") Тогда - Значение = Base64Строка(ЗначениеДанных); - Иначе - - ФайлДанных = Новый Файл(Строка(ЗначениеДанных)); - - Если ФайлДанных.Существует() Тогда - - ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных)); - Значение = Base64Строка(ТекущиеДанные); - - КонецЕсли; - - КонецЕсли; - - Возврат Значение; - -КонецФункции - -#КонецОбласти - - -#Region Alternate - -Function CreateConnection(Val ConnectionString = "", Val Tls = "") Export - Return ОткрытьСоединение(ConnectionString, Tls); -EndFunction - -Function CloseConnection(Val Connection) Export - Return ЗакрытьСоединение(Connection); -EndFunction - -Function IsConnector(Val Value) Export - Return ЭтоКоннектор(Value); -EndFunction - -Function ExecuteSQLQuery(Val QueryText, Val Parameters = "", Val ForceResult = False, Val Connection = "", Val Tls = "") Export - Return ВыполнитьЗапросSQL(QueryText, Parameters, ForceResult, Connection, Tls); -EndFunction - -Function GenerateConnectionString(Val Address, Val Base = "", Val Login = "", Val Password = "", Val Port = "3306") Export - Return СформироватьСтрокуПодключения(Address, Base, Login, Password, Port); -EndFunction - -Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export - Return ПолучитьНастройкиTls(DisableCertVerification, CertFilepath); -EndFunction - -Function CreateDatabase(Val Base, Val Connection = "", Val Tls = "") Export - Return СоздатьБазуДанных(Base, Connection, Tls); -EndFunction - -Function DeleteDatabase(Val Base, Val Connection = "", Val Tls = "") Export - Return УдалитьБазуДанных(Base, Connection, Tls); -EndFunction - -Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "", Val Tls = "") Export - Return СоздатьТаблицу(Table, ColoumnsStruct, Connection, Tls); -EndFunction - -Function ClearTable(Val Table, Val Connection = "", Val Tls = "") Export - Return ОчиститьТаблицу(Table, Connection, Tls); -EndFunction - -Function DeleteTable(Val Table, Val Connection = "", Val Tls = "") Export - Return УдалитьТаблицу(Table, Connection, Tls); -EndFunction - -Function GetTableInformation(Val Table, Val Connection = "", Val Tls = "") Export - Return ПолучитьИнформациюОТаблице(Table, Connection, Tls); -EndFunction - -Function AddRecords(Val Table, Val DataArray, Val Transaction = True, Val Connection = "", Val Tls = "") Export - Return ДобавитьЗаписи(Table, DataArray, Transaction, Connection, Tls); -EndFunction - -Function GetRecords(Val Table, Val Fields = "*", Val Filters = "", Val Sort = "", Val Count = "", Val Connection = "", Val Tls = "") Export - Return ПолучитьЗаписи(Table, Fields, Filters, Sort, Count, Connection, Tls); -EndFunction - -Function UpdateRecords(Val Table, Val ValueStructure, Val Filters = "", Val Connection = "", Val Tls = "") Export - Return ОбновитьЗаписи(Table, ValueStructure, Filters, Connection, Tls); -EndFunction - -Function DeleteRecords(Val Table, Val Filters = "", Val Connection = "", Val Tls = "") Export - Return УдалитьЗаписи(Table, Filters, Connection, Tls); -EndFunction - -Function GetRecordsFilterStrucutre(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраЗаписей(Clear); -EndFunction - -Function GetFeatures() Export - Return ПолучитьОсобенности(); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_MySQL.os +// Lib: MySQL +// CLI: mysql +// Keywords: mysql, my sql + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params +//@skip-check constructor-function-return-section +//@skip-check doc-comment-collection-item-type + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ОсновныеМетоды + +// Открыть соединение !NOCLI +// Создает подключение к указанной базе +// +// Параметры: +// СтрокаПодключения - Строка - Строка подключения. См. СформироватьСтрокуПодключения - sting +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Произвольный - Объект коннектора или структура с информацией об ошибке +Функция ОткрытьСоединение(Знач СтрокаПодключения = "", Знач Tls = "") Экспорт + + Если ЭтоКоннектор(СтрокаПодключения) Тогда + Возврат СтрокаПодключения; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(СтрокаПодключения); + OPI_Инструменты.ВернутьУправляющиеПоследовательности(СтрокаПодключения); + + Коннектор = OPI_Компоненты.ПолучитьКомпоненту("MySQL"); + + Tls = OPI_Компоненты.УстановитьTls(Коннектор, Tls); + + Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда + Возврат Tls; + КонецЕсли; + + Коннектор.ConnectionString = СтрокаПодключения; + + Результат = Коннектор.Connect(); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); + + Возврат ?(Результат["result"], Коннектор, Результат); + +КонецФункции + +// Закрыть соединение !NOCLI +// Явно закрывает переданное соединение +// +// Параметры: +// Соединение - Произвольный - Объект компоненты с открытым соединением - dbc +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Результат закрытия соединения +Функция ЗакрытьСоединение(Знач Соединение) Экспорт + + Если ЭтоКоннектор(Соединение) Тогда + + Результат = Соединение.Close(); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); + + Иначе + + Результат = Новый Структура("result,error", Ложь, "It's not a connection"); + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Это коннектор !NOCLI +// Проверяет, что значение является объектом внешней компоненты MySQL +// +// Параметры: +// Значение - Произвольный - Значение для проверки - value +// +// Возвращаемое значение: +// Булево - Это коннектор +Функция ЭтоКоннектор(Знач Значение) Экспорт + + Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_MySQL.Main"; + +КонецФункции + +// Выполнить запрос SQL +// Выполняет произвольный SQL запрос +// +// Примечание: +// Параметры запроса указываются как массив структур вида `{'Тип данных': 'Значение'}`.^^ +// Список доступных типов описан на начальной странице документации библиотеки MySQL +// Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^ +// Для остальных запросов возвращается `result:true` или `false` с текстом ошибки +// +// Параметры: +// ТекстЗапроса - Строка - Текст запроса к базе - sql +// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params +// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса + , Знач Параметры = "" + , Знач ФорсироватьРезультат = Ложь + , Знач Соединение = "" + , Знач Tls = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина); + OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат); + + Параметры_ = ОбработатьПараметры(Параметры); + + Если ЭтоКоннектор(Соединение) Тогда + ЗакрыватьСоединение = Ложь; + Коннектор = Соединение; + Иначе + ЗакрыватьСоединение = Истина; + Коннектор = ОткрытьСоединение(Соединение, Tls); + КонецЕсли; + + Если Не ЭтоКоннектор(Коннектор) Тогда + Возврат Коннектор; + КонецЕсли; + + Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат); + + Если ЗакрыватьСоединение Тогда + ЗакрытьСоединение(Коннектор); + КонецЕсли; + + Результат = OPI_Инструменты.JsonВСтруктуру(Результат); + + Возврат Результат; + +КонецФункции + +// Сформировать строку подключения +// Формирует строку подключения из переданных данных +// +// Параметры: +// Адрес - Строка - IP адрес или доменное имя сервера - addr +// База - Строка - Имя базы данных для подключения - db +// Логин - Строка - Логин пользователя mysql - login +// Пароль - Строка - Пароль пользователя mysql - pass +// Порт - Строка - Порт подключения - port +// +// Возвращаемое значение: +// Строка - Строка подключения к базе MySQL +Функция СформироватьСтрокуПодключения(Знач Адрес, Знач База = "", Знач Логин = "", Знач Пароль = "", Знач Порт = "3306") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин); + OPI_ПреобразованиеТипов.ПолучитьСтроку(База); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); + + Порт = ?(ЗначениеЗаполнено(Порт), ":" + Порт, Порт); + Пароль = ?(ЗначениеЗаполнено(Пароль), ":" + Пароль, Пароль); + + ШаблонСтроки = "mysql://%1%2@%3%4/%5"; + СтрокаПодключения = СтрШаблон(ШаблонСтроки, Логин, Пароль, Адрес, Порт, База); + + Возврат СтрокаПодключения; + +КонецФункции + +// Получить настройки TLS +// Формирует настройки для использования TLS при выполнении запросов +// +// Примечание: +// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^ +// или неявного, при передаче строки подключения в методы ORM. +// Передача настроек Tls совместно с передачей уже созданного соединения в параметр `Соединение` будет проигнорирована +// +// Параметры: +// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust +// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура настроек TLS соединения +Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт + + Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату); + +КонецФункции + +#КонецОбласти + +#Область ORM + +// Создать базу данных +// Создает базу данных с указанным именем +// +// Параметры: +// База - Строка - Имя базы - base +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция СоздатьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_MySQL, База, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Удалить базу данных +// Удаляет базу данных +// +// Параметры: +// База - Строка - Имя базы - base +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция УдалитьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_MySQL, База, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Создать таблицу +// Создает пустую таблицу в базе +// +// Примечание: +// Список доступных типов описан на начальной странице документации библиотеки MySQL +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// СтруктураКолонок - Структура Из КлючИЗначение - Структура колонок: Ключ > имя, Значение > Тип данных - cols +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_MySQL, Таблица, СтруктураКолонок, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Очистить таблицу +// Очищает таблицу базы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_MySQL, Таблица, , Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Удалить таблицу +// Удаляет таблицу из базы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_MySQL, Таблица, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Получить информацию о таблице +// Получает информацию о таблице +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.ПолучитьСтруктуруТаблицы(OPI_MySQL, Таблица, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Добавить записи +// Добавляет записи в таблицу +// +// Примечание: +// Данные записей указываются как массив структур вида:^ +// `{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}` +// Список доступных типов описан на начальной странице документации библиотеки MySQL +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// МассивДанных - Массив Из Структура - Массив структур данных строк: Ключ > поле, Значение > значение поля - rows +// Транзакция - Булево - Истина > добавление записей в транзакции с откатом при ошибке - trn +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.ДобавитьЗаписи(OPI_MySQL, Таблица, МассивДанных, Транзакция, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Получить записи +// Получает записи из выбранной таблицы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Поля - Массив Из Строка - Поля для выборки - fields +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Сортировка - Структура Из КлючИЗначение - Сортировка: Ключ > поле, Значение > направление (ASC, DESC) - order +// Количество - Число - Ограничение количества получаемых строк - limit +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ПолучитьЗаписи(Знач Таблица + , Знач Поля = "*" + , Знач Фильтры = "" + , Знач Сортировка = "" + , Знач Количество = "" + , Знач Соединение = "" + , Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.ПолучитьЗаписи(OPI_MySQL + , Таблица + , Поля + , Фильтры + , Сортировка + , Количество + , Соединение + , Tls); + + Возврат Результат; + +КонецФункции + +// Обновить записи +// Обновляет значение записей по выбранным критериям +// +// Примечание: +// Данные записей указываются как массив структур вида:^ +// `{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}` +// Список доступных типов описан на начальной странице документации библиотеки MySQL +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// СтруктураЗначений - Структура Из КлючИЗначение - Структура значений: Ключ > поле, Значение > значение поля - values +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ОбновитьЗаписи(Знач Таблица + , Знач СтруктураЗначений + , Знач Фильтры = "" + , Знач Соединение = "" + , Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.ОбновитьЗаписи(OPI_MySQL, Таблица, СтруктураЗначений, Фильтры, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Удалить записи +// Удаляет записи из таблицы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_MySQL, Таблица, Фильтры, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Получить структуру фильтра записей +// Получает структуру шаблон для фильтрации записей в запросах ORM +// +// Примечание: +// Использование признака `raw` необходимо для составных конструкций, вроде `BEETWEEN`.^^ +// Например: при `raw:false` фильтр `type:BETWEEN` `value:10 AND 20` будет интерпритирован как `BETWEEN ?1 `^^ +// где `?1 = "10 AND 20"`, что приведет к ошибке.^^ +// В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Элемент фильтра записей +Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт + + Возврат OPI_ЗапросыSQL.ПолучитьСтруктуруФильтраЗаписей(Пустая); + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ПолучитьОсобенности() Экспорт + + Особенности = Новый Соответствие; + Особенности.Вставить("НумерацияПараметров", Ложь); + Особенности.Вставить("МаркерПараметров" , "?"); + Особенности.Вставить("СУБД" , "mysql"); + + Возврат Особенности; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ОбработатьПараметры(Знач Параметры) + + Если Не ЗначениеЗаполнено(Параметры) Тогда + Возврат "[]"; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры); + + Для Н = 0 По Параметры.ВГраница() Цикл + + ТекущийПараметр = Параметры[Н]; + + ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр); + + Параметры[Н] = ТекущийПараметр; + + КонецЦикла; + + Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь); + + Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда + ВызватьИсключение "Ошибка валидации JSON массива параметров!"; + КонецЕсли; + + Возврат Параметры_; + +КонецФункции + +Функция ОбработатьПараметр(ТекущийПараметр, КакОбъект = Истина) + + ТекущийТип = ТипЗнч(ТекущийПараметр); + ТекущийКлюч = ""; + + Если ТекущийТип = Тип("ДвоичныеДанные") Тогда + + ТекущийПараметр = Base64Строка(ТекущийПараметр); + ТекущийКлюч = "BYTES"; + + ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда + + ТекущийПараметр = Строка(ТекущийПараметр); + ТекущийКлюч = "TEXT"; + + ИначеЕсли ТекущийТип = Тип("Булево") Тогда + + ТекущийПараметр = ?(ТекущийПараметр, 1, 0); + ТекущийКлюч = "INT"; + + ИначеЕсли ТекущийТип = Тип("Число") Тогда + + ТекущийКлюч = "DOUBLE"; + + ИначеЕсли ТекущийТип = Тип("Дата") Тогда + + ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр); + ТекущийКлюч = "DATE"; + + Иначе + + ОбработатьПараметрКоллекцию(ТекущийТип, ТекущийПараметр, ТекущийКлюч); + + КонецЕсли; + + Если КакОбъект Тогда + ТекущийПараметр = Новый Структура(ТекущийКлюч, ТекущийПараметр); + КонецЕсли; + + Возврат ТекущийПараметр; + +КонецФункции + +Процедура ОбработатьПараметрКоллекцию(Знач ТекущийТип, ТекущийПараметр, ТекущийКлюч) + + Если ТекущийТип = Тип("Структура") Или ТекущийТип = Тип("Соответствие") Тогда + + Если OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTES") Тогда + + ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр); + ТекущийКлюч = "BYTES"; + + Иначе + + Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл + + ТекущийКлюч = вРег(ЭлементПараметра.Ключ); + ТекущееЗначение = ЭлементПараметра.Значение; + + ТекущийПараметр = ОбработатьПараметр(ТекущееЗначение, Ложь); + + Прервать; + + КонецЦикла; + + КонецЕсли; + + Иначе + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр); + ТекущийКлюч = "TEXT"; + + КонецЕсли; + +КонецПроцедуры + +Функция ОбработатьСтруктуруBlob(Знач Значение) + + Bytea_ = "BYTES"; + + ЗначениеДанных = Значение[Bytea_]; + + Если ТипЗнч(ЗначениеДанных) = Тип("ДвоичныеДанные") Тогда + Значение = Base64Строка(ЗначениеДанных); + Иначе + + ФайлДанных = Новый Файл(Строка(ЗначениеДанных)); + + Если ФайлДанных.Существует() Тогда + + ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных)); + Значение = Base64Строка(ТекущиеДанные); + + КонецЕсли; + + КонецЕсли; + + Возврат Значение; + +КонецФункции + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_Neocities.os b/src/ru/OInt/core/Modules/OPI_Neocities.os index 7ca9ef1e58..a505055cbf 100644 --- a/src/ru/OInt/core/Modules/OPI_Neocities.os +++ b/src/ru/OInt/core/Modules/OPI_Neocities.os @@ -1,483 +1,450 @@ -// OneScript: ./OInt/core/Modules/OPI_Neocities.os -// Lib: Neocities -// CLI: neocities -// Keywords: neocities - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область ПолучениеДанных - -// Получить данные о сайте -// Получает информацию о сайте по его имени или токену -// -// Примечание: -// Документация Neocities API: [neocities.org/api](@neocities.org/api) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Сайт - Строка - Имя сайта (логин) для получения информации. Текущий, если не заполнено - sitename -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities -Функция ПолучитьДанныеОСайте(Знач Токен, Знач Сайт = "") Экспорт - - URL = "https://neocities.org/api/info"; - - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("sitename", Сайт, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить токен -// Получает токен авторизации по логину и паролю -// -// Примечание: -// Документация Neocities API: [neocities.org/api](@neocities.org/api) -// -// Параметры: -// Логин - Строка - Логин пользователя - login -// Пароль - Строка - Пароль пользователя - password -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities -Функция ПолучитьТокен(Знач Логин, Знач Пароль) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); - - URL = "neocities.org"; - Таймаут = 120; - - Попытка - - ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(); - БезопасноеСоединение = Новый HTTPСоединение(URL, 443, Логин, Пароль, , Таймаут, ЗащищенноеСоединение); - - Исключение - - URL = "https://" + URL; - БезопасноеСоединение = Новый HTTPСоединение(URL, 443, Логин, Пароль, , Таймаут); - - КонецПопытки; - - Ответ = БезопасноеСоединение.Получить(Новый HTTPЗапрос("/api/key")); - - ЧтениеJSON = Новый ЧтениеJSON(); - ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку()); - - Ответ = ПрочитатьJSON(ЧтениеJSON); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область РаботаСФайлами - -// Загрузить файл -// Загружает одиночный файл на сервер Neocities -// -// Примечание: -// Документация Neocities API: [neocities.org/api](@neocities.org/api) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Путь - Строка - Целевой путь файла на Neocities - path -// Данные - Строка, ДвоичныеДанные - URL, путь или данные файла для загрузки - file -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities -Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Данные) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь); - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные); - - URL = "https://neocities.org/api/upload"; - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - СоответствиеФайла = Новый Соответствие; - СоответствиеФайла.Вставить(Путь + "|" + Путь, Данные); - - Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, , СоответствиеФайла, "multipart/form-data", Заголовки); - - Возврат Ответ; - -КонецФункции - -// Загрузить файлы -// Загружает несколько файлов на сервер Neocities -// -// Примечание: -// Документация Neocities API: [neocities.org/api](@neocities.org/api) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// СоответствиеФайлов - Соответствие Из КлючИЗначение - Файлы для загрузки: Ключ > путь на NC, Значение > Файл - files -// ПоОдному - Булево - Истина > отправляет файлы отдельными запросами - singly -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities -Функция ЗагрузитьФайлы(Знач Токен, Знач СоответствиеФайлов, Знач ПоОдному = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(ПоОдному); - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеФайлов); - - КонечныйОтвет = Новый Массив; - ОбработанноеСоответствие = Новый Соответствие; - - Для Каждого ФайлОтправки Из СоответствиеФайлов Цикл - - Если ПоОдному Тогда - - Ответ = ЗагрузитьФайл(Токен, ФайлОтправки.Ключ, ФайлОтправки.Значение); - КонечныйОтвет.Добавить(Ответ); - - Иначе - - ТекущийПуть = ФайлОтправки.Ключ; - ТекущиеДанные = ФайлОтправки.Значение; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПуть); - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ТекущиеДанные); - - ОбработанноеСоответствие.Вставить(ТекущийПуть + "|" + ТекущийПуть, ТекущиеДанные); - - КонецЕсли; - - КонецЦикла; - - Если Не ПоОдному Тогда - - URL = "https://neocities.org/api/upload"; - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - КонечныйОтвет = OPI_ЗапросыHTTP.PostMultipart(URL - , - , ОбработанноеСоответствие - , "multipart/form-data" - , Заголовки); - - КонецЕсли; - - Возврат КонечныйОтвет; - -КонецФункции - -// Удалить выбранные файлы -// Удаляет файл или несколько файлов с сервера Neocities -// -// Примечание: -// Документация Neocities API: [neocities.org/api](@neocities.org/api) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Пути - Строка, Массив Из Строка - Путь или несколько путей удаляемых файлов - paths -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities -Функция УдалитьВыбранныеФайлы(Знач Токен, Знач Пути) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьМассив(Пути); - - URL = "https://neocities.org/api/delete"; - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Для Н = 0 По Пути.ВГраница() Цикл - - ТекущееЗначение = Пути[Н]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущееЗначение); - - Пути.Установить(Н, "filenames[]=" + ТекущееЗначение); - - КонецЦикла; - - ПутиСтрокой = СтрСоединить(Пути, "&"); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, ПутиСтрокой, Заголовки, Ложь); - - Возврат Ответ; - -КонецФункции - -// Получить список файлов -// Получает список файлов с отбором каталога или без -// -// Примечание: -// Документация Neocities API: [neocities.org/api](@neocities.org/api) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Путь - Строка - Отбор файлов по каталогу. Все, если не заполнено - path -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities -Функция ПолучитьСписокФайлов(Знач Токен, Знач Путь = "") Экспорт - - URL = "https://neocities.org/api/list"; - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Синхронизировать каталоги -// Создает копию локального каталога по выбранному пути на сервере -// -// Примечание: -// Документация Neocities API: [neocities.org/api](@neocities.org/api) -// Метод удаляет файлы на сервере, если они отсутствуют в локальном каталоге -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// ЛокальныйКаталог - Строка - Локальный каталог источник - local -// УдаленныйКаталог - Строка - Удаленный каталог приемника. Корень, если не заполнено - remote -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - информация об ошибках синхронизации -Функция СинхронизироватьКаталоги(Знач Токен, Знач ЛокальныйКаталог, Знач УдаленныйКаталог = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ЛокальныйКаталог); - OPI_ПреобразованиеТипов.ПолучитьСтроку(УдаленныйКаталог); - - Сообщить("Начало синхронизации..."); - - Если ЗначениеЗаполнено(УдаленныйКаталог) Тогда - УдаленныйКаталог = ?(СтрЗаканчиваетсяНа(УдаленныйКаталог, "/"), УдаленныйКаталог, УдаленныйКаталог + "/"); - КонецЕсли; - - УдаленныеФайлы = ПолучитьСписокФайлов(Токен, УдаленныйКаталог); - - Если Не УдаленныеФайлы["result"] = "success" Тогда - //@skip-check constructor-function-return-section - Возврат УдаленныеФайлы; - КонецЕсли; - - ЛокальныеПути = Новый Соответствие; - ЛокальныеПодкаталоги = Новый Соответствие; - - ПолучитьНаборыЛокальныхПутей(ЛокальныйКаталог, УдаленныйКаталог, ЛокальныеПути, ЛокальныеПодкаталоги); - - МассивУдаляемых = ПолучитьУдаляемыеФайлы(УдаленныеФайлы, ЛокальныеПути, ЛокальныеПодкаталоги); - Результат = ВыполнитьСинхронизацию(Токен, МассивУдаляемых, ЛокальныеПути); - - //@skip-check constructor-function-return-section - Возврат Результат; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция СоздатьЗаголовкиЗапроса(Знач Токен) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - - Заголовки = Новый Соответствие; - Заголовки.Вставить("Authorization", "Bearer " + Токен); - Возврат Заголовки; - -КонецФункции - -Функция ПолучитьУдаляемыеФайлы(УдаленныеФайлы, ЛокальныеПути, ЛокальныеПодкаталоги) - - МассивУдаляемых = Новый Массив; - - Для Каждого УдаленныйФайл Из УдаленныеФайлы["files"] Цикл - - ПутьУдаленногоОсновной = УдаленныйФайл["path"]; - ПутьУдаленногоДополнительный = "/" + УдаленныйФайл["path"]; - - Если УдаленныйФайл["is_directory"] Тогда - - СуществующийУдаленный = ЛокальныеПодкаталоги[ПутьУдаленногоОсновной]; - СуществующийУдаленный = ?(ЗначениеЗаполнено(СуществующийУдаленный) - , СуществующийУдаленный - , ЛокальныеПодкаталоги[ПутьУдаленногоДополнительный]); - - Иначе - СуществующийУдаленный = ЛокальныеПути[ПутьУдаленногоОсновной]; - СуществующийУдаленный = ?(ЗначениеЗаполнено(СуществующийУдаленный) - , СуществующийУдаленный - , ЛокальныеПути[ПутьУдаленногоДополнительный]); - - КонецЕсли; - - Если СуществующийУдаленный = Неопределено Тогда - МассивУдаляемых.Добавить(ПутьУдаленногоОсновной); - КонецЕсли; - - КонецЦикла; - - Возврат МассивУдаляемых; - -КонецФункции - -Функция ВыполнитьСинхронизацию(Токен, МассивУдаляемых, ЛокальныеПути) - - МассивОшибок = Новый Массив; - - Если Не МассивУдаляемых.Количество() = 0 Тогда - - Ответ = УдалитьВыбранныеФайлы(Токен, МассивУдаляемых); - - Если Не Ответ["result"] = "success" Тогда - МассивОшибок.Добавить(Ответ); - - Иначе - - // BSLLS:UnusedLocalVariable-off - - //@skip-check module-unused-local-variable - СообщениеУдаления = СтрШаблон("Удалено %1 лишних файлов", Строка(МассивУдаляемых.Количество())); - Сообщить(СообщениеУдаления); - - // BSLLS:UnusedLocalVariable-on - - КонецЕсли; - - КонецЕсли; - - Всего = OPI_Инструменты.ЧислоВСтроку(ЛокальныеПути.Количество()); - Счетчик = 0; - - Для Каждого ЛокальныйПуть Из ЛокальныеПути Цикл - - Ответ = ЗагрузитьФайл(Токен, ЛокальныйПуть.Ключ, ЛокальныйПуть.Значение); - - Если Не Ответ["result"] = "success" Тогда - - МассивОшибок.Добавить(Ответ); - - Иначе - - // BSLLS:UnusedLocalVariable-off - - //@skip-check module-unused-local-variable - Прогресс = "[" + OPI_Инструменты.ЧислоВСтроку(Счетчик) + "/" + Всего + "] "; - Сообщить(Прогресс + ЛокальныйПуть.Ключ + Символы.ПС + Ответ["message"] + Символы.ПС); - - // BSLLS:UnusedLocalVariable-on - - КонецЕсли; - - Счетчик = Счетчик + 1; - - КонецЦикла; - - Возврат Новый Структура("errors,items", МассивОшибок.Количество(), МассивОшибок); - -КонецФункции - -Процедура ПолучитьНаборыЛокальныхПутей(ЛокальныйКаталог, УдаленныйКаталог, ЛокальныеПути, ЛокальныеПодкаталоги) - - ЛокальныйКаталог = СтрЗаменить(ЛокальныйКаталог, "\", "/"); - ЛокальныйКаталог = ?(СтрЗаканчиваетсяНа(ЛокальныйКаталог, "/"), ЛокальныйКаталог, ЛокальныйКаталог + "/"); - - ЛокальныеФайлы = НайтиФайлы(ЛокальныйКаталог, "*", Истина); - - Для Каждого ЛокальныйФайл Из ЛокальныеФайлы Цикл - - ТекущийАбсПуть = ЛокальныйФайл.ПолноеИмя; - ТекущийОтнПуть = Прав(ТекущийАбсПуть, СтрДлина(ТекущийАбсПуть) - СтрДлина(ЛокальныйКаталог)); - ТекущийОтнПуть = УдаленныйКаталог + ТекущийОтнПуть; - - ТекущийОтнПуть = СтрЗаменить(ТекущийОтнПуть, "\", "/"); - - Если ЛокальныйФайл.ЭтоКаталог() Тогда - ЛокальныеПодкаталоги.Вставить(ТекущийОтнПуть, ТекущийАбсПуть); - Иначе - ЛокальныеПути.Вставить(ТекущийОтнПуть, ТекущийАбсПуть); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - - -#Region Alternate - -Function GetSiteData(Val Token, Val Website = "") Export - Return ПолучитьДанныеОСайте(Token, Website); -EndFunction - -Function GetToken(Val Login, Val Password) Export - Return ПолучитьТокен(Login, Password); -EndFunction - -Function UploadFile(Val Token, Val Path, Val Data) Export - Return ЗагрузитьФайл(Token, Path, Data); -EndFunction - -Function UploadFiles(Val Token, Val FileMapping, Val Singly = False) Export - Return ЗагрузитьФайлы(Token, FileMapping, Singly); -EndFunction - -Function DeleteSelectedFiles(Val Token, Val Paths) Export - Return УдалитьВыбранныеФайлы(Token, Paths); -EndFunction - -Function GetFilesList(Val Token, Val Path = "") Export - Return ПолучитьСписокФайлов(Token, Path); -EndFunction - -Function SynchronizeFolders(Val Token, Val LocalFolder, Val RemoteFolder = "") Export - Return СинхронизироватьКаталоги(Token, LocalFolder, RemoteFolder); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_Neocities.os +// Lib: Neocities +// CLI: neocities +// Keywords: neocities + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ПолучениеДанных + +// Получить данные о сайте +// Получает информацию о сайте по его имени или токену +// +// Примечание: +// Документация Neocities API: [neocities.org/api](@neocities.org/api) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Сайт - Строка - Имя сайта (логин) для получения информации. Текущий, если не заполнено - sitename +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities +Функция ПолучитьДанныеОСайте(Знач Токен, Знач Сайт = "") Экспорт + + URL = "https://neocities.org/api/info"; + + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("sitename", Сайт, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить токен +// Получает токен авторизации по логину и паролю +// +// Примечание: +// Документация Neocities API: [neocities.org/api](@neocities.org/api) +// +// Параметры: +// Логин - Строка - Логин пользователя - login +// Пароль - Строка - Пароль пользователя - password +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities +Функция ПолучитьТокен(Знач Логин, Знач Пароль) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); + + URL = "neocities.org"; + Таймаут = 120; + + Попытка + + ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(); + БезопасноеСоединение = Новый HTTPСоединение(URL, 443, Логин, Пароль, , Таймаут, ЗащищенноеСоединение); + + Исключение + + URL = "https://" + URL; + БезопасноеСоединение = Новый HTTPСоединение(URL, 443, Логин, Пароль, , Таймаут); + + КонецПопытки; + + Ответ = БезопасноеСоединение.Получить(Новый HTTPЗапрос("/api/key")); + + ЧтениеJSON = Новый ЧтениеJSON(); + ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку()); + + Ответ = ПрочитатьJSON(ЧтениеJSON); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область РаботаСФайлами + +// Загрузить файл +// Загружает одиночный файл на сервер Neocities +// +// Примечание: +// Документация Neocities API: [neocities.org/api](@neocities.org/api) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Путь - Строка - Целевой путь файла на Neocities - path +// Данные - Строка, ДвоичныеДанные - URL, путь или данные файла для загрузки - file +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities +Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Данные) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные); + + URL = "https://neocities.org/api/upload"; + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + СоответствиеФайла = Новый Соответствие; + СоответствиеФайла.Вставить(Путь + "|" + Путь, Данные); + + Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, , СоответствиеФайла, "multipart/form-data", Заголовки); + + Возврат Ответ; + +КонецФункции + +// Загрузить файлы +// Загружает несколько файлов на сервер Neocities +// +// Примечание: +// Документация Neocities API: [neocities.org/api](@neocities.org/api) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// СоответствиеФайлов - Соответствие Из КлючИЗначение - Файлы для загрузки: Ключ > путь на NC, Значение > Файл - files +// ПоОдному - Булево - Истина > отправляет файлы отдельными запросами - singly +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities +Функция ЗагрузитьФайлы(Знач Токен, Знач СоответствиеФайлов, Знач ПоОдному = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(ПоОдному); + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеФайлов); + + КонечныйОтвет = Новый Массив; + ОбработанноеСоответствие = Новый Соответствие; + + Для Каждого ФайлОтправки Из СоответствиеФайлов Цикл + + Если ПоОдному Тогда + + Ответ = ЗагрузитьФайл(Токен, ФайлОтправки.Ключ, ФайлОтправки.Значение); + КонечныйОтвет.Добавить(Ответ); + + Иначе + + ТекущийПуть = ФайлОтправки.Ключ; + ТекущиеДанные = ФайлОтправки.Значение; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПуть); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ТекущиеДанные); + + ОбработанноеСоответствие.Вставить(ТекущийПуть + "|" + ТекущийПуть, ТекущиеДанные); + + КонецЕсли; + + КонецЦикла; + + Если Не ПоОдному Тогда + + URL = "https://neocities.org/api/upload"; + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + КонечныйОтвет = OPI_ЗапросыHTTP.PostMultipart(URL + , + , ОбработанноеСоответствие + , "multipart/form-data" + , Заголовки); + + КонецЕсли; + + Возврат КонечныйОтвет; + +КонецФункции + +// Удалить выбранные файлы +// Удаляет файл или несколько файлов с сервера Neocities +// +// Примечание: +// Документация Neocities API: [neocities.org/api](@neocities.org/api) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Пути - Строка, Массив Из Строка - Путь или несколько путей удаляемых файлов - paths +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities +Функция УдалитьВыбранныеФайлы(Знач Токен, Знач Пути) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьМассив(Пути); + + URL = "https://neocities.org/api/delete"; + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Для Н = 0 По Пути.ВГраница() Цикл + + ТекущееЗначение = Пути[Н]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущееЗначение); + + Пути.Установить(Н, "filenames[]=" + ТекущееЗначение); + + КонецЦикла; + + ПутиСтрокой = СтрСоединить(Пути, "&"); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, ПутиСтрокой, Заголовки, Ложь); + + Возврат Ответ; + +КонецФункции + +// Получить список файлов +// Получает список файлов с отбором каталога или без +// +// Примечание: +// Документация Neocities API: [neocities.org/api](@neocities.org/api) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Путь - Строка - Отбор файлов по каталогу. Все, если не заполнено - path +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities +Функция ПолучитьСписокФайлов(Знач Токен, Знач Путь = "") Экспорт + + URL = "https://neocities.org/api/list"; + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Синхронизировать каталоги +// Создает копию локального каталога по выбранному пути на сервере +// +// Примечание: +// Документация Neocities API: [neocities.org/api](@neocities.org/api) +// Метод удаляет файлы на сервере, если они отсутствуют в локальном каталоге +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// ЛокальныйКаталог - Строка - Локальный каталог источник - local +// УдаленныйКаталог - Строка - Удаленный каталог приемника. Корень, если не заполнено - remote +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - информация об ошибках синхронизации +Функция СинхронизироватьКаталоги(Знач Токен, Знач ЛокальныйКаталог, Знач УдаленныйКаталог = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ЛокальныйКаталог); + OPI_ПреобразованиеТипов.ПолучитьСтроку(УдаленныйКаталог); + + Сообщить("Начало синхронизации..."); + + Если ЗначениеЗаполнено(УдаленныйКаталог) Тогда + УдаленныйКаталог = ?(СтрЗаканчиваетсяНа(УдаленныйКаталог, "/"), УдаленныйКаталог, УдаленныйКаталог + "/"); + КонецЕсли; + + УдаленныеФайлы = ПолучитьСписокФайлов(Токен, УдаленныйКаталог); + + Если Не УдаленныеФайлы["result"] = "success" Тогда + //@skip-check constructor-function-return-section + Возврат УдаленныеФайлы; + КонецЕсли; + + ЛокальныеПути = Новый Соответствие; + ЛокальныеПодкаталоги = Новый Соответствие; + + ПолучитьНаборыЛокальныхПутей(ЛокальныйКаталог, УдаленныйКаталог, ЛокальныеПути, ЛокальныеПодкаталоги); + + МассивУдаляемых = ПолучитьУдаляемыеФайлы(УдаленныеФайлы, ЛокальныеПути, ЛокальныеПодкаталоги); + Результат = ВыполнитьСинхронизацию(Токен, МассивУдаляемых, ЛокальныеПути); + + //@skip-check constructor-function-return-section + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СоздатьЗаголовкиЗапроса(Знач Токен) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + + Заголовки = Новый Соответствие; + Заголовки.Вставить("Authorization", "Bearer " + Токен); + Возврат Заголовки; + +КонецФункции + +Функция ПолучитьУдаляемыеФайлы(УдаленныеФайлы, ЛокальныеПути, ЛокальныеПодкаталоги) + + МассивУдаляемых = Новый Массив; + + Для Каждого УдаленныйФайл Из УдаленныеФайлы["files"] Цикл + + ПутьУдаленногоОсновной = УдаленныйФайл["path"]; + ПутьУдаленногоДополнительный = "/" + УдаленныйФайл["path"]; + + Если УдаленныйФайл["is_directory"] Тогда + + СуществующийУдаленный = ЛокальныеПодкаталоги[ПутьУдаленногоОсновной]; + СуществующийУдаленный = ?(ЗначениеЗаполнено(СуществующийУдаленный) + , СуществующийУдаленный + , ЛокальныеПодкаталоги[ПутьУдаленногоДополнительный]); + + Иначе + СуществующийУдаленный = ЛокальныеПути[ПутьУдаленногоОсновной]; + СуществующийУдаленный = ?(ЗначениеЗаполнено(СуществующийУдаленный) + , СуществующийУдаленный + , ЛокальныеПути[ПутьУдаленногоДополнительный]); + + КонецЕсли; + + Если СуществующийУдаленный = Неопределено Тогда + МассивУдаляемых.Добавить(ПутьУдаленногоОсновной); + КонецЕсли; + + КонецЦикла; + + Возврат МассивУдаляемых; + +КонецФункции + +Функция ВыполнитьСинхронизацию(Токен, МассивУдаляемых, ЛокальныеПути) + + МассивОшибок = Новый Массив; + + Если Не МассивУдаляемых.Количество() = 0 Тогда + + Ответ = УдалитьВыбранныеФайлы(Токен, МассивУдаляемых); + + Если Не Ответ["result"] = "success" Тогда + МассивОшибок.Добавить(Ответ); + + Иначе + + // BSLLS:UnusedLocalVariable-off + + //@skip-check module-unused-local-variable + СообщениеУдаления = СтрШаблон("Удалено %1 лишних файлов", Строка(МассивУдаляемых.Количество())); + Сообщить(СообщениеУдаления); + + // BSLLS:UnusedLocalVariable-on + + КонецЕсли; + + КонецЕсли; + + Всего = OPI_Инструменты.ЧислоВСтроку(ЛокальныеПути.Количество()); + Счетчик = 0; + + Для Каждого ЛокальныйПуть Из ЛокальныеПути Цикл + + Ответ = ЗагрузитьФайл(Токен, ЛокальныйПуть.Ключ, ЛокальныйПуть.Значение); + + Если Не Ответ["result"] = "success" Тогда + + МассивОшибок.Добавить(Ответ); + + Иначе + + // BSLLS:UnusedLocalVariable-off + + //@skip-check module-unused-local-variable + Прогресс = "[" + OPI_Инструменты.ЧислоВСтроку(Счетчик) + "/" + Всего + "] "; + Сообщить(Прогресс + ЛокальныйПуть.Ключ + Символы.ПС + Ответ["message"] + Символы.ПС); + + // BSLLS:UnusedLocalVariable-on + + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + Возврат Новый Структура("errors,items", МассивОшибок.Количество(), МассивОшибок); + +КонецФункции + +Процедура ПолучитьНаборыЛокальныхПутей(ЛокальныйКаталог, УдаленныйКаталог, ЛокальныеПути, ЛокальныеПодкаталоги) + + ЛокальныйКаталог = СтрЗаменить(ЛокальныйКаталог, "\", "/"); + ЛокальныйКаталог = ?(СтрЗаканчиваетсяНа(ЛокальныйКаталог, "/"), ЛокальныйКаталог, ЛокальныйКаталог + "/"); + + ЛокальныеФайлы = НайтиФайлы(ЛокальныйКаталог, "*", Истина); + + Для Каждого ЛокальныйФайл Из ЛокальныеФайлы Цикл + + ТекущийАбсПуть = ЛокальныйФайл.ПолноеИмя; + ТекущийОтнПуть = Прав(ТекущийАбсПуть, СтрДлина(ТекущийАбсПуть) - СтрДлина(ЛокальныйКаталог)); + ТекущийОтнПуть = УдаленныйКаталог + ТекущийОтнПуть; + + ТекущийОтнПуть = СтрЗаменить(ТекущийОтнПуть, "\", "/"); + + Если ЛокальныйФайл.ЭтоКаталог() Тогда + ЛокальныеПодкаталоги.Вставить(ТекущийОтнПуть, ТекущийАбсПуть); + Иначе + ЛокальныеПути.Вставить(ТекущийОтнПуть, ТекущийАбсПуть); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_Notion.os b/src/ru/OInt/core/Modules/OPI_Notion.os index 2ddd580c1e..2f81938e50 100644 --- a/src/ru/OInt/core/Modules/OPI_Notion.os +++ b/src/ru/OInt/core/Modules/OPI_Notion.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_Notion.os +// OneScript: ./OInt/core/Modules/OPI_Notion.os // Lib: Notion // CLI: notion // Keywords: notion @@ -893,60 +893,3 @@ #КонецОбласти #КонецОбласти - - -#Region Alternate - -Function CreatePage(Val Token, Val Parent, Val Title) Export - Return СоздатьСтраницу(Token, Parent, Title); -EndFunction - -Function CreatePageInDatabase(Val Token, Val Parent, Val Data) Export - Return СоздатьСтраницуВБазу(Token, Parent, Data); -EndFunction - -Function GetPage(Val Token, Val Page) Export - Return ПолучитьСтраницу(Token, Page); -EndFunction - -Function EditPageProperties(Val Token, Val Page, Val Data = "", Val Icon = "", Val Cover = "", Val Archived = False) Export - Return ИзменитьСвойстваСтраницы(Token, Page, Data, Icon, Cover, Archived); -EndFunction - -Function CreateDatabase(Val Token, Val Parent, Val Title, Val Properties = "") Export - Return СоздатьБазуДанных(Token, Parent, Title, Properties); -EndFunction - -Function GetDatabase(Val Token, Val Base) Export - Return ПолучитьБазуДанных(Token, Base); -EndFunction - -Function EditDatabaseProperties(Val Token, Val Base, Val Properties = "", Val Title = "", Val Description = "") Export - Return ИзменитьСвойстваБазы(Token, Base, Properties, Title, Description); -EndFunction - -Function CreateBlock(Val Token, Val Parent, Val Block, Val InsertAfter = "") Export - Return СоздатьБлок(Token, Parent, Block, InsertAfter); -EndFunction - -Function ReturnBlock(Val Token, Val BlockID, Val OnlyBase = True) Export - Return ВернутьБлок(Token, BlockID, OnlyBase); -EndFunction - -Function ReturnChildBlocks(Val Token, Val BlockID) Export - Return ВернутьДочерниеБлоки(Token, BlockID); -EndFunction - -Function DeleteBlock(Val Token, Val BlockID) Export - Return УдалитьБлок(Token, BlockID); -EndFunction - -Function UserList(Val Token) Export - Return СписокПользователей(Token); -EndFunction - -Function GetUserData(Val Token, Val UserID) Export - Return ПолучитьДанныеПользователя(Token, UserID); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_Ollama.os b/src/ru/OInt/core/Modules/OPI_Ollama.os index 49370f8a6d..0b478a2790 100644 --- a/src/ru/OInt/core/Modules/OPI_Ollama.os +++ b/src/ru/OInt/core/Modules/OPI_Ollama.os @@ -1,821 +1,732 @@ -// OneScript: ./OInt/core/Modules/OPI_Ollama.os -// Lib: Ollama -// CLI: ollama - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params -//@skip-check constructor-function-return-section -//@skip-check doc-comment-collection-item-type - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область ОбработкаЗапросов - -// Получить версию -// Получает версию Ollama -// -// Примечание: -// Метод в документации API: [Version](@github.com/ollama/ollama/blob/main/docs/api.md#version) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ПолучитьВерсию(Знач URL, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/version"); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Получить ответ -// Генерирует ответ по заданному текстовому запросу -// -// Примечание: -// Метод в документации API: [Generate a completion](@github.com/ollama/ollama/blob/main/docs/api.md#generate-a-completion) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// Вопрос - Строка - Текст запроса - prompt -// ДопПараметры - Структура Из КлючИЗначение - Доп. параметры. См. ПолучитьСтруктуруПараметровЗапроса - options -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ПолучитьОтвет(Знач URL, Знач Модель, Знач Вопрос, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/generate"); - - Параметры = Новый Структура; - Параметры.Вставить("suffix", ""); - - OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("prompt", Вопрос, "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("stream", Ложь , "Булево", Параметры); - - ОбработатьПараметры(Параметры, ДопПараметры); - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Получить ответ в контексте -// Получает очередной ответ от модели в соответствии с историей сообщений -// -// Примечание: -// Метод в документации API: [Generate a chat completion](@github.com/ollama/ollama/blob/main/docs/api.md#generate-a-chat-completion) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// Сообщения - Массив Из Структура - История сообщений. См. ПолучитьСтруктуруСообщенияКонтекста - msgs -// ДопПараметры - Структура Из КлючИЗначение - Доп. параметры. См. ПолучитьСтруктуруПараметровЗапроса - options -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ПолучитьОтветВКонтексте(Знач URL, Знач Модель, Знач Сообщения, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/chat"); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("messages", Сообщения, "Коллекция", Параметры); - OPI_Инструменты.ДобавитьПоле("stream" , Ложь , "Булево" , Параметры); - - ОбработатьПараметры(Параметры, ДопПараметры); - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Получить представления -// Получает представления (embeddings) для заданных вводных -// -// Примечание: -// Метод в документации API: [Generate Embeddings](@github.com/ollama/ollama/blob/main/docs/api.md#generate-embeddings) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// Вопрос - Массив Из Строка - Строка или массив строк запросов - input -// ДопПараметры - Структура Из КлючИЗначение - Доп. параметры. См. ПолучитьСтруктуруПараметровПредставлений - options -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ПолучитьПредставления(Знач URL, Знач Модель, Знач Вопрос, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/embed"); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("model", Модель, "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("input", Вопрос, "Строка", Параметры); - - ОбработатьПараметры(Параметры, ДопПараметры); - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Получить структуру параметров запроса -// Получает структуру дополнительных параметров для обработки запроса -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьСтруктуруПараметровЗапроса(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("format" , "<формат, в котором возвращается ответ: json или схема JSON>"); - СтруктураПолей.Вставить("options" , "<дополнительные параметры модели, перечисленные в документации к Modelfile>"); - СтруктураПолей.Вставить("system" , "<системное сообщение (переопределяет то, что определено в Modelfile)>"); - СтруктураПолей.Вставить("template" , "<шаблон промпта (переопределяет то, что определено в Modelfile)>"); - СтруктураПолей.Вставить("raw" , "<истина > откюлчить форматирование промпта>"); - СтруктураПолей.Вставить("keep_alive", "<как долго модель будет оставаться загруженной в память после запроса>"); - СтруктураПолей.Вставить("suffix" , "<текст после ответа модели>"); - СтруктураПолей.Вставить("images" , "<список картинок в формате Base64 (для многомодальных моделей, вроде llava)>"); - - Если Пустая Тогда - СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураПолей; - -КонецФункции - -// Получить структуру параметров представлений -// Получает структуру дополнительных параметров для обработки запросов получения представлений -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьСтруктуруПараметровПредставлений(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("options" , "<дополнительные параметры модели, перечисленные в документации к Modelfile>"); - СтруктураПолей.Вставить("keep_alive", "<как долго модель будет оставаться загруженной в память после запроса>"); - СтруктураПолей.Вставить("truncate" , "<обрезает конец каждого ответа, чтобы уложиться в длину контекста. Возвращает ошибку, если false и длина превышена>"); - - Если Пустая Тогда - СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураПолей; - -КонецФункции - -// Получить структуру параметров в контексте -// Получает структуру дополнительных параметров для обработки запроса в контексте -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьСтруктуруПараметровВКонтексте(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("format" , "<формат, в котором возвращается ответ: json или схема JSON>"); - СтруктураПолей.Вставить("options" , "<дополнительные параметры модели, перечисленные в документации к Modelfile>"); - СтруктураПолей.Вставить("keep_alive", "<как долго модель будет оставаться загруженной в память после запроса>"); - СтруктураПолей.Вставить("tools" , "<список инструментов в формате JSON (для моделей, которые это поддерживают)>"); - - Если Пустая Тогда - СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураПолей; - -КонецФункции - -// Получить структуру сообщения контекста -// Получает структуру сообщения для списка сообщений запроса в контексте -// -// Параметры: -// Роль - Строка - Источник сообщения: system, user, assistant, tool - role -// Текст - Строка - Текст сообщения - text -// Картинки - Массив Из Строка - Список картинок в формате Base64 (для многомодальных моделей, вроде llava) - images -// Инструменты - Массив Из Строка - Список инструментов в формате JSON, которые модель должна использовать - tools -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьСтруктуруСообщенияКонтекста(Знач Роль, Знач Текст, Знач Картинки = "", Знач Инструменты = "") Экспорт - - СтруктураПолей = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("role" , Роль , "Строка" , СтруктураПолей); - OPI_Инструменты.ДобавитьПоле("content" , Текст , "Строка" , СтруктураПолей); - OPI_Инструменты.ДобавитьПоле("images" , Картинки , "Коллекция", СтруктураПолей); - OPI_Инструменты.ДобавитьПоле("tool_calls", Инструменты, "Коллекция", СтруктураПолей); - - Возврат СтруктураПолей; - -КонецФункции - -#КонецОбласти - -#Область РаботаСМоделями - -// Получить список моделей -// Получает список локальных моделей -// -// Примечание: -// Метод в документации API: [List Local Models](@github.com/ollama/ollama/blob/main/docs/api.md#list-local-models) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ПолучитьСписокМоделей(Знач URL, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/tags"); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список запущенных моделей -// Получает список запущенных моделей -// -// Примечание: -// Метод в документации API: [List Running Models](@github.com/ollama/ollama/blob/main/docs/api.md#list-running-models) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ПолучитьСписокЗапущенныхМоделей(Знач URL, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/ps"); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Получить информацию о модели -// Получает информацию о выбранной модели -// -// Примечание: -// Метод в документации API: [Show Model Information](@github.com/ollama/ollama/blob/main/docs/api.md#show-model-information) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// Подробно - Булево - Возврат полной информации о модели - verbose -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ПолучитьИнформациюОМодели(Знач URL, Знач Модель, Знач Подробно = Истина, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/show"); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("verbose", Подробно, "Булево", Параметры); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Создать модель -// Создает новую модель с заданными настройками -// -// Примечание: -// Метод в документации API: [Create a Model](@github.com/ollama/ollama/blob/main/docs/api.md#create-a-model) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// Настройки - Структура Из КлючИЗначение - Настройки модели. См. ПолучитьСтруктуруНастроекМодели - settings -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция СоздатьМодель(Знач URL, Знач Модель, Знач Настройки, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/create"); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("stream", Ложь , "Булево" , Параметры); - - ОбработатьПараметры(Параметры, Настройки); - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Копировать модель -// Копирует существующую модель -// -// Примечание: -// Метод в документации API: [Copy a Model](@github.com/ollama/ollama/blob/main/docs/api.md#copy-a-model) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя существующей модели - model -// Имя - Строка - Имя новой модели - name -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция КопироватьМодель(Знач URL, Знач Модель, Знач Имя, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/copy"); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("source" , Модель, "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("destination", Имя , "Строка", Параметры); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки, , Истина); - Ответ = Новый Структура("status_code", Ответ.КодСостояния); - - Возврат Ответ; - -КонецФункции - -// Удалить модель -// Удаляет существующую модель -// -// Примечание: -// Метод в документации API: [Delete a Model](@github.com/ollama/ollama/blob/main/docs/api.md#delete-a-model) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция УдалитьМодель(Знач URL, Знач Модель, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/delete"); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка", Параметры); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.DeleteСТелом(URL, Параметры, ДопЗаголовки, , Истина); - Ответ = Новый Структура("status_code", Ответ.КодСостояния); - - Возврат Ответ; - -КонецФункции - -// Загрузить модель в память -// Загружает выбранную модель в оперативную память -// -// Примечание: -// Метод в документации API: [Load a model](@github.com/ollama/ollama/blob/main/docs/api.md#load-a-model) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// Период - Число - Время удержания модели в памяти в секундах - keep -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ЗагрузитьМодельВПамять(Знач URL, Знач Модель, Знач Период = 300, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/generate"); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("keep_alive", Период, "Число" , Параметры); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Выгрузить модель из памяти -// Выгружает выбранную модель из памяти -// -// Примечание: -// Метод в документации API: [Unload a model](@github.com/ollama/ollama/blob/main/docs/api.md#unload-a-model) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ВыгрузитьМодельИзПамяти(Знач URL, Знач Модель, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/generate"); - - Параметры = Новый Структура; - Параметры.Вставить("keep_alive", 0); - - OPI_Инструменты.ДобавитьПоле("model", Модель, "Строка", Параметры); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Отправить модель -// Загружает модель в библиотеку моделей -// -// Примечание: -// Метод в документации API: [Push a Model](@github.com/ollama/ollama/blob/main/docs/api.md#push-a-model) -// Имя модели должно быть в формате /:^ -// Требуется регистрация на ollama.ai и добавление открытого ключа. -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// Небезопасно - Булево - Разрешает незащищенное соединение с библиотекой - insecure -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ОтправитьМодель(Знач URL, Знач Модель, Знач Небезопасно = Ложь, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/push"); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("insecure", Небезопасно, "Булево", Параметры); - OPI_Инструменты.ДобавитьПоле("stream" , Ложь , "Булево", Параметры); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Скачать модель -// Скачивает модель из библиотеки -// -// Примечание: -// Метод в документации API: [Pull a Model](@github.com/ollama/ollama/blob/main/docs/api.md#pull-a-model) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Модель - Строка - Имя модели - model -// Небезопасно - Булево - Разрешает незащищенное соединение с библиотекой - insecure -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция СкачатьМодель(Знач URL, Знач Модель, Знач Небезопасно = Ложь, Знач ДопЗаголовки = "") Экспорт - - ДополнитьURL(URL, "api/pull"); - - Параметры = Новый Структура; - - OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("insecure", Небезопасно, "Булево", Параметры); - OPI_Инструменты.ДобавитьПоле("stream" , Ложь , "Булево", Параметры); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); - - Возврат Ответ; - -КонецФункции - -// Получить структуру настроек модели -// Получает структуру настроек для создания новой модели -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьСтруктуруНастроекМодели(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("from" , "<имя существующей модели, из которой будет создана новая>"); - СтруктураПолей.Вставить("files" , "<список имен файлов или SHA256 блобов, из которых будет создана модель>"); - СтруктураПолей.Вставить("adapters" , "<список имен файлов или SHA256 блобов для LORA адаптеров>"); - СтруктураПолей.Вставить("template" , "<шаблон промптов новой модели>"); - СтруктураПолей.Вставить("license" , "<строка или список строк текста лицензий для модели>"); - СтруктураПолей.Вставить("system" , "<строка с системным промптом для модели>"); - СтруктураПолей.Вставить("parameters", "<список параметров модели>"); - СтруктураПолей.Вставить("messages" , "<список объектов сообщений контекста>"); - СтруктураПолей.Вставить("quantize" , "<квантовать неквантованную (например, float16) модель>"); - - Если Пустая Тогда - СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураПолей; - -КонецФункции - -#КонецОбласти - -#Область РаботаСBlob - -// Отправить BLOB -// Отправляет двоичные данные на сервер Ollama -// -// Примечание: -// Метод в документации API: [Push a Blob](@github.com/ollama/ollama/blob/main/docs/api.md#push-a-blob) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// Данные - Строка, ДвоичныеДанные - Данные или путь к файлу - data -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ОтправитьBlob(Знач URL, Знач Данные, Знач ДопЗаголовки = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина); - - ДополнитьURL(URL, "api/blobs/sha256:%1"); - - Хеш = OPI_Криптография.Хеш(Данные, ХешФункция.SHA256); - Хеш = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(Хеш)); - - URL = СтрШаблон(URL, Хеш); - - ОбработатьЗаголовки(ДопЗаголовки); - Ответ = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Данные) - .УстановитьЗаголовки(ДопЗаголовки) - .ОбработатьЗапрос("POST") - .ВернутьОтвет(Ложь, Истина); - - Ответ = Новый Структура("status_code,digest", Ответ.КодСостояния, Хеш); - - Возврат Ответ; - -КонецФункции - -// Проверить BLOB -// Проверяет существование BLOB по его SHA256 дайджесту -// -// Примечание: -// Метод в документации API: [Check if a Blob Exists](@github.com/ollama/ollama/blob/main/docs/api.md#check-if-a-blob-exists) -// -// Параметры: -// URL - Строка - URL сервера Ollama - url -// SHA256 - Строка - SHA256 дайджест нужного BLOB - digest -// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат обработки -Функция ПроверитьBlob(Знач URL, Знач SHA256, Знач ДопЗаголовки = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(SHA256); - - ДополнитьURL(URL, "api/blobs/sha256:%1"); - - URL = СтрШаблон(URL, SHA256); - - ОбработатьЗаголовки(ДопЗаголовки); - - Ответ = OPI_ЗапросыHTTP.Head(URL, , ДопЗаголовки, , Истина); - Ответ = Новый Структура("status_code", Ответ.КодСостояния); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Процедура ДополнитьURL(URL, Знач Путь) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); - - URL = ?(СтрЗаканчиваетсяНа(URL, "/"), URL, URL + "/"); - URL = URL + Путь; - -КонецПроцедуры - -Процедура ОбработатьПараметры(Параметры, Знач ДопПараметры) - - Если Не ЗначениеЗаполнено(ДопПараметры) Тогда - Возврат; - КонецЕсли; - - ТекстОшибки = "Передана некорректная коллекция доп. параметров!"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ДопПараметры, ТекстОшибки); - - Для Каждого ДопПараметр Из ДопПараметры Цикл - Параметры.Вставить(ДопПараметр.Ключ, ДопПараметр.Значение); - КонецЦикла; - -КонецПроцедуры - -Процедура ОбработатьЗаголовки(ДопЗаголовки) - - Если Не ЗначениеЗаполнено(ДопЗаголовки) Тогда - ДопЗаголовки = Новый Соответствие; - Иначе - ТекстОшибки = "Передана некорректная коллекция доп. заголовков!"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ДопЗаголовки, ТекстОшибки); - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти - - -#Region Alternate - -Function GetVersion(Val URL, Val AdditionalHeaders = "") Export - Return ПолучитьВерсию(URL, AdditionalHeaders); -EndFunction - -Function GetResponse(Val URL, Val Model, Val Question, Val AdditionalParameters = "", Val AdditionalHeaders = "") Export - Return ПолучитьОтвет(URL, Model, Question, AdditionalParameters, AdditionalHeaders); -EndFunction - -Function GetContextResponse(Val URL, Val Model, Val Messages, Val AdditionalParameters = "", Val AdditionalHeaders = "") Export - Return ПолучитьОтветВКонтексте(URL, Model, Messages, AdditionalParameters, AdditionalHeaders); -EndFunction - -Function GetEmbeddings(Val URL, Val Model, Val Question, Val AdditionalParameters = "", Val AdditionalHeaders = "") Export - Return ПолучитьПредставления(URL, Model, Question, AdditionalParameters, AdditionalHeaders); -EndFunction - -Function GetRequestParameterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруПараметровЗапроса(Clear); -EndFunction - -Function GetEmbeddingsParameterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруПараметровПредставлений(Clear); -EndFunction - -Function GetContextParameterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруПараметровВКонтексте(Clear); -EndFunction - -Function GetContextMessageStructure(Val Role, Val Text, Val Pictures = "", Val Tools = "") Export - Return ПолучитьСтруктуруСообщенияКонтекста(Role, Text, Pictures, Tools); -EndFunction - -Function GetModelList(Val URL, Val AdditionalHeaders = "") Export - Return ПолучитьСписокМоделей(URL, AdditionalHeaders); -EndFunction - -Function ListRunningModels(Val URL, Val AdditionalHeaders = "") Export - Return ПолучитьСписокЗапущенныхМоделей(URL, AdditionalHeaders); -EndFunction - -Function GetModelInformation(Val URL, Val Model, Val Detailed = True, Val AdditionalHeaders = "") Export - Return ПолучитьИнформациюОМодели(URL, Model, Detailed, AdditionalHeaders); -EndFunction - -Function CreateModel(Val URL, Val Model, Val Settings, Val AdditionalHeaders = "") Export - Return СоздатьМодель(URL, Model, Settings, AdditionalHeaders); -EndFunction - -Function CopyModel(Val URL, Val Model, Val Name, Val AdditionalHeaders = "") Export - Return КопироватьМодель(URL, Model, Name, AdditionalHeaders); -EndFunction - -Function DeleteModel(Val URL, Val Model, Val AdditionalHeaders = "") Export - Return УдалитьМодель(URL, Model, AdditionalHeaders); -EndFunction - -Function LoadModelToMemory(Val URL, Val Model, Val Period = 300, Val AdditionalHeaders = "") Export - Return ЗагрузитьМодельВПамять(URL, Model, Period, AdditionalHeaders); -EndFunction - -Function UnloadModelFromMemory(Val URL, Val Model, Val AdditionalHeaders = "") Export - Return ВыгрузитьМодельИзПамяти(URL, Model, AdditionalHeaders); -EndFunction - -Function PushModel(Val URL, Val Model, Val Insecure = False, Val AdditionalHeaders = "") Export - Return ОтправитьМодель(URL, Model, Insecure, AdditionalHeaders); -EndFunction - -Function PullModel(Val URL, Val Model, Val Insecure = False, Val AdditionalHeaders = "") Export - Return СкачатьМодель(URL, Model, Insecure, AdditionalHeaders); -EndFunction - -Function GetModelSettingsStructure(Val Clear = False) Export - Return ПолучитьСтруктуруНастроекМодели(Clear); -EndFunction - -Function PushBlob(Val URL, Val Data, Val AdditionalHeaders = "") Export - Return ОтправитьBlob(URL, Data, AdditionalHeaders); -EndFunction - -Function CheckBlob(Val URL, Val SHA256, Val AdditionalHeaders = "") Export - Return ПроверитьBlob(URL, SHA256, AdditionalHeaders); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_Ollama.os +// Lib: Ollama +// CLI: ollama + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params +//@skip-check constructor-function-return-section +//@skip-check doc-comment-collection-item-type + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ОбработкаЗапросов + +// Получить версию +// Получает версию Ollama +// +// Примечание: +// Метод в документации API: [Version](@github.com/ollama/ollama/blob/main/docs/api.md#version) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьВерсию(Знач URL, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/version"); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить ответ +// Генерирует ответ по заданному текстовому запросу +// +// Примечание: +// Метод в документации API: [Generate a completion](@github.com/ollama/ollama/blob/main/docs/api.md#generate-a-completion) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// Вопрос - Строка - Текст запроса - prompt +// ДопПараметры - Структура Из КлючИЗначение - Доп. параметры. См. ПолучитьСтруктуруПараметровЗапроса - options +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьОтвет(Знач URL, Знач Модель, Знач Вопрос, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/generate"); + + Параметры = Новый Структура; + Параметры.Вставить("suffix", ""); + + OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("prompt", Вопрос, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("stream", Ложь , "Булево", Параметры); + + ОбработатьПараметры(Параметры, ДопПараметры); + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить ответ в контексте +// Получает очередной ответ от модели в соответствии с историей сообщений +// +// Примечание: +// Метод в документации API: [Generate a chat completion](@github.com/ollama/ollama/blob/main/docs/api.md#generate-a-chat-completion) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// Сообщения - Массив Из Структура - История сообщений. См. ПолучитьСтруктуруСообщенияКонтекста - msgs +// ДопПараметры - Структура Из КлючИЗначение - Доп. параметры. См. ПолучитьСтруктуруПараметровЗапроса - options +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьОтветВКонтексте(Знач URL, Знач Модель, Знач Сообщения, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/chat"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("messages", Сообщения, "Коллекция", Параметры); + OPI_Инструменты.ДобавитьПоле("stream" , Ложь , "Булево" , Параметры); + + ОбработатьПараметры(Параметры, ДопПараметры); + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить представления +// Получает представления (embeddings) для заданных вводных +// +// Примечание: +// Метод в документации API: [Generate Embeddings](@github.com/ollama/ollama/blob/main/docs/api.md#generate-embeddings) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// Вопрос - Массив Из Строка - Строка или массив строк запросов - input +// ДопПараметры - Структура Из КлючИЗначение - Доп. параметры. См. ПолучитьСтруктуруПараметровПредставлений - options +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьПредставления(Знач URL, Знач Модель, Знач Вопрос, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/embed"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("model", Модель, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("input", Вопрос, "Строка", Параметры); + + ОбработатьПараметры(Параметры, ДопПараметры); + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить структуру параметров запроса +// Получает структуру дополнительных параметров для обработки запроса +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьСтруктуруПараметровЗапроса(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("format" , "<формат, в котором возвращается ответ: json или схема JSON>"); + СтруктураПолей.Вставить("options" , "<дополнительные параметры модели, перечисленные в документации к Modelfile>"); + СтруктураПолей.Вставить("system" , "<системное сообщение (переопределяет то, что определено в Modelfile)>"); + СтруктураПолей.Вставить("template" , "<шаблон промпта (переопределяет то, что определено в Modelfile)>"); + СтруктураПолей.Вставить("raw" , "<истина > откюлчить форматирование промпта>"); + СтруктураПолей.Вставить("keep_alive", "<как долго модель будет оставаться загруженной в память после запроса>"); + СтруктураПолей.Вставить("suffix" , "<текст после ответа модели>"); + СтруктураПолей.Вставить("images" , "<список картинок в формате Base64 (для многомодальных моделей, вроде llava)>"); + + Если Пустая Тогда + СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураПолей; + +КонецФункции + +// Получить структуру параметров представлений +// Получает структуру дополнительных параметров для обработки запросов получения представлений +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьСтруктуруПараметровПредставлений(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("options" , "<дополнительные параметры модели, перечисленные в документации к Modelfile>"); + СтруктураПолей.Вставить("keep_alive", "<как долго модель будет оставаться загруженной в память после запроса>"); + СтруктураПолей.Вставить("truncate" , "<обрезает конец каждого ответа, чтобы уложиться в длину контекста. Возвращает ошибку, если false и длина превышена>"); + + Если Пустая Тогда + СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураПолей; + +КонецФункции + +// Получить структуру параметров в контексте +// Получает структуру дополнительных параметров для обработки запроса в контексте +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьСтруктуруПараметровВКонтексте(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("format" , "<формат, в котором возвращается ответ: json или схема JSON>"); + СтруктураПолей.Вставить("options" , "<дополнительные параметры модели, перечисленные в документации к Modelfile>"); + СтруктураПолей.Вставить("keep_alive", "<как долго модель будет оставаться загруженной в память после запроса>"); + СтруктураПолей.Вставить("tools" , "<список инструментов в формате JSON (для моделей, которые это поддерживают)>"); + + Если Пустая Тогда + СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураПолей; + +КонецФункции + +// Получить структуру сообщения контекста +// Получает структуру сообщения для списка сообщений запроса в контексте +// +// Параметры: +// Роль - Строка - Источник сообщения: system, user, assistant, tool - role +// Текст - Строка - Текст сообщения - text +// Картинки - Массив Из Строка - Список картинок в формате Base64 (для многомодальных моделей, вроде llava) - images +// Инструменты - Массив Из Строка - Список инструментов в формате JSON, которые модель должна использовать - tools +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьСтруктуруСообщенияКонтекста(Знач Роль, Знач Текст, Знач Картинки = "", Знач Инструменты = "") Экспорт + + СтруктураПолей = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("role" , Роль , "Строка" , СтруктураПолей); + OPI_Инструменты.ДобавитьПоле("content" , Текст , "Строка" , СтруктураПолей); + OPI_Инструменты.ДобавитьПоле("images" , Картинки , "Коллекция", СтруктураПолей); + OPI_Инструменты.ДобавитьПоле("tool_calls", Инструменты, "Коллекция", СтруктураПолей); + + Возврат СтруктураПолей; + +КонецФункции + +#КонецОбласти + +#Область РаботаСМоделями + +// Получить список моделей +// Получает список локальных моделей +// +// Примечание: +// Метод в документации API: [List Local Models](@github.com/ollama/ollama/blob/main/docs/api.md#list-local-models) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьСписокМоделей(Знач URL, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/tags"); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список запущенных моделей +// Получает список запущенных моделей +// +// Примечание: +// Метод в документации API: [List Running Models](@github.com/ollama/ollama/blob/main/docs/api.md#list-running-models) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьСписокЗапущенныхМоделей(Знач URL, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/ps"); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить информацию о модели +// Получает информацию о выбранной модели +// +// Примечание: +// Метод в документации API: [Show Model Information](@github.com/ollama/ollama/blob/main/docs/api.md#show-model-information) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// Подробно - Булево - Возврат полной информации о модели - verbose +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьИнформациюОМодели(Знач URL, Знач Модель, Знач Подробно = Истина, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/show"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("verbose", Подробно, "Булево", Параметры); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Создать модель +// Создает новую модель с заданными настройками +// +// Примечание: +// Метод в документации API: [Create a Model](@github.com/ollama/ollama/blob/main/docs/api.md#create-a-model) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// Настройки - Структура Из КлючИЗначение - Настройки модели. См. ПолучитьСтруктуруНастроекМодели - settings +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция СоздатьМодель(Знач URL, Знач Модель, Знач Настройки, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/create"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("stream", Ложь , "Булево" , Параметры); + + ОбработатьПараметры(Параметры, Настройки); + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Копировать модель +// Копирует существующую модель +// +// Примечание: +// Метод в документации API: [Copy a Model](@github.com/ollama/ollama/blob/main/docs/api.md#copy-a-model) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя существующей модели - model +// Имя - Строка - Имя новой модели - name +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция КопироватьМодель(Знач URL, Знач Модель, Знач Имя, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/copy"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("source" , Модель, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("destination", Имя , "Строка", Параметры); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки, , Истина); + Ответ = Новый Структура("status_code", Ответ.КодСостояния); + + Возврат Ответ; + +КонецФункции + +// Удалить модель +// Удаляет существующую модель +// +// Примечание: +// Метод в документации API: [Delete a Model](@github.com/ollama/ollama/blob/main/docs/api.md#delete-a-model) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция УдалитьМодель(Знач URL, Знач Модель, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/delete"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка", Параметры); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.DeleteСТелом(URL, Параметры, ДопЗаголовки, , Истина); + Ответ = Новый Структура("status_code", Ответ.КодСостояния); + + Возврат Ответ; + +КонецФункции + +// Загрузить модель в память +// Загружает выбранную модель в оперативную память +// +// Примечание: +// Метод в документации API: [Load a model](@github.com/ollama/ollama/blob/main/docs/api.md#load-a-model) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// Период - Число - Время удержания модели в памяти в секундах - keep +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ЗагрузитьМодельВПамять(Знач URL, Знач Модель, Знач Период = 300, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/generate"); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("keep_alive", Период, "Число" , Параметры); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Выгрузить модель из памяти +// Выгружает выбранную модель из памяти +// +// Примечание: +// Метод в документации API: [Unload a model](@github.com/ollama/ollama/blob/main/docs/api.md#unload-a-model) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ВыгрузитьМодельИзПамяти(Знач URL, Знач Модель, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/generate"); + + Параметры = Новый Структура; + Параметры.Вставить("keep_alive", 0); + + OPI_Инструменты.ДобавитьПоле("model", Модель, "Строка", Параметры); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Отправить модель +// Загружает модель в библиотеку моделей +// +// Примечание: +// Метод в документации API: [Push a Model](@github.com/ollama/ollama/blob/main/docs/api.md#push-a-model) +// Имя модели должно быть в формате /:^ +// Требуется регистрация на ollama.ai и добавление открытого ключа. +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// Небезопасно - Булево - Разрешает незащищенное соединение с библиотекой - insecure +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ОтправитьМодель(Знач URL, Знач Модель, Знач Небезопасно = Ложь, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/push"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("insecure", Небезопасно, "Булево", Параметры); + OPI_Инструменты.ДобавитьПоле("stream" , Ложь , "Булево", Параметры); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Скачать модель +// Скачивает модель из библиотеки +// +// Примечание: +// Метод в документации API: [Pull a Model](@github.com/ollama/ollama/blob/main/docs/api.md#pull-a-model) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Модель - Строка - Имя модели - model +// Небезопасно - Булево - Разрешает незащищенное соединение с библиотекой - insecure +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция СкачатьМодель(Знач URL, Знач Модель, Знач Небезопасно = Ложь, Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "api/pull"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("insecure", Небезопасно, "Булево", Параметры); + OPI_Инструменты.ДобавитьПоле("stream" , Ложь , "Булево", Параметры); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить структуру настроек модели +// Получает структуру настроек для создания новой модели +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьСтруктуруНастроекМодели(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("from" , "<имя существующей модели, из которой будет создана новая>"); + СтруктураПолей.Вставить("files" , "<список имен файлов или SHA256 блобов, из которых будет создана модель>"); + СтруктураПолей.Вставить("adapters" , "<список имен файлов или SHA256 блобов для LORA адаптеров>"); + СтруктураПолей.Вставить("template" , "<шаблон промптов новой модели>"); + СтруктураПолей.Вставить("license" , "<строка или список строк текста лицензий для модели>"); + СтруктураПолей.Вставить("system" , "<строка с системным промптом для модели>"); + СтруктураПолей.Вставить("parameters", "<список параметров модели>"); + СтруктураПолей.Вставить("messages" , "<список объектов сообщений контекста>"); + СтруктураПолей.Вставить("quantize" , "<квантовать неквантованную (например, float16) модель>"); + + Если Пустая Тогда + СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураПолей; + +КонецФункции + +#КонецОбласти + +#Область РаботаСBlob + +// Отправить BLOB +// Отправляет двоичные данные на сервер Ollama +// +// Примечание: +// Метод в документации API: [Push a Blob](@github.com/ollama/ollama/blob/main/docs/api.md#push-a-blob) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Данные - Строка, ДвоичныеДанные - Данные или путь к файлу - data +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ОтправитьBlob(Знач URL, Знач Данные, Знач ДопЗаголовки = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина); + + ДополнитьURL(URL, "api/blobs/sha256:%1"); + + Хеш = OPI_Криптография.Хеш(Данные, ХешФункция.SHA256); + Хеш = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(Хеш)); + + URL = СтрШаблон(URL, Хеш); + + ОбработатьЗаголовки(ДопЗаголовки); + Ответ = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Данные) + .УстановитьЗаголовки(ДопЗаголовки) + .ОбработатьЗапрос("POST") + .ВернутьОтвет(Ложь, Истина); + + Ответ = Новый Структура("status_code,digest", Ответ.КодСостояния, Хеш); + + Возврат Ответ; + +КонецФункции + +// Проверить BLOB +// Проверяет существование BLOB по его SHA256 дайджесту +// +// Примечание: +// Метод в документации API: [Check if a Blob Exists](@github.com/ollama/ollama/blob/main/docs/api.md#check-if-a-blob-exists) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// SHA256 - Строка - SHA256 дайджест нужного BLOB - digest +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПроверитьBlob(Знач URL, Знач SHA256, Знач ДопЗаголовки = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(SHA256); + + ДополнитьURL(URL, "api/blobs/sha256:%1"); + + URL = СтрШаблон(URL, SHA256); + + ОбработатьЗаголовки(ДопЗаголовки); + + Ответ = OPI_ЗапросыHTTP.Head(URL, , ДопЗаголовки, , Истина); + Ответ = Новый Структура("status_code", Ответ.КодСостояния); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ДополнитьURL(URL, Знач Путь) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); + + URL = ?(СтрЗаканчиваетсяНа(URL, "/"), URL, URL + "/"); + URL = URL + Путь; + +КонецПроцедуры + +Процедура ОбработатьПараметры(Параметры, Знач ДопПараметры) + + Если Не ЗначениеЗаполнено(ДопПараметры) Тогда + Возврат; + КонецЕсли; + + ТекстОшибки = "Передана некорректная коллекция доп. параметров!"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ДопПараметры, ТекстОшибки); + + Для Каждого ДопПараметр Из ДопПараметры Цикл + Параметры.Вставить(ДопПараметр.Ключ, ДопПараметр.Значение); + КонецЦикла; + +КонецПроцедуры + +Процедура ОбработатьЗаголовки(ДопЗаголовки) + + Если Не ЗначениеЗаполнено(ДопЗаголовки) Тогда + ДопЗаголовки = Новый Соответствие; + Иначе + ТекстОшибки = "Передана некорректная коллекция доп. заголовков!"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ДопЗаголовки, ТекстОшибки); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_OpenAI.os b/src/ru/OInt/core/Modules/OPI_OpenAI.os new file mode 100644 index 0000000000..73f362c4f7 --- /dev/null +++ b/src/ru/OInt/core/Modules/OPI_OpenAI.os @@ -0,0 +1,184 @@ +// OneScript: ./OInt/core/Modules/OPI_OpenAI.os +// Lib: OpenAI +// CLI: openai + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params +//@skip-check constructor-function-return-section +//@skip-check doc-comment-collection-item-type + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ОбработкаЗапросов + +// Получить ответ +// Генерирует ответ по заданному текстовому запросу +// +// Примечание: +// Метод в документации API: [Create chat completion](@platform.openai.com/docs/api-reference/chat/create) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Токен - Строка - Токен авторизации OpenAI - token +// Модель - Строка - Имя модели - model +// Сообщения - Строка, Массив Из Строка - Сообщения разговора. См. ПолучитьСтруктуруСообщения - msgs +// ДопПараметры - Структура Из КлючИЗначение - Коллекция КлючЗначение дополнительных параметров - options +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп. заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьОтвет(Знач URL, Знач Токен, Знач Модель, Знач Сообщения, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "v1/chat/completions"); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("messages", Сообщения, "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("stream" , Ложь , "Булево", Параметры); + + ОбработатьПараметры(Параметры, ДопПараметры); + ОбработатьЗаголовки(ДопЗаголовки, Токен); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить представления +// Получает представления (embeddings) для заданных вводных +// +// Примечание: +// Метод в документации API: [Create embeddings](@platform.openai.com/docs/api-reference/embeddings/create) +// +// Параметры: +// URL - Строка - URL сервера Ollama - url +// Токен - Строка - Токен авторизации OpenAI - token +// Модель - Строка - Имя модели - model +// Текст - Массив Из Строка - Строка или массив строк запросов - input +// ДопПараметры - Структура Из КлючИЗначение - Доп. параметры. См. ПолучитьСтруктуруПараметровПредставлений - options +// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат обработки +Функция ПолучитьПредставления(Знач URL, Знач Токен, Знач Модель, Знач Текст, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт + + ДополнитьURL(URL, "v1/embeddings"); + + Параметры = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("model", Модель, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("input", Текст , "Массив", Параметры); + + ОбработатьПараметры(Параметры, ДопПараметры); + ОбработатьЗаголовки(ДопЗаголовки, Токен); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки); + + Возврат Ответ; + +КонецФункции + +// Получить структуру сообщения контекста +// Получает структуру сообщения для списка сообщений запроса +// +// Параметры: +// Роль - Строка - Источник сообщения: system, user, developer - role +// Текст - Строка - Текст сообщения - text +// Имя - Строка - Имя участника разговора - name +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьСтруктуруСообщения(Знач Роль, Знач Текст, Знач Имя = "") Экспорт + + СтруктураПолей = Новый Структура; + + OPI_Инструменты.ДобавитьПоле("role" , Роль , "Строка", СтруктураПолей); + OPI_Инструменты.ДобавитьПоле("content", Текст, "Строка", СтруктураПолей); + OPI_Инструменты.ДобавитьПоле("name" , Имя , "Строка", СтруктураПолей); + + Возврат СтруктураПолей; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ДополнитьURL(URL, Знач Путь) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); + + URL = ?(СтрЗаканчиваетсяНа(URL, "/"), URL, URL + "/"); + URL = URL + Путь; + +КонецПроцедуры + +Процедура ОбработатьПараметры(Параметры, Знач ДопПараметры) + + Если Не ЗначениеЗаполнено(ДопПараметры) Тогда + Возврат; + КонецЕсли; + + ТекстОшибки = "Передана некорректная коллекция доп. параметров!"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ДопПараметры, ТекстОшибки); + + Для Каждого ДопПараметр Из ДопПараметры Цикл + Параметры.Вставить(ДопПараметр.Ключ, ДопПараметр.Значение); + КонецЦикла; + +КонецПроцедуры + +Процедура ОбработатьЗаголовки(ДопЗаголовки, Знач Токен) + + Если Не ЗначениеЗаполнено(ДопЗаголовки) Тогда + ДопЗаголовки = Новый Соответствие; + Иначе + ТекстОшибки = "Передана некорректная коллекция доп. заголовков!"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ДопЗаголовки, ТекстОшибки); + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + +КонецПроцедуры + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_Ozon.os b/src/ru/OInt/core/Modules/OPI_Ozon.os index e324a73a41..599dbf4bec 100644 --- a/src/ru/OInt/core/Modules/OPI_Ozon.os +++ b/src/ru/OInt/core/Modules/OPI_Ozon.os @@ -1,2129 +1,1912 @@ -// OneScript: ./OInt/core/Modules/OPI_Ozon.os -// Lib: Ozon -// CLI: ozon -// Keywords: ozon, seller api - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область АтрибутыИХарактеристики - -// Получить дерево категорий и типов товаров -// Возвращает категории и типы для товаров в виде дерева -// -// Примечание: -// Создание товаров доступно только в категориях последнего уровня, сравните именно их с категориями на своей площадке. Категории не создаются по запросу пользователя -// Внимательно выбирайте категорию для товара: для разных категорий применяется разный размер комиссии. -// Метод в документации API: [post /v1/description-category/tree](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetTree) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Язык - Строка - Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) - lang -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьДеревоКатегорийИТиповТоваров(Знач IDКлиента, Знач КлючAPI, Знач Язык = "DEFAULT") Экспорт - - URL = "https://api-seller.ozon.ru/v1/description-category/tree"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("language", Язык, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить характеристики категории -// Получает характеристики для указанной категории и типа товара -// -// Примечание: -// Если у dictionary_id значение 0, у атрибута нет вложенных справочников. Если значение другое, то справочники есть. Получить их можно методом ПолучитьЗначенияХарактеристик() -// Метод в документации API: [post /v1/description-category/attribute](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetAttributes) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDКатегории - Строка, Число - Идентификатор категории - categoryid -// IDТипа - Строка, Число - Идентификатор типа товара - typeid -// Язык - Строка - Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) - lang -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьХарактеристикиКатегории(Знач IDКлиента - , Знач КлючAPI - , Знач IDКатегории - , Знач IDТипа - , Знач Язык = "DEFAULT") Экспорт - - Строка_ = "Строка"; - - URL = "https://api-seller.ozon.ru/v1/description-category/attribute"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("description_category_id", IDКатегории, Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("type_id" , IDТипа , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("language" , Язык , Строка_, Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить значения характеристики -// Получает список доступных значений характеристики -// -// Примечание: -// Узнать, есть ли вложенный справочник, можно через метод ПолучитьХарактеристикиКатегории() -// Метод в документации API: [post /v1/description-category/attribute/values](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetAttributeValues) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDКатегории - Строка, Число - Идентификатор категории - categoryid -// IDТипа - Строка, Число - Идентификатор типа товара - typeid -// IDХарактеристики - Строка, Число - ID характеристики для получения значений - attributeid -// IDСправочника - Строка, Число - ID первого справочника в ответе - start -// Язык - Строка - Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) - lang -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьЗначенияХарактеристики(Знач IDКлиента - , Знач КлючAPI - , Знач IDКатегории - , Знач IDТипа - , Знач IDХарактеристики - , Знач IDСправочника = 1 - , Знач Язык = "DEFAULT") Экспорт - - Строка_ = "Строка"; - - URL = "https://api-seller.ozon.ru/v1/description-category/attribute/values"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - Лимит = 200; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("description_category_id", IDКатегории , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("type_id" , IDТипа , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("attribute_id" , IDХарактеристики , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("language" , Язык , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("limit" , Лимит , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("last_value_id" , IDСправочника - 1, Строка_, Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Найти значения характеристики -// Получает справочные значения характеристики по заданному значению в запросе -// -// Примечание: -// Узнать, есть ли вложенный справочник, можно через метод ПолучитьХарактеристикиКатегории() -// Метод в документации API: [post /v1/description-category/attribute/values/search](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_SearchAttributeValues) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDКатегории - Строка, Число - Идентификатор категории - categoryid -// IDТипа - Строка, Число - Идентификатор типа товара - typeid -// IDХарактеристики - Строка, Число - ID характеристики для получения значений - attributeid -// Значение - Строка - Значение для поиска - value -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция НайтиЗначенияХарактеристики(Знач IDКлиента - , Знач КлючAPI - , Знач IDКатегории - , Знач IDТипа - , Знач IDХарактеристики - , Знач Значение) Экспорт - - Строка_ = "Строка"; - - URL = "https://api-seller.ozon.ru/v1/description-category/attribute/values/search"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - Лимит = 100; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("description_category_id", IDКатегории , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("type_id" , IDТипа , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("attribute_id" , IDХарактеристики , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("limit" , Лимит , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("value" , Значение , Строка_, Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить лимиты работы с товарами -// Получает данные о лимитах на ассортимент, создание и обновление товаров -// -// Примечание: -// Метод в документации API: [post /v4/product/info/limit](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetUploadQuota) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьЛимитыРаботыСТоварами(Знач IDКлиента, Знач КлючAPI) Экспорт - - URL = "https://api-seller.ozon.ru/v4/product/info/limit"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область ЗагрузкаИОбновлениеТоваров - -// Получить список товаров -// Получает список товаров с фильтром или без -// -// Примечание: -// Метод в документации API: [post /v3/product/list](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductList) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Фильтр - Структура Из КлючИЗначение - Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров - filter -// IDПоследнего - Строка, Число - ID последнего значения (last_id) из предыдущего запроса - last -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСписокТоваров(Знач IDКлиента, Знач КлючAPI, Знач Фильтр = "", Знач IDПоследнего = 0) Экспорт - - Filter_ = "filter"; - - URL = "https://api-seller.ozon.ru/v3/product/list"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - Лимит = 200; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле(Filter_ , Фильтр , "Коллекция", Параметры); - OPI_Инструменты.ДобавитьПоле("limit" , Лимит , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("last_id", IDПоследнего, "Строка" , Параметры); - - Если Не Параметры.Свойство(Filter_) Тогда - Параметры.Вставить(Filter_, Новый Структура); - КонецЕсли; - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить описания харакетристик товаров -// Получает описания характеристик товаров с фильтром или без -// -// Примечание: -// Метод в документации API: [post /v4/products/info/attributes](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductAttributesV4) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Фильтр - Структура Из КлючИЗначение - Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров - filter -// IDПоследнего - Строка, Число - ID последнего значения (last_id) из предыдущего запроса - last -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьОписанияХарактеристикТоваров(Знач IDКлиента - , Знач КлючAPI - , Знач Фильтр = "" - , Знач IDПоследнего = 0) Экспорт - - Filter_ = "filter"; - - URL = "https://api-seller.ozon.ru/v4/product/info/attributes"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - Лимит = 200; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле(Filter_ , Фильтр , "Коллекция", Параметры); - OPI_Инструменты.ДобавитьПоле("limit" , Лимит , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("last_id", IDПоследнего, "Строка" , Параметры); - - Если Не Параметры.Свойство(Filter_) Тогда - Параметры.Вставить(Filter_, Новый Структура); - КонецЕсли; - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить информацию о товарах -// Получает информацию о товарах по массиву идентификаторов -// -// Примечание: -// Уточняйте минимальную цену товара после применения всех акций в личном кабинете. Параметр min_price из ответа метода на доработке и возвращает 0 -// Параметр active_product устарел, используйте значения параметра visible -// Параметры fbs_sku и fbo_sku из ответа метода были отключены 15 августа 2023 года -// В теле запроса должен быть один идентификатор или массив однотипных идентификаторов, в ответе будет массив items -// Метод в документации API: [post /v3/product/info/list](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoList) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТоваров - Число, Массив Из Число - Идентификаторы товаров - productid -// SKU - Число, Массив Из Число - Идентификаторы товаров в системе Ozon (SKU) - sku -// Артикулы - Строка, Массив Из Строка - Идентификаторы товаров в системе продавца (Артикул) - offerid -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьИнформациюОТоварах(Знач IDКлиента - , Знач КлючAPI - , Знач IDТоваров = 0 - , Знач SKU = 0 - , Знач Артикулы = "") Экспорт - - Массив_ = "Массив"; - - URL = "https://api-seller.ozon.ru/v3/product/info/list"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("offer_id" , Артикулы , Массив_, Параметры); - OPI_Инструменты.ДобавитьПоле("product_id", IDТоваров, Массив_, Параметры); - OPI_Инструменты.ДобавитьПоле("sku" , SKU , Массив_, Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить описание товара -// Получает описание товара по идентификаторам -// -// Примечание: -// Метод в документации API: [post /v1/product/info/description](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoDescription) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТовара - Строка, Число - Идентификатор товара - productid -// Артикул - Строка, Число - Идентификатор товара в системе продавца (Артикул) - offerid -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьОписаниеТовара(Знач IDКлиента, Знач КлючAPI, Знач IDТовара = 0, Знач Артикул = "") Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/info/description"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("offer_id" , Артикул , "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("product_id", IDТовара, "Число" , Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить контент рейтинг товаров -// Получает контент рейтинг товаров по SKU -// -// Примечание: -// Метод в документации API: [post /v1/product/rating-by-sku](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductRatingBySku) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// SKU - Число, Массив Из Число - Идентификаторы товаров в системе Ozon (SKU) - sku -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьКонтентРейтингТоваров(Знач IDКлиента, Знач КлючAPI, Знач SKU) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/rating-by-sku"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("skus", SKU, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Создать обновить товары -// Создает новые или обновляет существующие товары по структурам полей -// -// Примечание: -// Методы формирования структуры товара: ПолучитьСтруктуруТовара(), ДобавитьВидеоТовара(), ДобавитьВидеообложкуТовара() -// Метод проверки статуса добавления - ПолучитьСтатусДобавленияТовара() -// Метод в документации API: [post /v3/product/import](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsV3) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// МассивТоваров - Массив Из Строка - Массив или одна структура полей описания товара - items -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция СоздатьОбновитьТовары(Знач IDКлиента, Знач КлючAPI, Знач МассивТоваров) Экспорт - - URL = "https://api-seller.ozon.ru/v3/product/import"; - - Ответ = ОтправитьОписанияОбъектов(IDКлиента, КлючAPI, МассивТоваров, URL); - - Возврат Ответ; - -КонецФункции - -// Создать товары по Ozon ID -// Создаёт товар по указанному Ozon ID -// -// Примечание: -// Получить пустую структуру можно при помощи метода ПолучитьСокращеннуюСтруктуруТовара() -// Обновить товар по Ozon ID нельзя -// Метод в документации API: [post /v1/product/import-by-sku](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsBySKU) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// МассивТоваров - Массив Из Строка - Массив или одна сокращенная структура полей описания товара - items -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция СоздатьТоварыПоOzonID(Знач IDКлиента, Знач КлючAPI, Знач МассивТоваров) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/import-by-sku"; - - Ответ = ОтправитьОписанияОбъектов(IDКлиента, КлючAPI, МассивТоваров, URL); - - Возврат Ответ; - -КонецФункции - -// Обновить характеристики товаров -// Обновляет характеристики выбранных товаров -// -// Примечание: -// Получить пустую структуру можно при помощи метода ПолучитьСтруктуруОбновленияХарактеристик() -// Метод в документации API: [post /v1/product/attributes/update](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductUpdateAttributes) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// МассивХарактеристик - Массив Из Строка - Массив или одна структура полей атрибутов товара - items -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ОбновитьХарактеристикиТоваров(Знач IDКлиента, Знач КлючAPI, Знач МассивХарактеристик) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/attributes/update"; - - Ответ = ОтправитьОписанияОбъектов(IDКлиента, КлючAPI, МассивХарактеристик, URL); - - Возврат Ответ; - -КонецФункции - -// Обновить изображения товара -// Обновляет изображения и маркетинговый цвет товара -// -// Примечание: -// При каждом вызове метода передавайте все изображения, которые должны быть на карточке товара -// Для загрузки передайте адрес ссылки на изображение в общедоступном облачном хранилище. Формат изображения по ссылке: JPG или PNG -// Если вы хотите изменить состав или порядок изображений, получите информацию с помощью метода ПолучитьИнформациюОТоваре(), скопируйте данные полей images, images360, color_image, измените и дополните состав или порядок в соответствии с необходимостью -// Метод в документации API: [post /v1/product/pictures/import](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductImportPictures) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТовара - Строка, Число - Идентификатор товара - productid -// МассивИзображений - Массив Из Строка - Массив URL изображений - images -// Массив360 - Массив Из Строка - Массив изображений 360 - images360 -// МаркетинговыйЦвет - Строка - Маркетинговый цвет - color -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ОбновитьИзображенияТовара(Знач IDКлиента - , Знач КлючAPI - , Знач IDТовара - , Знач МассивИзображений = "" - , Знач Массив360 = "" - , Знач МаркетинговыйЦвет = "") Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/pictures/import"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("product_id" , IDТовара , "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("color_image", МаркетинговыйЦвет, "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("images" , МассивИзображений, "Массив", Параметры); - OPI_Инструменты.ДобавитьПоле("images360" , Массив360 , "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Проверить загрузку изображений товаров -// Проверяет загрузку изображений по массиву ID товаров -// -// Примечание: -// Метод в документации API: [post /v2/product/pictures/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductInfoPictures) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТоваров - Строка, Число, Массив Из Строка, Число - ID товаров для проверки - products -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПроверитьЗагрузкуИзображенийТоваров(Знач IDКлиента, Знач КлючAPI, Знач IDТоваров) Экспорт - - URL = "https://api-seller.ozon.ru/v2/product/pictures/info"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("product_id", IDТоваров, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Изменить артикулы товаров -// Изменяет артикулы существующих товаров -// -// Примечание: -// Метод в документации API: [post /v1/product/update/offer-id](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductUpdateOfferID) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// СоответствиеАртикулов - Соответствие Из КлючИЗначение - Артикулы: Ключ > старый, Значение > новый - offers -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ИзменитьАртикулыТоваров(Знач IDКлиента, Знач КлючAPI, Знач СоответствиеАртикулов) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеАртикулов); - - Если ТипЗнч(СоответствиеАртикулов) = Тип("Массив") Тогда - ВызватьИсключение "Ошибка типа значения соответствия артикулов"; - КонецЕсли; - - МассивОбъектов = Новый Массив; - - Для Каждого ПараАртикулов Из СоответствиеАртикулов Цикл - МассивОбъектов.Добавить(Новый Структура("offer_id,new_offer_id", ПараАртикулов.Ключ, ПараАртикулов.Значение)); - КонецЦикла; - - URL = "https://api-seller.ozon.ru/v1/product/update/offer-id"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("update_offer_id", МассивОбъектов, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Архивировать товары -// Переносит выбранные товары в архив -// -// Примечание: -// Вы можете передать до 100 идентификаторов за раз -// Метод в документации API: [post /v1/product/archive](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductArchive) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТоваров - Строка, Число, Массив Из Строка, Число - ID товаров для архивации - products -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция АрхивироватьТовары(Знач IDКлиента, Знач КлючAPI, Знач IDТоваров) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/archive"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("product_id", IDТоваров, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Разархивировать товары -// Возвращает выбранные товары из архива -// -// Примечание: -// В сутки можно восстановить из архива не больше 10 товаров, которые были архивированы автоматически. На разархивацию товаров, перенесённых в архив вручную, ограничений нет. -// Метод в документации API: [post /v1/product/unarchive](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductUnarchive) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТоваров - Строка, Число, Массив Из Строка, Число - ID товаров для восстановления - products -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция РазархивироватьТовары(Знач IDКлиента, Знач КлючAPI, Знач IDТоваров) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/unarchive"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("product_id", IDТоваров, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Удалить товары без SKU -// Удаляет товары без SKU из архива -// -// Примечание: -// Товар должен быть предварительно архивирован (см. АрхивироватьТовары) -// В одном запросе можно передать до 500 идентификаторов -// Метод в документации API: [post /v2/products/delete](@docs.ozon.ru/api/seller/#operation/ProductAPI_DeleteProducts) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Артикулы - Строка, Число, Массив Из Строка, Число - Артикулы товаров - articles -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция УдалитьТоварыБезSKU(Знач IDКлиента, Знач КлючAPI, Знач Артикулы) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьМассив(Артикулы); - - URL = "https://api-seller.ozon.ru/v2/products/delete"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - МассивТоваров = Новый Массив; - - Для Каждого Артикул Из Артикулы Цикл - - ТекущийАртикул = OPI_Инструменты.ЧислоВСтроку(Артикул); - МассивТоваров.Добавить(Новый Структура("offer_id", ТекущийАртикул)); - - КонецЦикла; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("products", МассивТоваров, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Загрузить коды активации товара -// Загружает коды активации для цифрового товара или услуги -// -// Примечание: -// Код активации привязывается к карточке цифрового товара -// Метод проверки статуса добавления - ПолучитьСтатусДобавленияКодов() -// Метод в документации API: [post /v1/product/upload_digital_codes](@docs.ozon.ru/api/seller/#operation/ProductAPI_UploadDigitalCode) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТовара - Число - ID товара - productid -// Коды - Строка, Массив Из Строка - Коды активации цифрового товара - codes -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ЗагрузитьКодыАктивацииТовара(Знач IDКлиента, Знач КлючAPI, Знач IDТовара, Знач Коды) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/upload_digital_codes"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("product_id" , IDТовара, "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("digital_codes", Коды , "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить количество подписчиков товаров -// Получает количество пользователей, которые нажали Узнать о поступлении на странице товара -// -// Примечание: -// Метод в документации API: [post /v1/product/info/subscription](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoSubscription) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// SKU - Число, Массив Из Число - Идентификаторы товаров в системе Ozon (SKU) - sku -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьКоличествоПодписчиковТоваров(Знач IDКлиента, Знач КлючAPI, Знач SKU) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/info/subscription"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("skus", SKU, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить связанные SKU -// Получает единый SKU по старым идентификаторам SKU FBS и SKU FBO -// -// Примечание: -// В ответе будут все SKU, связанные с переданными. Метод может обработать любые SKU, даже скрытые или удалённые. -// Передавайте до 200 SKU в одном запросе. -// Метод в документации API: [post /v1/product/related-sku/get](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductGetRelatedSKU) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// SKU - Число, Массив Из Число - Идентификаторы товаров в системе Ozon (SKU) - sku -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСвязанныеSKU(Знач IDКлиента, Знач КлючAPI, Знач SKU) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/related-sku/get"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("sku", SKU, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить статус добавления товара -// Получает статус добавления нового товара по ID задачи -// -// Примечание: -// Метод в документации API: [post /v1/product/import/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetImportProductsInfo) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDЗадачи - Строка, Число - ID задачи добавления товара - taskid -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСтатусДобавленияТовара(Знач IDКлиента, Знач КлючAPI, Знач IDЗадачи) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/import/info"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("task_id", IDЗадачи, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить статус добавления кодов -// Получает статус добавления кодов цифрового товара по ID задачи -// -// Примечание: -// Метод в документации API: [post /v1/product/upload_digital_codes/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_UploadDigitalCodeInfo) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDЗадачи - Строка, Число - ID задачи добавления товара - taskid -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСтатусДобавленияКодов(Знач IDКлиента, Знач КлючAPI, Знач IDЗадачи) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/upload_digital_codes/info"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("task_id", IDЗадачи, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить структуру товара -// Получает структуру стандартных полей товара -// -// Примечание: -// Эту структуру необходимо дополнить полями, зависящими от категории товара из ПолучитьХарактеристикиКатегории() -// Первая картинка в массиве картинок (поле images) будет основной -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей товара -Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураТовара = Новый Структура; - СтруктураТовара.Вставить("description_category_id", ""); - СтруктураТовара.Вставить("name" , "<имя товара>"); - СтруктураТовара.Вставить("offer_id" , "<артикул>"); - СтруктураТовара.Вставить("barcode" , "<штрихкод>"); - СтруктураТовара.Вставить("price" , "<цена>"); - СтруктураТовара.Вставить("old_price" , "<старая цена>"); - СтруктураТовара.Вставить("vat" , "<ставка ндс, например 0.2>"); - СтруктураТовара.Вставить("height" , "<высота>"); - СтруктураТовара.Вставить("width" , "<ширина>"); - СтруктураТовара.Вставить("depth" , "<глубина>"); - СтруктураТовара.Вставить("dimension_unit" , "<единица измерения для размеров, например mm>"); - СтруктураТовара.Вставить("weight" , "<вес>"); - СтруктураТовара.Вставить("weight_unit" , "<единица измерения для веса, например g>"); - СтруктураТовара.Вставить("images" , "<массив URL картинок товара>"); - СтруктураТовара.Вставить("images360" , "<массив URL картинок 360>"); - СтруктураТовара.Вставить("color_image" , "<маркетинговый цвет для картинок>"); - - Если Пустая Тогда - Для Каждого Поле Из СтруктураТовара Цикл - СтруктураТовара.Вставить(Поле.Ключ, ""); - КонецЦикла; - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураТовара; - -КонецФункции - -// Получить сокращенную структуру товара -// Получает структуру для создания товара на основе Ozon ID в функции СоздатьТоварыПоOzonID() -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей товара -Функция ПолучитьСокращеннуюСтруктуруТовара(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураТовара = Новый Структура; - - СтруктураТовара.Вставить("name" , "<наименование>"); - СтруктураТовара.Вставить("sku" , "<идентификатор товара в системе Ozon>"); - СтруктураТовара.Вставить("offer_id" , "<артикул>"); - СтруктураТовара.Вставить("price" , "<цена>"); - СтруктураТовара.Вставить("old_price" , "<старая цена>"); - СтруктураТовара.Вставить("vat" , "<ставка ндс, например 0.2>"); - СтруктураТовара.Вставить("currency_code", "<валюта>"); - - Если Пустая Тогда - Для Каждого Поле Из СтруктураТовара Цикл - СтруктураТовара.Вставить(Поле.Ключ, ""); - КонецЦикла; - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураТовара; - -КонецФункции - -// Получить структуру обновления характеристик -// Получает структуру для обновления характеристик товара в функции ОбновитьХарактеристикиТоваров() -// -// Примечание: -// Характеристики представляют из себя структуры с полями complex_id, id и массивом values. Для их быстрого создания есть метод ДополнитьКомплексныйАтрибут() -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей товара -Функция ПолучитьСтруктуруОбновленияХарактеристик(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураТовара = Новый Структура; - - СтруктураТовара.Вставить("offer_id" , "<артикул>"); - СтруктураТовара.Вставить("attributes", "<массив обновляемых атрибутов>"); - - Если Пустая Тогда - Для Каждого Поле Из СтруктураТовара Цикл - СтруктураТовара.Вставить(Поле.Ключ, ""); - КонецЦикла; - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураТовара; - -КонецФункции - -// Получить структуру фильтра товаров -// Получает структуру для отбора списка товаров -// -// Примечание: -// Связанные функции: ПолучитьСписокТоваров, ПолучитьКоличествоТоваров, ПолучитьЦеныТоваров -// Описание полей фильтра можно найти на странице документации по получению списка товаров: [post /v2/product/list](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductList) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей фильра -Функция ПолучитьСтруктуруФильтраТоваров(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураТовара = Новый Структура; - - СтруктураТовара.Вставить("offer_id" , "<массив артикулов>"); - СтруктураТовара.Вставить("product_id", "<массив ID товаров>"); - СтруктураТовара.Вставить("visibility", "<видимость>"); - - Если Пустая Тогда - Для Каждого Поле Из СтруктураТовара Цикл - СтруктураТовара.Вставить(Поле.Ключ, ""); - КонецЦикла; - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураТовара; - -КонецФункции - -// Добавить видео товара -// Добавляет видео к атрибутам товара -// -// Примечание: -// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии -// -// Параметры: -// СтруктураТовара - Структура Из Строка - Основная структура полей товара. См. ПолучитьСтруктуруТовара - item -// URL - Строка - URL к видео для добавления - url -// Наименование - Строка - Техническое наименование видео - title -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей товара с добавленным видео -Функция ДобавитьВидеоТовара(СтруктураТовара, Знач URL, Знач Наименование) Экспорт - - Complex_attributes_ = "complex_attributes"; - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураТовара); - OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); - - ОбъектВидео = Новый Структура(); - СтруктураURL = Новый Структура("value", URL); - СтруктураНаименования = Новый Структура("value", Наименование); - - ДополнитьКомплексныйАтрибут(ОбъектВидео, 21841, 100001, СтруктураURL); - ДополнитьКомплексныйАтрибут(ОбъектВидео, 21837, 100001, СтруктураНаименования); - - Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураТовара, Complex_attributes_) Тогда - СтруктураТовара.Вставить(Complex_attributes_, Новый Массив); - КонецЕсли; - - СтруктураТовара[Complex_attributes_].Добавить(ОбъектВидео); - - //@skip-check constructor-function-return-section - Возврат СтруктураТовара; - -КонецФункции - -// Добавить видеообложку товара -// Добавляет видеообложку к атрибутам товара -// -// Примечание: -// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии -// -// Параметры: -// СтруктураТовара - Структура Из Строка - Основная структура полей товара. См. ПолучитьСтруктуруТовара - item -// URL - Строка - URL к видеообложке для добавления - url -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей товара с добавленным видео -Функция ДобавитьВидеообложкуТовара(СтруктураТовара, Знач URL) Экспорт - - Complex_attributes_ = "complex_attributes"; - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураТовара); - OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); - - ОбъектОбложка = Новый Структура(); - СтруктураURL = Новый Структура("dictionary_value_id,value", 0, URL); - - ДополнитьКомплексныйАтрибут(ОбъектОбложка, 21845, 100002, СтруктураURL); - - Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураТовара, Complex_attributes_) Тогда - СтруктураТовара.Вставить(Complex_attributes_, Новый Массив); - КонецЕсли; - - СтруктураТовара[Complex_attributes_].Добавить(ОбъектОбложка); - - //@skip-check constructor-function-return-section - Возврат СтруктураТовара; - -КонецФункции - -// Дополнить комплексный атрибут -// Оформляет значение в формате атрибута и добавляет его в массив attributes переданной коллекции -// -// Примечание: -// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии -// -// Параметры: -// Коллекция - Структура Из Строка - Структура комплексного атрибута или структура товара - object -// IDАтрибута - Строка, Число - ID атрибута - attributeid -// КомплексныйID - Строка, Число - Комплексный ID - complexid -// Значения - Произвольный - Значение или массив значений для добавления в values - values -// -// Возвращаемое значение: -// Структура - Коллекция, дополненная атрибутом -Функция ДополнитьКомплексныйАтрибут(Коллекция, Знач IDАтрибута, Знач КомплексныйID, Знач Значения) Экспорт - - Attributes_ = "attributes"; - - OPI_ПреобразованиеТипов.ПолучитьМассив(Значения); - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Коллекция); - - СтруктураАтрибута = Новый Структура("id,complex_id,values", IDАтрибута, КомплексныйID, Значения); - - Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Коллекция, Attributes_) Тогда - Коллекция.Вставить(Attributes_, Новый Массив); - КонецЕсли; - - Коллекция[Attributes_].Добавить(СтруктураАтрибута); - - //@skip-check constructor-function-return-section - Возврат Коллекция; - -КонецФункции - -#КонецОбласти - -#Область Штрихкоды - -// Привязать штрихкоды -// Привязывает штрихкоды к товарам -// -// Примечание: -// Метод в документации API: [post /v1/barcode/add](@docs.ozon.ru/api/seller/#operation/add-barcode) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// СоответствиеШтрихкодов - Соответствие Из КлючИЗначение - Ключ > SKU товара, Значение > Штрихкод - barcodes -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПривязатьШтрихкоды(Знач IDКлиента, Знач КлючAPI, Знач СоответствиеШтрихкодов) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеШтрихкодов); - - URL = "https://api-seller.ozon.ru/v1/barcode/add"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - МассивШтрихкодов = Новый Массив; - - Для Каждого Штрихкод Из СоответствиеШтрихкодов Цикл - - СтруктураШтрихкода = Новый Структура; - OPI_Инструменты.ДобавитьПоле("sku" , Штрихкод.Ключ , "Число" , СтруктураШтрихкода); - OPI_Инструменты.ДобавитьПоле("barcode", Штрихкод.Значение, "Строка", СтруктураШтрихкода); - - МассивШтрихкодов.Добавить(СтруктураШтрихкода); - - КонецЦикла; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("barcodes", МассивШтрихкодов, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Создать штрихкоды -// Генерирует новые штрихкоды для товаров -// -// Примечание: -// За один запрос вы можете создать штрихкоды не больше чем для 100 товаров -// С одного аккаунта продавца можно использовать метод не больше 20 раз в минуту -// Метод в документации API: [post /v1/barcode/generate](@docs.ozon.ru/api/seller/#operation/generate-barcode) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТоваров - Строка, Массив Из Строка - ID товаров для создания штрихкодов - productids -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция СоздатьШтрихкоды(Знач IDКлиента, Знач КлючAPI, Знач IDТоваров) Экспорт - - URL = "https://api-seller.ozon.ru/v1/barcode/generate"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("product_ids", IDТоваров, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область ЦеныИОстаткиТоваров - -// Получить количество товаров -// Получает количество товаров в остатке с фильтром или без -// -// Примечание: -// Метод в документации API: [post /v4/product/info/stocks](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoStocks) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Фильтр - Структура Из КлючИЗначение - Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров - filter -// IDПоследнего - Строка, Число - ID последнего значения (last_id) из предыдущего запроса - last -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьКоличествоТоваров(Знач IDКлиента, Знач КлючAPI, Знач Фильтр = "", Знач IDПоследнего = 0) Экспорт - - Filter_ = "filter"; - - URL = "https://api-seller.ozon.ru/v4/product/info/stocks"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - Лимит = 100; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле(Filter_ , Фильтр , "Коллекция", Параметры); - OPI_Инструменты.ДобавитьПоле("limit" , Лимит , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("last_id", IDПоследнего, "Строка" , Параметры); - - Если Не Параметры.Свойство(Filter_) Тогда - Параметры.Вставить(Filter_, Новый Структура); - КонецЕсли; - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить цены товаров -// Получает цены товаров с фильтром или без -// -// Примечание: -// Метод в документации API: [post /v5/product/info/prices](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoPrices) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Фильтр - Структура Из КлючИЗначение - Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров - filter -// IDПоследнего - Строка, Число - ID последнего значения (last_id) из предыдущего запроса - last -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьЦеныТоваров(Знач IDКлиента, Знач КлючAPI, Знач Фильтр = "", Знач IDПоследнего = 0) Экспорт - - Filter_ = "filter"; - - URL = "https://api-seller.ozon.ru/v5/product/info/prices"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - Лимит = 300; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле(Filter_ , Фильтр , "Коллекция", Параметры); - OPI_Инструменты.ДобавитьПоле("limit" , Лимит , "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("last_id", IDПоследнего, "Строка" , Параметры); - - Если Не Параметры.Свойство(Filter_) Тогда - Параметры.Вставить(Filter_, Новый Структура); - КонецЕсли; - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить информацию об уценке -// Получает информацию об уценке и основном товаре по SKU уценённых товаров -// -// Примечание: -// Метод в документации API: [post /v1/product/info/discounted](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoDiscounted) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// SKU - Число, Массив Из Число - SKU уцененных товаров - sku -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьИнформациюОбУценке(Знач IDКлиента, Знач КлючAPI, Знач SKU) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/info/discounted"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("discounted_skus", SKU, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Обновить количество товаров -// Изменяет информацию о количестве товара в наличии -// -// Примечание: -// За один запрос можно изменить наличие для 100 товаров. С одного аккаунта продавца можно отправить до 80 запросов в минуту. -// Обновлять остатки товара на одном складе можно только 1 раз в 2 минуты. Вы можете задать наличие товара только после того, как его статус сменится на price_sent -// Остатки крупногабаритных товаров можно обновлять только на предназначенных для них складах -// Метод в документации API: [post /v2/products/stocks](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductsStocksV2) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Остатки - Массив Из Структура - Массив описаний остатков. См. ПолучитьСтруктуруОстатковТовара - stocks -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ОбновитьКоличествоТоваров(Знач IDКлиента, Знач КлючAPI, Знач Остатки) Экспорт - - URL = "https://api-seller.ozon.ru/v2/products/stocks"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("stocks", Остатки, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Обновить цены товаров -// Изменяет цены однного или нескольких товаров -// -// Примечание: -// Метод в документации API: [post /v1/product/import/prices](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsPrices) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Цены - Массив из Структура - Цены товаров. См. ПолучитьСтруктуруЦеныТовара - prices -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ОбновитьЦеныТоваров(Знач IDКлиента, Знач КлючAPI, Знач Цены) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/import/prices"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("prices", Цены, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Установить скидку на уцененный товар -// Устанавливает размер скидки на уценённые товары, продающиеся по схеме FBS -// -// Примечание: -// Метод в документации API: [post /v1/product/update/discount](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductUpdateDiscount) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDТовара - Строка, Число - Идентификатор товара - productid -// Скидка - Строка, Число - Размер скидки - discount -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция УстановитьСкидкуНаУцененныйТовар(Знач IDКлиента, Знач КлючAPI, Знач IDТовара, Знач Скидка) Экспорт - - URL = "https://api-seller.ozon.ru/v1/product/update/discount"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("discount" , Скидка , "Число", Параметры); - OPI_Инструменты.ДобавитьПоле("product_id", IDТовара, "Число", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить структуру остатков товара -// Получает структуру для внесения остатков товара в функции ОбновитьКоличествоТоваров -// -// Примечание: -// Описание полей фильтра можно найти на странице документации по получению списка товаров: [post /v2/products/stocks](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductsStocksV2) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей фильра -Функция ПолучитьСтруктуруОстатковТовара(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураОстатков = Новый Структура; - - СтруктураОстатков.Вставить("offer_id" , "<артикул>"); - СтруктураОстатков.Вставить("product_id" , ""); - СтруктураОстатков.Вставить("stock" , "<количество>"); - СтруктураОстатков.Вставить("warehouse_id", ""); - - Если Пустая Тогда - Для Каждого Поле Из СтруктураОстатков Цикл - СтруктураОстатков.Вставить(Поле.Ключ, ""); - КонецЦикла; - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураОстатков; - -КонецФункции - -// Получить структуру цены товара -// Получает структуру цены товара для функции ОбновитьЦеныТоваров -// -// Примечание: -// Описание полей фильтра можно найти на странице документации по получению списка товаров: [post /v1/product/import/prices](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsPrices) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей фильра -Функция ПолучитьСтруктуруЦеныТовара(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураТовара = Новый Структура; - - СтруктураТовара.Вставить("auto_action_enabled" , "<включение автоприменения акций: ENABLED или DISABLED>"); - СтруктураТовара.Вставить("currency_code" , "<валюта>"); - СтруктураТовара.Вставить("min_price" , "<минимальная цена товара после применения акций>"); - СтруктураТовара.Вставить("offer_id" , "<идентификатор товара в системе продавца>"); - СтруктураТовара.Вставить("old_price" , "<цена до скидок; укажите значение 0, если скидок нет>"); - СтруктураТовара.Вставить("price" , "<цена товара с учётом скидок>"); - СтруктураТовара.Вставить("price_strategy_enabled", "<автоприменения стратегий цены: ENABLED или DISABLED>"); - СтруктураТовара.Вставить("product_id" , ""); - - Если Пустая Тогда - Для Каждого Поле Из СтруктураТовара Цикл - СтруктураТовара.Вставить(Поле.Ключ, ""); - КонецЦикла; - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураТовара; - -КонецФункции - -#КонецОбласти - -#Область РаботаСАкциями - -// Получить список акций -// Получает список акций, доступных для участия -// -// Примечание: -// Метод в документации API: [post /v1/actions](@docs.ozon.ru/api/seller/#operation/Promos) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСписокАкций(Знач IDКлиента, Знач КлючAPI) Экспорт - - URL = "https://api-seller.ozon.ru/v1/actions"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить доступные товары акции -// Получает товары, доступные в выбранной акции -// -// Примечание: -// Метод в документации API: [post /v1/actions/candidates](@docs.ozon.ru/api/seller/#operation/PromosCandidates) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDАкции - Число - ID акции - actionid -// Отступ - Число - Отступ получения элементов списка - offset -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьДоступныеТоварыАкции(Знач IDКлиента, Знач КлючAPI, Знач IDАкции, Знач Отступ = 0) Экспорт - - Число_ = "Число"; - - URL = "https://api-seller.ozon.ru/v1/actions/candidates"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - Лимит = 100; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("action_id", IDАкции, Число_, Параметры); - OPI_Инструменты.ДобавитьПоле("limit" , Лимит , Число_, Параметры); - OPI_Инструменты.ДобавитьПоле("offset" , Отступ , Число_, Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить участвующие товары акции -// Получает товары, участвующие в выбранной акции -// -// Примечание: -// Метод в документации API: [post /v1/actions/products](@docs.ozon.ru/api/seller/#operation/PromosProducts) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDАкции - Число - ID акции - actionid -// Отступ - Число - Отступ получения элементов списка - offset -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьУчаствующиеТоварыАкции(Знач IDКлиента, Знач КлючAPI, Знач IDАкции, Знач Отступ = 0) Экспорт - - Число_ = "Число"; - - URL = "https://api-seller.ozon.ru/v1/actions/products"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - Лимит = 100; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("action_id", IDАкции, Число_, Параметры); - OPI_Инструменты.ДобавитьПоле("limit" , Лимит , Число_, Параметры); - OPI_Инструменты.ДобавитьПоле("offset" , Отступ , Число_, Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область РаботаСоСкладами - -// Получить список складов -// Получает список складов компании -// -// Примечание: -// Метод в документации API: [post /v1/warehouse/list](@docs.ozon.ru/api/seller/#operation/WarehouseAPI_WarehouseList) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСписокСкладов(Знач IDКлиента, Знач КлючAPI) Экспорт - - URL = "https://api-seller.ozon.ru/v1/warehouse/list"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область СхемаFBO - -// Получить список кластеров -// Получает информацию о кластерах и складах -// -// Примечание: -// Метод в документации API: [post /v1/cluster/list](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftClusterList) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// ТипКластера - Строка - Тип кластера: CLUSTER_TYPE_OZON (Россия), CLUSTER_TYPE_CIS (СНГ) - type -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСписокКластеров(Знач IDКлиента, Знач КлючAPI, Знач ТипКластера = "CLUSTER_TYPE_OZON") Экспорт - - URL = "https://api-seller.ozon.ru/v1/cluster/list"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("cluster_type", ТипКластера, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список складов отгрузки -// Получает список складов, сортировочных центров и пунктов выдачи -// -// Примечание: -// Метод в документации API: [post /v1/warehouse/fbo/list](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftGetWarehouseFboList) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Поиск - Строка - Поиск по названию (4 симв. мин). Для пунктов выдачи укажите полное название - search -// ТипПоставки - Строка, Массив Из Строка - Типы поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT - type -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСписокСкладовОтгрузки(Знач IDКлиента - , Знач КлючAPI - , Знач Поиск - , Знач ТипПоставки = "CREATE_TYPE_DIRECT") Экспорт - - URL = "https://api-seller.ozon.ru/v1/warehouse/fbo/list"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("filter_by_supply_type", ТипПоставки, "Массив", Параметры); - OPI_Инструменты.ДобавитьПоле("search" , Поиск , "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список отправлений FBO -// Получает список активных отправлений с фильтром или без -// -// Примечание: -// Метод в документации API: [post /v2/posting/fbo/list](@docs.ozon.ru/api/seller/#operation/PostingAPI_GetFboPostingList) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Фильтр - Структура Из КлючИЗначение - Фильтр отправлений. См. ПолучитьСтруктуруФильтраОтправлений - filter -// ДопПоля - Структура Из КлючИЗначение - Включение доп. полей в ответ. См. ПолучитьСтруктуруДопПолейОтправления - with -// Отступ - Число - Количество элементов, которое будет пропущено в ответе - offset -// Транслит - Булево - Если включена транслитерация адреса из кириллицы в латиницу > Истина - trlt -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьСписокОтправленийFBO(Знач IDКлиента - , Знач КлючAPI - , Знач Фильтр = Неопределено - , Знач ДопПоля = Неопределено - , Знач Отступ = 0 - , Знач Транслит = Ложь) Экспорт - - URL = "https://api-seller.ozon.ru/v2/posting/fbo/list"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("limit" , 1000 , "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("offset" , Отступ , "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("translit", Транслит, "Булево" , Параметры); - OPI_Инструменты.ДобавитьПоле("filter" , Фильтр , "Коллекция", Параметры); - OPI_Инструменты.ДобавитьПоле("with" , ДопПоля , "Коллекция", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Создать черновик заявки FBO -// Создает черновик заявки на поставку -// -// Примечание: -// Метод в документации API: [post /v1/draft/create](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftCreate) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// Кластеры - Строка, Массив Из Строка - Идентификаторы кластеров - clusters -// Позиции - Соответствие Из КлючИЗначение - Список позиций: Ключ > SKU, Значение > Количество - items -// ТипПоставки - Строка - Тип поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT - type -// ТочкаОтгрузки - Строка - Идентификатор точки отгрузки для CREATE_TYPE_CROSSDOCK - point -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция СоздатьЧерновикЗаявкиFBO(Знач IDКлиента - , Знач КлючAPI - , Знач Кластеры - , Знач Позиции - , Знач ТипПоставки = "CREATE_TYPE_DIRECT" - , Знач ТочкаОтгрузки = "") Экспорт - - Кластеры_ = OPI_Инструменты.КопироватьКоллекцию(Кластеры); - Позиции_ = OPI_Инструменты.КопироватьКоллекцию(Позиции); - - URL = "https://api-seller.ozon.ru/v1/draft/create"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - ОбработатьСписокКластеров(Кластеры_); - ОбработатьСписокПозиций(Позиции_); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("cluster_ids" , Кластеры_ , "Массив", Параметры); - OPI_Инструменты.ДобавитьПоле("drop_off_point_warehouse_id", ТочкаОтгрузки, "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("items" , Позиции_ , "Массив", Параметры); - OPI_Инструменты.ДобавитьПоле("type" , ТипПоставки , "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить черновик заявки FBO -// Получает черновик заявки FBO по ID -// -// Примечание: -// Метод в документации API: [post /v1/draft/create/info](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftCreateInfo) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// IDОперации - Строка - ID черновика (операции) - oper -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьЧерновикЗаявкиFBO(Знач IDКлиента, Знач КлючAPI, Знач IDОперации) Экспорт - - URL = "https://api-seller.ozon.ru/v1/draft/create/info"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("operation_id", IDОперации, "Строка", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить таймслоты FBO -// Получить доступные таймслоты на конечных складах отгрузки -// -// Примечание: -// Метод в документации API: [post /v1/draft/timeslot/info](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftTimeslotInfo) -// -// Параметры: -// IDКлиента - Строка - Идентификатор клиента - clientid -// КлючAPI - Строка - API ключ - apikey -// ДатаОт - Дата - Дата начала нужного периода доступных таймслотов - from -// ДатаПо - Дата - Дата окончания нужного периода доступных таймслотов (28 дней от тек. максимум) - to -// Черновик - Число, Строка - Идентификатор черновика заявки на поставку - draft -// Склады - Массив Из Число - Склад или несколько складов для получения таймслотов - whs -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API -Функция ПолучитьТаймслотыFBO(Знач IDКлиента, Знач КлючAPI, Знач ДатаОт, Знач ДатаПо, Знач Черновик, Знач Склады) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьДату(ДатаОт); - OPI_ПреобразованиеТипов.ПолучитьДату(ДатаПо); - OPI_ПреобразованиеТипов.ПолучитьМассив(Склады); - - Для Н = 0 По Склады.ВГраница() Цикл - - ТекущееЗначение = Склады[Н]; - - OPI_ПреобразованиеТипов.ПолучитьЧисло(ТекущееЗначение); - - Склады[Н] = ТекущееЗначение; - - КонецЦикла; - - URL = "https://api-seller.ozon.ru/v1/draft/timeslot/info"; - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("date_from" , XMLСтрока(ДатаОт) + "Z", "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("date_to" , XMLСтрока(ДатаПо) + "Z", "Строка" , Параметры); - OPI_Инструменты.ДобавитьПоле("draft_id" , Черновик , "Число" , Параметры); - OPI_Инструменты.ДобавитьПоле("warehouse_ids", Склады , "Коллекция", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить структуру доп. полей отправления -// Возвращает структуру включения доп. полей ответа для метода ПолучитьСписокОтправленийFBO -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей -Функция ПолучитьСтруктуруДопПолейОтправления(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураПолей = Новый Структура; - - СтруктураПолей.Вставить("analytics_data", "<передайте Истина, чтобы добавить в ответ данные аналитики>"); - СтруктураПолей.Вставить("financial_data", "<передайте Истина, чтобы добавить в ответ финансовые данные>"); - - Если Пустая Тогда - СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураПолей; - -КонецФункции - -// Получить структуру фильтра отправлений -// Возвращает структуру фильтров для метода ПолучитьСписокОтправленийFBO -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура фильтра -Функция ПолучитьСтруктуруФильтраОтправлений(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("since" , "Начало периода в формате ISO"); - СтруктураФильтра.Вставить("status", "Статус отправления"); - СтруктураФильтра.Вставить("to" , "Конец периода в формате ISO"); - - Если Пустая Тогда - СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураФильтра; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция СоздатьЗаголовкиЗапроса(Знач IDКлиента, Знач КлючAPI) - - Заголовки = Новый Соответствие; - - OPI_Инструменты.ДобавитьПоле("Client-Id", IDКлиента, "Строка", Заголовки); - OPI_Инструменты.ДобавитьПоле("Api-Key" , КлючAPI , "Строка", Заголовки); - - Возврат Заголовки; - -КонецФункции - -Функция ОтправитьОписанияОбъектов(Знач IDКлиента, Знач КлючAPI, Знач МассивОбъектов, Знач URL) - - Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("items", МассивОбъектов, "Массив", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -Процедура ОбработатьСписокКластеров(Кластеры) - - OPI_ПреобразованиеТипов.ПолучитьМассив(Кластеры); - - Для Н = 0 По Кластеры.ВГраница() Цикл - - ТекущееЗначение = Кластеры[Н]; - - OPI_ПреобразованиеТипов.ПолучитьЧисло(ТекущееЗначение); - - Кластеры[Н] = ТекущееЗначение; - - КонецЦикла; - -КонецПроцедуры - -Процедура ОбработатьСписокПозиций(Позиции) - - ТекстОшибки = "Список позиций имеет некорректный формат"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Позиции, ТекстОшибки); - - ОбработанныеПозиции = Новый Массив; - - Для Каждого Позиция Из Позиции Цикл - - ТекущийКлюч = Позиция.Ключ; - ТекущееЗначение = Позиция.Значение; - - OPI_ПреобразованиеТипов.ПолучитьЧисло(ТекущийКлюч); - OPI_ПреобразованиеТипов.ПолучитьЧисло(ТекущееЗначение); - - Если ТекущийКлюч = 0 Или ТекущееЗначение = 0 Тогда - ВызватьИсключение ("Ошибка в позиции " + Строка(ТекущийКлюч)); - КонецЕсли; - - ОбработанныеПозиции.Добавить(Новый Структура("quantity,sku", ТекущееЗначение, ТекущийКлюч)); - - КонецЦикла; - - Позиции = ОбработанныеПозиции; - -КонецПроцедуры - -#КонецОбласти - - -#Region Alternate - -Function GetCategoriesAndProductTypesTree(Val ClientID, Val APIKey, Val Lang = "DEFAULT") Export - Return ПолучитьДеревоКатегорийИТиповТоваров(ClientID, APIKey, Lang); -EndFunction - -Function GetCategoryAttributes(Val ClientID, Val APIKey, Val CategoryID, Val TypeID, Val Lang = "DEFAULT") Export - Return ПолучитьХарактеристикиКатегории(ClientID, APIKey, CategoryID, TypeID, Lang); -EndFunction - -Function GetAttributeValues(Val ClientID, Val APIKey, Val CategoryID, Val TypeID, Val AttributeID, Val CatalogID = 1, Val Lang = "DEFAULT") Export - Return ПолучитьЗначенияХарактеристики(ClientID, APIKey, CategoryID, TypeID, AttributeID, CatalogID, Lang); -EndFunction - -Function SearchAttributeValue(Val ClientID, Val APIKey, Val CategoryID, Val TypeID, Val AttributeID, Val Value) Export - Return НайтиЗначенияХарактеристики(ClientID, APIKey, CategoryID, TypeID, AttributeID, Value); -EndFunction - -Function GetProductsRequestsLimits(Val ClientID, Val APIKey) Export - Return ПолучитьЛимитыРаботыСТоварами(ClientID, APIKey); -EndFunction - -Function GetProductList(Val ClientID, Val APIKey, Val Filter = "", Val LastID = 0) Export - Return ПолучитьСписокТоваров(ClientID, APIKey, Filter, LastID); -EndFunction - -Function GetProductsAttributesData(Val ClientID, Val APIKey, Val Filter = "", Val LastID = 0) Export - Return ПолучитьОписанияХарактеристикТоваров(ClientID, APIKey, Filter, LastID); -EndFunction - -Function GetProductsInformation(Val ClientID, Val APIKey, Val ProductsID = 0, Val SKU = 0, Val Articles = "") Export - Return ПолучитьИнформациюОТоварах(ClientID, APIKey, ProductsID, SKU, Articles); -EndFunction - -Function GetProductDescription(Val ClientID, Val APIKey, Val ProductID = 0, Val Article = "") Export - Return ПолучитьОписаниеТовара(ClientID, APIKey, ProductID, Article); -EndFunction - -Function GetProductsContentRating(Val ClientID, Val APIKey, Val SKU) Export - Return ПолучитьКонтентРейтингТоваров(ClientID, APIKey, SKU); -EndFunction - -Function CreateUpdateProducts(Val ClientID, Val APIKey, Val ProductsArray) Export - Return СоздатьОбновитьТовары(ClientID, APIKey, ProductsArray); -EndFunction - -Function CreateProductByOzonID(Val ClientID, Val APIKey, Val ProductsArray) Export - Return СоздатьТоварыПоOzonID(ClientID, APIKey, ProductsArray); -EndFunction - -Function UpdateProductsAttributes(Val ClientID, Val APIKey, Val AttributesArray) Export - Return ОбновитьХарактеристикиТоваров(ClientID, APIKey, AttributesArray); -EndFunction - -Function UpdateProductImages(Val ClientID, Val APIKey, Val ProductID, Val ImagesArray = "", Val Array360 = "", Val MarketingColor = "") Export - Return ОбновитьИзображенияТовара(ClientID, APIKey, ProductID, ImagesArray, Array360, MarketingColor); -EndFunction - -Function CheckProductsImagesUpload(Val ClientID, Val APIKey, Val ProductsID) Export - Return ПроверитьЗагрузкуИзображенийТоваров(ClientID, APIKey, ProductsID); -EndFunction - -Function UpdateProductsArticles(Val ClientID, Val APIKey, Val ArticlesMap) Export - Return ИзменитьАртикулыТоваров(ClientID, APIKey, ArticlesMap); -EndFunction - -Function ArchiveProducts(Val ClientID, Val APIKey, Val ProductsID) Export - Return АрхивироватьТовары(ClientID, APIKey, ProductsID); -EndFunction - -Function UnarchiveProducts(Val ClientID, Val APIKey, Val ProductsID) Export - Return РазархивироватьТовары(ClientID, APIKey, ProductsID); -EndFunction - -Function DeleteProductsWithoutSKU(Val ClientID, Val APIKey, Val Articles) Export - Return УдалитьТоварыБезSKU(ClientID, APIKey, Articles); -EndFunction - -Function UploadProductActivationCodes(Val ClientID, Val APIKey, Val ProductID, Val Codes) Export - Return ЗагрузитьКодыАктивацииТовара(ClientID, APIKey, ProductID, Codes); -EndFunction - -Function GetProductSubscribersCount(Val ClientID, Val APIKey, Val SKU) Export - Return ПолучитьКоличествоПодписчиковТоваров(ClientID, APIKey, SKU); -EndFunction - -Function GetRelatedSKUs(Val ClientID, Val APIKey, Val SKU) Export - Return ПолучитьСвязанныеSKU(ClientID, APIKey, SKU); -EndFunction - -Function GetProductCreationStatus(Val ClientID, Val APIKey, Val TaskID) Export - Return ПолучитьСтатусДобавленияТовара(ClientID, APIKey, TaskID); -EndFunction - -Function GetCodesUploadStatus(Val ClientID, Val APIKey, Val TaskID) Export - Return ПолучитьСтатусДобавленияКодов(ClientID, APIKey, TaskID); -EndFunction - -Function GetProductStructure(Val Clear = False) Export - Return ПолучитьСтруктуруТовара(Clear); -EndFunction - -Function GetSimplifiedProductStructure(Val Clear = False) Export - Return ПолучитьСокращеннуюСтруктуруТовара(Clear); -EndFunction - -Function GetAttributesUpdateStructure(Val Clear = False) Export - Return ПолучитьСтруктуруОбновленияХарактеристик(Clear); -EndFunction - -Function GetProductsFilterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраТоваров(Clear); -EndFunction - -Function AddProductVideo(ItemStructure, Val URL, Val Name) Export - Return ДобавитьВидеоТовара(ItemStructure, URL, Name); -EndFunction - -Function AddProductVideoCover(ItemStructure, Val URL) Export - Return ДобавитьВидеообложкуТовара(ItemStructure, URL); -EndFunction - -Function CompleteComplexAttribute(Collection, Val AttributeID, Val ComplexID, Val Values) Export - Return ДополнитьКомплексныйАтрибут(Collection, AttributeID, ComplexID, Values); -EndFunction - -Function BindBarcodes(Val ClientID, Val APIKey, Val BarcodesMap) Export - Return ПривязатьШтрихкоды(ClientID, APIKey, BarcodesMap); -EndFunction - -Function CreateBarcodes(Val ClientID, Val APIKey, Val ProductsID) Export - Return СоздатьШтрихкоды(ClientID, APIKey, ProductsID); -EndFunction - -Function GetProductsStocks(Val ClientID, Val APIKey, Val Filter = "", Val LastID = 0) Export - Return ПолучитьКоличествоТоваров(ClientID, APIKey, Filter, LastID); -EndFunction - -Function GetProductsPrices(Val ClientID, Val APIKey, Val Filter = "", Val LastID = 0) Export - Return ПолучитьЦеныТоваров(ClientID, APIKey, Filter, LastID); -EndFunction - -Function GetDiscountInformation(Val ClientID, Val APIKey, Val SKU) Export - Return ПолучитьИнформациюОбУценке(ClientID, APIKey, SKU); -EndFunction - -Function UpdateProductsStocks(Val ClientID, Val APIKey, Val Stocks) Export - Return ОбновитьКоличествоТоваров(ClientID, APIKey, Stocks); -EndFunction - -Function UpdateProductsPrices(Val ClientID, Val APIKey, Val Prices) Export - Return ОбновитьЦеныТоваров(ClientID, APIKey, Prices); -EndFunction - -Function SetProductDiscount(Val ClientID, Val APIKey, Val ProductID, Val Discount) Export - Return УстановитьСкидкуНаУцененныйТовар(ClientID, APIKey, ProductID, Discount); -EndFunction - -Function GetProductStocksStructure(Val Clear = False) Export - Return ПолучитьСтруктуруОстатковТовара(Clear); -EndFunction - -Function GetProductPriceStructure(Val Clear = False) Export - Return ПолучитьСтруктуруЦеныТовара(Clear); -EndFunction - -Function GetPromotionsList(Val ClientID, Val APIKey) Export - Return ПолучитьСписокАкций(ClientID, APIKey); -EndFunction - -Function GetAvailablePromoProducts(Val ClientID, Val APIKey, Val PromoID, Val Indent = 0) Export - Return ПолучитьДоступныеТоварыАкции(ClientID, APIKey, PromoID, Indent); -EndFunction - -Function GetCurrentPromoProducts(Val ClientID, Val APIKey, Val PromoID, Val Indent = 0) Export - Return ПолучитьУчаствующиеТоварыАкции(ClientID, APIKey, PromoID, Indent); -EndFunction - -Function GetWarehousesList(Val ClientID, Val APIKey) Export - Return ПолучитьСписокСкладов(ClientID, APIKey); -EndFunction - -Function GetClustersList(Val ClientID, Val APIKey, Val ClusterType = "CLUSTER_TYPE_OZON") Export - Return ПолучитьСписокКластеров(ClientID, APIKey, ClusterType); -EndFunction - -Function GetShippingWarehousesList(Val ClientID, Val APIKey, Val Search, Val SupplyType = "CREATE_TYPE_DIRECT") Export - Return ПолучитьСписокСкладовОтгрузки(ClientID, APIKey, Search, SupplyType); -EndFunction - -Function GetFBOShipmentsList(Val ClientID, Val APIKey, Val Filter = Undefined, Val AddFields = Undefined, Val Indent = 0, Val Traslit = False) Export - Return ПолучитьСписокОтправленийFBO(ClientID, APIKey, Filter, AddFields, Indent, Traslit); -EndFunction - -Function CreateFBODraft(Val ClientID, Val APIKey, Val Clusters, Val Items, Val SupplyType = "CREATE_TYPE_DIRECT", Val ShippingPoint = "") Export - Return СоздатьЧерновикЗаявкиFBO(ClientID, APIKey, Clusters, Items, SupplyType, ShippingPoint); -EndFunction - -Function GetFBODraft(Val ClientID, Val APIKey, Val OperationID) Export - Return ПолучитьЧерновикЗаявкиFBO(ClientID, APIKey, OperationID); -EndFunction - -Function GetFBOTimeslots(Val ClientID, Val APIKey, Val DateFrom, Val DateTo, Val Draft, Val Warehouses) Export - Return ПолучитьТаймслотыFBO(ClientID, APIKey, DateFrom, DateTo, Draft, Warehouses); -EndFunction - -Function GetShipmentAdditionalFields(Val Clear = False) Export - Return ПолучитьСтруктуруДопПолейОтправления(Clear); -EndFunction - -Function GetShipmentsFilterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраОтправлений(Clear); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_Ozon.os +// Lib: Ozon +// CLI: ozon +// Keywords: ozon, seller api + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область АтрибутыИХарактеристики + +// Получить дерево категорий и типов товаров +// Возвращает категории и типы для товаров в виде дерева +// +// Примечание: +// Создание товаров доступно только в категориях последнего уровня, сравните именно их с категориями на своей площадке. Категории не создаются по запросу пользователя +// Внимательно выбирайте категорию для товара: для разных категорий применяется разный размер комиссии. +// Метод в документации API: [post /v1/description-category/tree](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetTree) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Язык - Строка - Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) - lang +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьДеревоКатегорийИТиповТоваров(Знач IDКлиента, Знач КлючAPI, Знач Язык = "DEFAULT") Экспорт + + URL = "https://api-seller.ozon.ru/v1/description-category/tree"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("language", Язык, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить характеристики категории +// Получает характеристики для указанной категории и типа товара +// +// Примечание: +// Если у dictionary_id значение 0, у атрибута нет вложенных справочников. Если значение другое, то справочники есть. Получить их можно методом ПолучитьЗначенияХарактеристик() +// Метод в документации API: [post /v1/description-category/attribute](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetAttributes) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDКатегории - Строка, Число - Идентификатор категории - categoryid +// IDТипа - Строка, Число - Идентификатор типа товара - typeid +// Язык - Строка - Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) - lang +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьХарактеристикиКатегории(Знач IDКлиента + , Знач КлючAPI + , Знач IDКатегории + , Знач IDТипа + , Знач Язык = "DEFAULT") Экспорт + + Строка_ = "Строка"; + + URL = "https://api-seller.ozon.ru/v1/description-category/attribute"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("description_category_id", IDКатегории, Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("type_id" , IDТипа , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("language" , Язык , Строка_, Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить значения характеристики +// Получает список доступных значений характеристики +// +// Примечание: +// Узнать, есть ли вложенный справочник, можно через метод ПолучитьХарактеристикиКатегории() +// Метод в документации API: [post /v1/description-category/attribute/values](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetAttributeValues) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDКатегории - Строка, Число - Идентификатор категории - categoryid +// IDТипа - Строка, Число - Идентификатор типа товара - typeid +// IDХарактеристики - Строка, Число - ID характеристики для получения значений - attributeid +// IDСправочника - Строка, Число - ID первого справочника в ответе - start +// Язык - Строка - Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) - lang +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьЗначенияХарактеристики(Знач IDКлиента + , Знач КлючAPI + , Знач IDКатегории + , Знач IDТипа + , Знач IDХарактеристики + , Знач IDСправочника = 1 + , Знач Язык = "DEFAULT") Экспорт + + Строка_ = "Строка"; + + URL = "https://api-seller.ozon.ru/v1/description-category/attribute/values"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + Лимит = 200; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("description_category_id", IDКатегории , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("type_id" , IDТипа , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("attribute_id" , IDХарактеристики , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("language" , Язык , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("limit" , Лимит , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("last_value_id" , IDСправочника - 1, Строка_, Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Найти значения характеристики +// Получает справочные значения характеристики по заданному значению в запросе +// +// Примечание: +// Узнать, есть ли вложенный справочник, можно через метод ПолучитьХарактеристикиКатегории() +// Метод в документации API: [post /v1/description-category/attribute/values/search](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_SearchAttributeValues) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDКатегории - Строка, Число - Идентификатор категории - categoryid +// IDТипа - Строка, Число - Идентификатор типа товара - typeid +// IDХарактеристики - Строка, Число - ID характеристики для получения значений - attributeid +// Значение - Строка - Значение для поиска - value +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция НайтиЗначенияХарактеристики(Знач IDКлиента + , Знач КлючAPI + , Знач IDКатегории + , Знач IDТипа + , Знач IDХарактеристики + , Знач Значение) Экспорт + + Строка_ = "Строка"; + + URL = "https://api-seller.ozon.ru/v1/description-category/attribute/values/search"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + Лимит = 100; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("description_category_id", IDКатегории , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("type_id" , IDТипа , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("attribute_id" , IDХарактеристики , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("limit" , Лимит , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("value" , Значение , Строка_, Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить лимиты работы с товарами +// Получает данные о лимитах на ассортимент, создание и обновление товаров +// +// Примечание: +// Метод в документации API: [post /v4/product/info/limit](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetUploadQuota) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьЛимитыРаботыСТоварами(Знач IDКлиента, Знач КлючAPI) Экспорт + + URL = "https://api-seller.ozon.ru/v4/product/info/limit"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область ЗагрузкаИОбновлениеТоваров + +// Получить список товаров +// Получает список товаров с фильтром или без +// +// Примечание: +// Метод в документации API: [post /v3/product/list](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductList) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Фильтр - Структура Из КлючИЗначение - Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров - filter +// IDПоследнего - Строка, Число - ID последнего значения (last_id) из предыдущего запроса - last +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСписокТоваров(Знач IDКлиента, Знач КлючAPI, Знач Фильтр = "", Знач IDПоследнего = 0) Экспорт + + Filter_ = "filter"; + + URL = "https://api-seller.ozon.ru/v3/product/list"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + Лимит = 200; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле(Filter_ , Фильтр , "Коллекция", Параметры); + OPI_Инструменты.ДобавитьПоле("limit" , Лимит , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("last_id", IDПоследнего, "Строка" , Параметры); + + Если Не Параметры.Свойство(Filter_) Тогда + Параметры.Вставить(Filter_, Новый Структура); + КонецЕсли; + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить описания харакетристик товаров +// Получает описания характеристик товаров с фильтром или без +// +// Примечание: +// Метод в документации API: [post /v4/products/info/attributes](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductAttributesV4) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Фильтр - Структура Из КлючИЗначение - Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров - filter +// IDПоследнего - Строка, Число - ID последнего значения (last_id) из предыдущего запроса - last +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьОписанияХарактеристикТоваров(Знач IDКлиента + , Знач КлючAPI + , Знач Фильтр = "" + , Знач IDПоследнего = 0) Экспорт + + Filter_ = "filter"; + + URL = "https://api-seller.ozon.ru/v4/product/info/attributes"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + Лимит = 200; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле(Filter_ , Фильтр , "Коллекция", Параметры); + OPI_Инструменты.ДобавитьПоле("limit" , Лимит , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("last_id", IDПоследнего, "Строка" , Параметры); + + Если Не Параметры.Свойство(Filter_) Тогда + Параметры.Вставить(Filter_, Новый Структура); + КонецЕсли; + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить информацию о товарах +// Получает информацию о товарах по массиву идентификаторов +// +// Примечание: +// Уточняйте минимальную цену товара после применения всех акций в личном кабинете. Параметр min_price из ответа метода на доработке и возвращает 0 +// Параметр active_product устарел, используйте значения параметра visible +// Параметры fbs_sku и fbo_sku из ответа метода были отключены 15 августа 2023 года +// В теле запроса должен быть один идентификатор или массив однотипных идентификаторов, в ответе будет массив items +// Метод в документации API: [post /v3/product/info/list](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoList) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТоваров - Число, Массив Из Число - Идентификаторы товаров - productid +// SKU - Число, Массив Из Число - Идентификаторы товаров в системе Ozon (SKU) - sku +// Артикулы - Строка, Массив Из Строка - Идентификаторы товаров в системе продавца (Артикул) - offerid +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьИнформациюОТоварах(Знач IDКлиента + , Знач КлючAPI + , Знач IDТоваров = 0 + , Знач SKU = 0 + , Знач Артикулы = "") Экспорт + + Массив_ = "Массив"; + + URL = "https://api-seller.ozon.ru/v3/product/info/list"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("offer_id" , Артикулы , Массив_, Параметры); + OPI_Инструменты.ДобавитьПоле("product_id", IDТоваров, Массив_, Параметры); + OPI_Инструменты.ДобавитьПоле("sku" , SKU , Массив_, Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить описание товара +// Получает описание товара по идентификаторам +// +// Примечание: +// Метод в документации API: [post /v1/product/info/description](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoDescription) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТовара - Строка, Число - Идентификатор товара - productid +// Артикул - Строка, Число - Идентификатор товара в системе продавца (Артикул) - offerid +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьОписаниеТовара(Знач IDКлиента, Знач КлючAPI, Знач IDТовара = 0, Знач Артикул = "") Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/info/description"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("offer_id" , Артикул , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("product_id", IDТовара, "Число" , Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить контент рейтинг товаров +// Получает контент рейтинг товаров по SKU +// +// Примечание: +// Метод в документации API: [post /v1/product/rating-by-sku](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductRatingBySku) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// SKU - Число, Массив Из Число - Идентификаторы товаров в системе Ozon (SKU) - sku +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьКонтентРейтингТоваров(Знач IDКлиента, Знач КлючAPI, Знач SKU) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/rating-by-sku"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("skus", SKU, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Создать обновить товары +// Создает новые или обновляет существующие товары по структурам полей +// +// Примечание: +// Методы формирования структуры товара: ПолучитьСтруктуруТовара(), ДобавитьВидеоТовара(), ДобавитьВидеообложкуТовара() +// Метод проверки статуса добавления - ПолучитьСтатусДобавленияТовара() +// Метод в документации API: [post /v3/product/import](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsV3) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// МассивТоваров - Массив Из Строка - Массив или одна структура полей описания товара - items +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция СоздатьОбновитьТовары(Знач IDКлиента, Знач КлючAPI, Знач МассивТоваров) Экспорт + + URL = "https://api-seller.ozon.ru/v3/product/import"; + + Ответ = ОтправитьОписанияОбъектов(IDКлиента, КлючAPI, МассивТоваров, URL); + + Возврат Ответ; + +КонецФункции + +// Создать товары по Ozon ID +// Создаёт товар по указанному Ozon ID +// +// Примечание: +// Получить пустую структуру можно при помощи метода ПолучитьСокращеннуюСтруктуруТовара() +// Обновить товар по Ozon ID нельзя +// Метод в документации API: [post /v1/product/import-by-sku](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsBySKU) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// МассивТоваров - Массив Из Строка - Массив или одна сокращенная структура полей описания товара - items +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция СоздатьТоварыПоOzonID(Знач IDКлиента, Знач КлючAPI, Знач МассивТоваров) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/import-by-sku"; + + Ответ = ОтправитьОписанияОбъектов(IDКлиента, КлючAPI, МассивТоваров, URL); + + Возврат Ответ; + +КонецФункции + +// Обновить характеристики товаров +// Обновляет характеристики выбранных товаров +// +// Примечание: +// Получить пустую структуру можно при помощи метода ПолучитьСтруктуруОбновленияХарактеристик() +// Метод в документации API: [post /v1/product/attributes/update](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductUpdateAttributes) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// МассивХарактеристик - Массив Из Строка - Массив или одна структура полей атрибутов товара - items +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ОбновитьХарактеристикиТоваров(Знач IDКлиента, Знач КлючAPI, Знач МассивХарактеристик) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/attributes/update"; + + Ответ = ОтправитьОписанияОбъектов(IDКлиента, КлючAPI, МассивХарактеристик, URL); + + Возврат Ответ; + +КонецФункции + +// Обновить изображения товара +// Обновляет изображения и маркетинговый цвет товара +// +// Примечание: +// При каждом вызове метода передавайте все изображения, которые должны быть на карточке товара +// Для загрузки передайте адрес ссылки на изображение в общедоступном облачном хранилище. Формат изображения по ссылке: JPG или PNG +// Если вы хотите изменить состав или порядок изображений, получите информацию с помощью метода ПолучитьИнформациюОТоваре(), скопируйте данные полей images, images360, color_image, измените и дополните состав или порядок в соответствии с необходимостью +// Метод в документации API: [post /v1/product/pictures/import](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductImportPictures) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТовара - Строка, Число - Идентификатор товара - productid +// МассивИзображений - Массив Из Строка - Массив URL изображений - images +// Массив360 - Массив Из Строка - Массив изображений 360 - images360 +// МаркетинговыйЦвет - Строка - Маркетинговый цвет - color +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ОбновитьИзображенияТовара(Знач IDКлиента + , Знач КлючAPI + , Знач IDТовара + , Знач МассивИзображений = "" + , Знач Массив360 = "" + , Знач МаркетинговыйЦвет = "") Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/pictures/import"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("product_id" , IDТовара , "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("color_image", МаркетинговыйЦвет, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("images" , МассивИзображений, "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("images360" , Массив360 , "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Проверить загрузку изображений товаров +// Проверяет загрузку изображений по массиву ID товаров +// +// Примечание: +// Метод в документации API: [post /v2/product/pictures/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductInfoPictures) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТоваров - Строка, Число, Массив Из Строка, Число - ID товаров для проверки - products +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПроверитьЗагрузкуИзображенийТоваров(Знач IDКлиента, Знач КлючAPI, Знач IDТоваров) Экспорт + + URL = "https://api-seller.ozon.ru/v2/product/pictures/info"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("product_id", IDТоваров, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Изменить артикулы товаров +// Изменяет артикулы существующих товаров +// +// Примечание: +// Метод в документации API: [post /v1/product/update/offer-id](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductUpdateOfferID) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// СоответствиеАртикулов - Соответствие Из КлючИЗначение - Артикулы: Ключ > старый, Значение > новый - offers +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ИзменитьАртикулыТоваров(Знач IDКлиента, Знач КлючAPI, Знач СоответствиеАртикулов) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеАртикулов); + + Если ТипЗнч(СоответствиеАртикулов) = Тип("Массив") Тогда + ВызватьИсключение "Ошибка типа значения соответствия артикулов"; + КонецЕсли; + + МассивОбъектов = Новый Массив; + + Для Каждого ПараАртикулов Из СоответствиеАртикулов Цикл + МассивОбъектов.Добавить(Новый Структура("offer_id,new_offer_id", ПараАртикулов.Ключ, ПараАртикулов.Значение)); + КонецЦикла; + + URL = "https://api-seller.ozon.ru/v1/product/update/offer-id"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("update_offer_id", МассивОбъектов, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Архивировать товары +// Переносит выбранные товары в архив +// +// Примечание: +// Вы можете передать до 100 идентификаторов за раз +// Метод в документации API: [post /v1/product/archive](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductArchive) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТоваров - Строка, Число, Массив Из Строка, Число - ID товаров для архивации - products +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция АрхивироватьТовары(Знач IDКлиента, Знач КлючAPI, Знач IDТоваров) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/archive"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("product_id", IDТоваров, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Разархивировать товары +// Возвращает выбранные товары из архива +// +// Примечание: +// В сутки можно восстановить из архива не больше 10 товаров, которые были архивированы автоматически. На разархивацию товаров, перенесённых в архив вручную, ограничений нет. +// Метод в документации API: [post /v1/product/unarchive](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductUnarchive) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТоваров - Строка, Число, Массив Из Строка, Число - ID товаров для восстановления - products +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция РазархивироватьТовары(Знач IDКлиента, Знач КлючAPI, Знач IDТоваров) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/unarchive"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("product_id", IDТоваров, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить товары без SKU +// Удаляет товары без SKU из архива +// +// Примечание: +// Товар должен быть предварительно архивирован (см. АрхивироватьТовары) +// В одном запросе можно передать до 500 идентификаторов +// Метод в документации API: [post /v2/products/delete](@docs.ozon.ru/api/seller/#operation/ProductAPI_DeleteProducts) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Артикулы - Строка, Число, Массив Из Строка, Число - Артикулы товаров - articles +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция УдалитьТоварыБезSKU(Знач IDКлиента, Знач КлючAPI, Знач Артикулы) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьМассив(Артикулы); + + URL = "https://api-seller.ozon.ru/v2/products/delete"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + МассивТоваров = Новый Массив; + + Для Каждого Артикул Из Артикулы Цикл + + ТекущийАртикул = OPI_Инструменты.ЧислоВСтроку(Артикул); + МассивТоваров.Добавить(Новый Структура("offer_id", ТекущийАртикул)); + + КонецЦикла; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("products", МассивТоваров, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Загрузить коды активации товара +// Загружает коды активации для цифрового товара или услуги +// +// Примечание: +// Код активации привязывается к карточке цифрового товара +// Метод проверки статуса добавления - ПолучитьСтатусДобавленияКодов() +// Метод в документации API: [post /v1/product/upload_digital_codes](@docs.ozon.ru/api/seller/#operation/ProductAPI_UploadDigitalCode) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТовара - Число - ID товара - productid +// Коды - Строка, Массив Из Строка - Коды активации цифрового товара - codes +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ЗагрузитьКодыАктивацииТовара(Знач IDКлиента, Знач КлючAPI, Знач IDТовара, Знач Коды) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/upload_digital_codes"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("product_id" , IDТовара, "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("digital_codes", Коды , "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить количество подписчиков товаров +// Получает количество пользователей, которые нажали Узнать о поступлении на странице товара +// +// Примечание: +// Метод в документации API: [post /v1/product/info/subscription](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoSubscription) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// SKU - Число, Массив Из Число - Идентификаторы товаров в системе Ozon (SKU) - sku +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьКоличествоПодписчиковТоваров(Знач IDКлиента, Знач КлючAPI, Знач SKU) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/info/subscription"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("skus", SKU, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить связанные SKU +// Получает единый SKU по старым идентификаторам SKU FBS и SKU FBO +// +// Примечание: +// В ответе будут все SKU, связанные с переданными. Метод может обработать любые SKU, даже скрытые или удалённые. +// Передавайте до 200 SKU в одном запросе. +// Метод в документации API: [post /v1/product/related-sku/get](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductGetRelatedSKU) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// SKU - Число, Массив Из Число - Идентификаторы товаров в системе Ozon (SKU) - sku +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСвязанныеSKU(Знач IDКлиента, Знач КлючAPI, Знач SKU) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/related-sku/get"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("sku", SKU, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить статус добавления товара +// Получает статус добавления нового товара по ID задачи +// +// Примечание: +// Метод в документации API: [post /v1/product/import/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetImportProductsInfo) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDЗадачи - Строка, Число - ID задачи добавления товара - taskid +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСтатусДобавленияТовара(Знач IDКлиента, Знач КлючAPI, Знач IDЗадачи) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/import/info"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("task_id", IDЗадачи, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить статус добавления кодов +// Получает статус добавления кодов цифрового товара по ID задачи +// +// Примечание: +// Метод в документации API: [post /v1/product/upload_digital_codes/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_UploadDigitalCodeInfo) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDЗадачи - Строка, Число - ID задачи добавления товара - taskid +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСтатусДобавленияКодов(Знач IDКлиента, Знач КлючAPI, Знач IDЗадачи) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/upload_digital_codes/info"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("task_id", IDЗадачи, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить структуру товара +// Получает структуру стандартных полей товара +// +// Примечание: +// Эту структуру необходимо дополнить полями, зависящими от категории товара из ПолучитьХарактеристикиКатегории() +// Первая картинка в массиве картинок (поле images) будет основной +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей товара +Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураТовара = Новый Структура; + СтруктураТовара.Вставить("description_category_id", ""); + СтруктураТовара.Вставить("name" , "<имя товара>"); + СтруктураТовара.Вставить("offer_id" , "<артикул>"); + СтруктураТовара.Вставить("barcode" , "<штрихкод>"); + СтруктураТовара.Вставить("price" , "<цена>"); + СтруктураТовара.Вставить("old_price" , "<старая цена>"); + СтруктураТовара.Вставить("vat" , "<ставка ндс, например 0.2>"); + СтруктураТовара.Вставить("height" , "<высота>"); + СтруктураТовара.Вставить("width" , "<ширина>"); + СтруктураТовара.Вставить("depth" , "<глубина>"); + СтруктураТовара.Вставить("dimension_unit" , "<единица измерения для размеров, например mm>"); + СтруктураТовара.Вставить("weight" , "<вес>"); + СтруктураТовара.Вставить("weight_unit" , "<единица измерения для веса, например g>"); + СтруктураТовара.Вставить("images" , "<массив URL картинок товара>"); + СтруктураТовара.Вставить("images360" , "<массив URL картинок 360>"); + СтруктураТовара.Вставить("color_image" , "<маркетинговый цвет для картинок>"); + + Если Пустая Тогда + Для Каждого Поле Из СтруктураТовара Цикл + СтруктураТовара.Вставить(Поле.Ключ, ""); + КонецЦикла; + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураТовара; + +КонецФункции + +// Получить сокращенную структуру товара +// Получает структуру для создания товара на основе Ozon ID в функции СоздатьТоварыПоOzonID() +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей товара +Функция ПолучитьСокращеннуюСтруктуруТовара(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураТовара = Новый Структура; + + СтруктураТовара.Вставить("name" , "<наименование>"); + СтруктураТовара.Вставить("sku" , "<идентификатор товара в системе Ozon>"); + СтруктураТовара.Вставить("offer_id" , "<артикул>"); + СтруктураТовара.Вставить("price" , "<цена>"); + СтруктураТовара.Вставить("old_price" , "<старая цена>"); + СтруктураТовара.Вставить("vat" , "<ставка ндс, например 0.2>"); + СтруктураТовара.Вставить("currency_code", "<валюта>"); + + Если Пустая Тогда + Для Каждого Поле Из СтруктураТовара Цикл + СтруктураТовара.Вставить(Поле.Ключ, ""); + КонецЦикла; + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураТовара; + +КонецФункции + +// Получить структуру обновления характеристик +// Получает структуру для обновления характеристик товара в функции ОбновитьХарактеристикиТоваров() +// +// Примечание: +// Характеристики представляют из себя структуры с полями complex_id, id и массивом values. Для их быстрого создания есть метод ДополнитьКомплексныйАтрибут() +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей товара +Функция ПолучитьСтруктуруОбновленияХарактеристик(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураТовара = Новый Структура; + + СтруктураТовара.Вставить("offer_id" , "<артикул>"); + СтруктураТовара.Вставить("attributes", "<массив обновляемых атрибутов>"); + + Если Пустая Тогда + Для Каждого Поле Из СтруктураТовара Цикл + СтруктураТовара.Вставить(Поле.Ключ, ""); + КонецЦикла; + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураТовара; + +КонецФункции + +// Получить структуру фильтра товаров +// Получает структуру для отбора списка товаров +// +// Примечание: +// Связанные функции: ПолучитьСписокТоваров, ПолучитьКоличествоТоваров, ПолучитьЦеныТоваров +// Описание полей фильтра можно найти на странице документации по получению списка товаров: [post /v2/product/list](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductList) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей фильра +Функция ПолучитьСтруктуруФильтраТоваров(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураТовара = Новый Структура; + + СтруктураТовара.Вставить("offer_id" , "<массив артикулов>"); + СтруктураТовара.Вставить("product_id", "<массив ID товаров>"); + СтруктураТовара.Вставить("visibility", "<видимость>"); + + Если Пустая Тогда + Для Каждого Поле Из СтруктураТовара Цикл + СтруктураТовара.Вставить(Поле.Ключ, ""); + КонецЦикла; + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураТовара; + +КонецФункции + +// Добавить видео товара +// Добавляет видео к атрибутам товара +// +// Примечание: +// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии +// +// Параметры: +// СтруктураТовара - Структура Из Строка - Основная структура полей товара. См. ПолучитьСтруктуруТовара - item +// URL - Строка - URL к видео для добавления - url +// Наименование - Строка - Техническое наименование видео - title +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей товара с добавленным видео +Функция ДобавитьВидеоТовара(СтруктураТовара, Знач URL, Знач Наименование) Экспорт + + Complex_attributes_ = "complex_attributes"; + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураТовара); + OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); + + ОбъектВидео = Новый Структура(); + СтруктураURL = Новый Структура("value", URL); + СтруктураНаименования = Новый Структура("value", Наименование); + + ДополнитьКомплексныйАтрибут(ОбъектВидео, 21841, 100001, СтруктураURL); + ДополнитьКомплексныйАтрибут(ОбъектВидео, 21837, 100001, СтруктураНаименования); + + Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураТовара, Complex_attributes_) Тогда + СтруктураТовара.Вставить(Complex_attributes_, Новый Массив); + КонецЕсли; + + СтруктураТовара[Complex_attributes_].Добавить(ОбъектВидео); + + //@skip-check constructor-function-return-section + Возврат СтруктураТовара; + +КонецФункции + +// Добавить видеообложку товара +// Добавляет видеообложку к атрибутам товара +// +// Примечание: +// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии +// +// Параметры: +// СтруктураТовара - Структура Из Строка - Основная структура полей товара. См. ПолучитьСтруктуруТовара - item +// URL - Строка - URL к видеообложке для добавления - url +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей товара с добавленным видео +Функция ДобавитьВидеообложкуТовара(СтруктураТовара, Знач URL) Экспорт + + Complex_attributes_ = "complex_attributes"; + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураТовара); + OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); + + ОбъектОбложка = Новый Структура(); + СтруктураURL = Новый Структура("dictionary_value_id,value", 0, URL); + + ДополнитьКомплексныйАтрибут(ОбъектОбложка, 21845, 100002, СтруктураURL); + + Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураТовара, Complex_attributes_) Тогда + СтруктураТовара.Вставить(Complex_attributes_, Новый Массив); + КонецЕсли; + + СтруктураТовара[Complex_attributes_].Добавить(ОбъектОбложка); + + //@skip-check constructor-function-return-section + Возврат СтруктураТовара; + +КонецФункции + +// Дополнить комплексный атрибут +// Оформляет значение в формате атрибута и добавляет его в массив attributes переданной коллекции +// +// Примечание: +// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии +// +// Параметры: +// Коллекция - Структура Из Строка - Структура комплексного атрибута или структура товара - object +// IDАтрибута - Строка, Число - ID атрибута - attributeid +// КомплексныйID - Строка, Число - Комплексный ID - complexid +// Значения - Произвольный - Значение или массив значений для добавления в values - values +// +// Возвращаемое значение: +// Структура - Коллекция, дополненная атрибутом +Функция ДополнитьКомплексныйАтрибут(Коллекция, Знач IDАтрибута, Знач КомплексныйID, Знач Значения) Экспорт + + Attributes_ = "attributes"; + + OPI_ПреобразованиеТипов.ПолучитьМассив(Значения); + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Коллекция); + + СтруктураАтрибута = Новый Структура("id,complex_id,values", IDАтрибута, КомплексныйID, Значения); + + Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Коллекция, Attributes_) Тогда + Коллекция.Вставить(Attributes_, Новый Массив); + КонецЕсли; + + Коллекция[Attributes_].Добавить(СтруктураАтрибута); + + //@skip-check constructor-function-return-section + Возврат Коллекция; + +КонецФункции + +#КонецОбласти + +#Область Штрихкоды + +// Привязать штрихкоды +// Привязывает штрихкоды к товарам +// +// Примечание: +// Метод в документации API: [post /v1/barcode/add](@docs.ozon.ru/api/seller/#operation/add-barcode) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// СоответствиеШтрихкодов - Соответствие Из КлючИЗначение - Ключ > SKU товара, Значение > Штрихкод - barcodes +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПривязатьШтрихкоды(Знач IDКлиента, Знач КлючAPI, Знач СоответствиеШтрихкодов) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеШтрихкодов); + + URL = "https://api-seller.ozon.ru/v1/barcode/add"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + МассивШтрихкодов = Новый Массив; + + Для Каждого Штрихкод Из СоответствиеШтрихкодов Цикл + + СтруктураШтрихкода = Новый Структура; + OPI_Инструменты.ДобавитьПоле("sku" , Штрихкод.Ключ , "Число" , СтруктураШтрихкода); + OPI_Инструменты.ДобавитьПоле("barcode", Штрихкод.Значение, "Строка", СтруктураШтрихкода); + + МассивШтрихкодов.Добавить(СтруктураШтрихкода); + + КонецЦикла; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("barcodes", МассивШтрихкодов, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Создать штрихкоды +// Генерирует новые штрихкоды для товаров +// +// Примечание: +// За один запрос вы можете создать штрихкоды не больше чем для 100 товаров +// С одного аккаунта продавца можно использовать метод не больше 20 раз в минуту +// Метод в документации API: [post /v1/barcode/generate](@docs.ozon.ru/api/seller/#operation/generate-barcode) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТоваров - Строка, Массив Из Строка - ID товаров для создания штрихкодов - productids +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция СоздатьШтрихкоды(Знач IDКлиента, Знач КлючAPI, Знач IDТоваров) Экспорт + + URL = "https://api-seller.ozon.ru/v1/barcode/generate"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("product_ids", IDТоваров, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область ЦеныИОстаткиТоваров + +// Получить количество товаров +// Получает количество товаров в остатке с фильтром или без +// +// Примечание: +// Метод в документации API: [post /v4/product/info/stocks](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoStocks) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Фильтр - Структура Из КлючИЗначение - Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров - filter +// IDПоследнего - Строка, Число - ID последнего значения (last_id) из предыдущего запроса - last +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьКоличествоТоваров(Знач IDКлиента, Знач КлючAPI, Знач Фильтр = "", Знач IDПоследнего = 0) Экспорт + + Filter_ = "filter"; + + URL = "https://api-seller.ozon.ru/v4/product/info/stocks"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + Лимит = 100; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле(Filter_ , Фильтр , "Коллекция", Параметры); + OPI_Инструменты.ДобавитьПоле("limit" , Лимит , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("last_id", IDПоследнего, "Строка" , Параметры); + + Если Не Параметры.Свойство(Filter_) Тогда + Параметры.Вставить(Filter_, Новый Структура); + КонецЕсли; + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить цены товаров +// Получает цены товаров с фильтром или без +// +// Примечание: +// Метод в документации API: [post /v5/product/info/prices](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoPrices) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Фильтр - Структура Из КлючИЗначение - Фильтр выборки товаров. См. ПолучитьСтруктуруФильтраТоваров - filter +// IDПоследнего - Строка, Число - ID последнего значения (last_id) из предыдущего запроса - last +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьЦеныТоваров(Знач IDКлиента, Знач КлючAPI, Знач Фильтр = "", Знач IDПоследнего = 0) Экспорт + + Filter_ = "filter"; + + URL = "https://api-seller.ozon.ru/v5/product/info/prices"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + Лимит = 300; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле(Filter_ , Фильтр , "Коллекция", Параметры); + OPI_Инструменты.ДобавитьПоле("limit" , Лимит , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("last_id", IDПоследнего, "Строка" , Параметры); + + Если Не Параметры.Свойство(Filter_) Тогда + Параметры.Вставить(Filter_, Новый Структура); + КонецЕсли; + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить информацию об уценке +// Получает информацию об уценке и основном товаре по SKU уценённых товаров +// +// Примечание: +// Метод в документации API: [post /v1/product/info/discounted](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetProductInfoDiscounted) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// SKU - Число, Массив Из Число - SKU уцененных товаров - sku +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьИнформациюОбУценке(Знач IDКлиента, Знач КлючAPI, Знач SKU) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/info/discounted"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("discounted_skus", SKU, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Обновить количество товаров +// Изменяет информацию о количестве товара в наличии +// +// Примечание: +// За один запрос можно изменить наличие для 100 товаров. С одного аккаунта продавца можно отправить до 80 запросов в минуту. +// Обновлять остатки товара на одном складе можно только 1 раз в 2 минуты. Вы можете задать наличие товара только после того, как его статус сменится на price_sent +// Остатки крупногабаритных товаров можно обновлять только на предназначенных для них складах +// Метод в документации API: [post /v2/products/stocks](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductsStocksV2) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Остатки - Массив Из Структура - Массив описаний остатков. См. ПолучитьСтруктуруОстатковТовара - stocks +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ОбновитьКоличествоТоваров(Знач IDКлиента, Знач КлючAPI, Знач Остатки) Экспорт + + URL = "https://api-seller.ozon.ru/v2/products/stocks"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("stocks", Остатки, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Обновить цены товаров +// Изменяет цены однного или нескольких товаров +// +// Примечание: +// Метод в документации API: [post /v1/product/import/prices](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsPrices) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Цены - Массив из Структура - Цены товаров. См. ПолучитьСтруктуруЦеныТовара - prices +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ОбновитьЦеныТоваров(Знач IDКлиента, Знач КлючAPI, Знач Цены) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/import/prices"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("prices", Цены, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Установить скидку на уцененный товар +// Устанавливает размер скидки на уценённые товары, продающиеся по схеме FBS +// +// Примечание: +// Метод в документации API: [post /v1/product/update/discount](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductUpdateDiscount) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDТовара - Строка, Число - Идентификатор товара - productid +// Скидка - Строка, Число - Размер скидки - discount +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция УстановитьСкидкуНаУцененныйТовар(Знач IDКлиента, Знач КлючAPI, Знач IDТовара, Знач Скидка) Экспорт + + URL = "https://api-seller.ozon.ru/v1/product/update/discount"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("discount" , Скидка , "Число", Параметры); + OPI_Инструменты.ДобавитьПоле("product_id", IDТовара, "Число", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить структуру остатков товара +// Получает структуру для внесения остатков товара в функции ОбновитьКоличествоТоваров +// +// Примечание: +// Описание полей фильтра можно найти на странице документации по получению списка товаров: [post /v2/products/stocks](@docs.ozon.ru/api/seller/#operation/ProductAPI_ProductsStocksV2) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей фильра +Функция ПолучитьСтруктуруОстатковТовара(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураОстатков = Новый Структура; + + СтруктураОстатков.Вставить("offer_id" , "<артикул>"); + СтруктураОстатков.Вставить("product_id" , ""); + СтруктураОстатков.Вставить("stock" , "<количество>"); + СтруктураОстатков.Вставить("warehouse_id", ""); + + Если Пустая Тогда + Для Каждого Поле Из СтруктураОстатков Цикл + СтруктураОстатков.Вставить(Поле.Ключ, ""); + КонецЦикла; + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураОстатков; + +КонецФункции + +// Получить структуру цены товара +// Получает структуру цены товара для функции ОбновитьЦеныТоваров +// +// Примечание: +// Описание полей фильтра можно найти на странице документации по получению списка товаров: [post /v1/product/import/prices](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsPrices) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей фильра +Функция ПолучитьСтруктуруЦеныТовара(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураТовара = Новый Структура; + + СтруктураТовара.Вставить("auto_action_enabled" , "<включение автоприменения акций: ENABLED или DISABLED>"); + СтруктураТовара.Вставить("currency_code" , "<валюта>"); + СтруктураТовара.Вставить("min_price" , "<минимальная цена товара после применения акций>"); + СтруктураТовара.Вставить("offer_id" , "<идентификатор товара в системе продавца>"); + СтруктураТовара.Вставить("old_price" , "<цена до скидок; укажите значение 0, если скидок нет>"); + СтруктураТовара.Вставить("price" , "<цена товара с учётом скидок>"); + СтруктураТовара.Вставить("price_strategy_enabled", "<автоприменения стратегий цены: ENABLED или DISABLED>"); + СтруктураТовара.Вставить("product_id" , ""); + + Если Пустая Тогда + Для Каждого Поле Из СтруктураТовара Цикл + СтруктураТовара.Вставить(Поле.Ключ, ""); + КонецЦикла; + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураТовара; + +КонецФункции + +#КонецОбласти + +#Область РаботаСАкциями + +// Получить список акций +// Получает список акций, доступных для участия +// +// Примечание: +// Метод в документации API: [post /v1/actions](@docs.ozon.ru/api/seller/#operation/Promos) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСписокАкций(Знач IDКлиента, Знач КлючAPI) Экспорт + + URL = "https://api-seller.ozon.ru/v1/actions"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить доступные товары акции +// Получает товары, доступные в выбранной акции +// +// Примечание: +// Метод в документации API: [post /v1/actions/candidates](@docs.ozon.ru/api/seller/#operation/PromosCandidates) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDАкции - Число - ID акции - actionid +// Отступ - Число - Отступ получения элементов списка - offset +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьДоступныеТоварыАкции(Знач IDКлиента, Знач КлючAPI, Знач IDАкции, Знач Отступ = 0) Экспорт + + Число_ = "Число"; + + URL = "https://api-seller.ozon.ru/v1/actions/candidates"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + Лимит = 100; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("action_id", IDАкции, Число_, Параметры); + OPI_Инструменты.ДобавитьПоле("limit" , Лимит , Число_, Параметры); + OPI_Инструменты.ДобавитьПоле("offset" , Отступ , Число_, Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить участвующие товары акции +// Получает товары, участвующие в выбранной акции +// +// Примечание: +// Метод в документации API: [post /v1/actions/products](@docs.ozon.ru/api/seller/#operation/PromosProducts) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDАкции - Число - ID акции - actionid +// Отступ - Число - Отступ получения элементов списка - offset +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьУчаствующиеТоварыАкции(Знач IDКлиента, Знач КлючAPI, Знач IDАкции, Знач Отступ = 0) Экспорт + + Число_ = "Число"; + + URL = "https://api-seller.ozon.ru/v1/actions/products"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + Лимит = 100; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("action_id", IDАкции, Число_, Параметры); + OPI_Инструменты.ДобавитьПоле("limit" , Лимит , Число_, Параметры); + OPI_Инструменты.ДобавитьПоле("offset" , Отступ , Число_, Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область РаботаСоСкладами + +// Получить список складов +// Получает список складов компании +// +// Примечание: +// Метод в документации API: [post /v1/warehouse/list](@docs.ozon.ru/api/seller/#operation/WarehouseAPI_WarehouseList) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСписокСкладов(Знач IDКлиента, Знач КлючAPI) Экспорт + + URL = "https://api-seller.ozon.ru/v1/warehouse/list"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область СхемаFBO + +// Получить список кластеров +// Получает информацию о кластерах и складах +// +// Примечание: +// Метод в документации API: [post /v1/cluster/list](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftClusterList) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// ТипКластера - Строка - Тип кластера: CLUSTER_TYPE_OZON (Россия), CLUSTER_TYPE_CIS (СНГ) - type +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСписокКластеров(Знач IDКлиента, Знач КлючAPI, Знач ТипКластера = "CLUSTER_TYPE_OZON") Экспорт + + URL = "https://api-seller.ozon.ru/v1/cluster/list"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("cluster_type", ТипКластера, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список складов отгрузки +// Получает список складов, сортировочных центров и пунктов выдачи +// +// Примечание: +// Метод в документации API: [post /v1/warehouse/fbo/list](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftGetWarehouseFboList) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Поиск - Строка - Поиск по названию (4 симв. мин). Для пунктов выдачи укажите полное название - search +// ТипПоставки - Строка, Массив Из Строка - Типы поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT - type +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСписокСкладовОтгрузки(Знач IDКлиента + , Знач КлючAPI + , Знач Поиск + , Знач ТипПоставки = "CREATE_TYPE_DIRECT") Экспорт + + URL = "https://api-seller.ozon.ru/v1/warehouse/fbo/list"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("filter_by_supply_type", ТипПоставки, "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("search" , Поиск , "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список отправлений FBO +// Получает список активных отправлений с фильтром или без +// +// Примечание: +// Метод в документации API: [post /v2/posting/fbo/list](@docs.ozon.ru/api/seller/#operation/PostingAPI_GetFboPostingList) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Фильтр - Структура Из КлючИЗначение - Фильтр отправлений. См. ПолучитьСтруктуруФильтраОтправлений - filter +// ДопПоля - Структура Из КлючИЗначение - Включение доп. полей в ответ. См. ПолучитьСтруктуруДопПолейОтправления - with +// Отступ - Число - Количество элементов, которое будет пропущено в ответе - offset +// Транслит - Булево - Если включена транслитерация адреса из кириллицы в латиницу > Истина - trlt +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьСписокОтправленийFBO(Знач IDКлиента + , Знач КлючAPI + , Знач Фильтр = Неопределено + , Знач ДопПоля = Неопределено + , Знач Отступ = 0 + , Знач Транслит = Ложь) Экспорт + + URL = "https://api-seller.ozon.ru/v2/posting/fbo/list"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("limit" , 1000 , "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("offset" , Отступ , "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("translit", Транслит, "Булево" , Параметры); + OPI_Инструменты.ДобавитьПоле("filter" , Фильтр , "Коллекция", Параметры); + OPI_Инструменты.ДобавитьПоле("with" , ДопПоля , "Коллекция", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Создать черновик заявки FBO +// Создает черновик заявки на поставку +// +// Примечание: +// Метод в документации API: [post /v1/draft/create](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftCreate) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// Кластеры - Строка, Массив Из Строка - Идентификаторы кластеров - clusters +// Позиции - Соответствие Из КлючИЗначение - Список позиций: Ключ > SKU, Значение > Количество - items +// ТипПоставки - Строка - Тип поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT - type +// ТочкаОтгрузки - Строка - Идентификатор точки отгрузки для CREATE_TYPE_CROSSDOCK - point +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция СоздатьЧерновикЗаявкиFBO(Знач IDКлиента + , Знач КлючAPI + , Знач Кластеры + , Знач Позиции + , Знач ТипПоставки = "CREATE_TYPE_DIRECT" + , Знач ТочкаОтгрузки = "") Экспорт + + Кластеры_ = OPI_Инструменты.КопироватьКоллекцию(Кластеры); + Позиции_ = OPI_Инструменты.КопироватьКоллекцию(Позиции); + + URL = "https://api-seller.ozon.ru/v1/draft/create"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + ОбработатьСписокКластеров(Кластеры_); + ОбработатьСписокПозиций(Позиции_); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("cluster_ids" , Кластеры_ , "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("drop_off_point_warehouse_id", ТочкаОтгрузки, "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("items" , Позиции_ , "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("type" , ТипПоставки , "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить черновик заявки FBO +// Получает черновик заявки FBO по ID +// +// Примечание: +// Метод в документации API: [post /v1/draft/create/info](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftCreateInfo) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// IDОперации - Строка - ID черновика (операции) - oper +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьЧерновикЗаявкиFBO(Знач IDКлиента, Знач КлючAPI, Знач IDОперации) Экспорт + + URL = "https://api-seller.ozon.ru/v1/draft/create/info"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("operation_id", IDОперации, "Строка", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить таймслоты FBO +// Получить доступные таймслоты на конечных складах отгрузки +// +// Примечание: +// Метод в документации API: [post /v1/draft/timeslot/info](@docs.ozon.ru/api/seller/#operation/SupplyDraftAPI_DraftTimeslotInfo) +// +// Параметры: +// IDКлиента - Строка - Идентификатор клиента - clientid +// КлючAPI - Строка - API ключ - apikey +// ДатаОт - Дата - Дата начала нужного периода доступных таймслотов - from +// ДатаПо - Дата - Дата окончания нужного периода доступных таймслотов (28 дней от тек. максимум) - to +// Черновик - Число, Строка - Идентификатор черновика заявки на поставку - draft +// Склады - Массив Из Число - Склад или несколько складов для получения таймслотов - whs +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API +Функция ПолучитьТаймслотыFBO(Знач IDКлиента, Знач КлючAPI, Знач ДатаОт, Знач ДатаПо, Знач Черновик, Знач Склады) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьДату(ДатаОт); + OPI_ПреобразованиеТипов.ПолучитьДату(ДатаПо); + OPI_ПреобразованиеТипов.ПолучитьМассив(Склады); + + Для Н = 0 По Склады.ВГраница() Цикл + + ТекущееЗначение = Склады[Н]; + + OPI_ПреобразованиеТипов.ПолучитьЧисло(ТекущееЗначение); + + Склады[Н] = ТекущееЗначение; + + КонецЦикла; + + URL = "https://api-seller.ozon.ru/v1/draft/timeslot/info"; + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("date_from" , XMLСтрока(ДатаОт) + "Z", "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("date_to" , XMLСтрока(ДатаПо) + "Z", "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("draft_id" , Черновик , "Число" , Параметры); + OPI_Инструменты.ДобавитьПоле("warehouse_ids", Склады , "Коллекция", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить структуру доп. полей отправления +// Возвращает структуру включения доп. полей ответа для метода ПолучитьСписокОтправленийFBO +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей +Функция ПолучитьСтруктуруДопПолейОтправления(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураПолей = Новый Структура; + + СтруктураПолей.Вставить("analytics_data", "<передайте Истина, чтобы добавить в ответ данные аналитики>"); + СтруктураПолей.Вставить("financial_data", "<передайте Истина, чтобы добавить в ответ финансовые данные>"); + + Если Пустая Тогда + СтруктураПолей = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураПолей); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураПолей; + +КонецФункции + +// Получить структуру фильтра отправлений +// Возвращает структуру фильтров для метода ПолучитьСписокОтправленийFBO +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура фильтра +Функция ПолучитьСтруктуруФильтраОтправлений(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("since" , "Начало периода в формате ISO"); + СтруктураФильтра.Вставить("status", "Статус отправления"); + СтруктураФильтра.Вставить("to" , "Конец периода в формате ISO"); + + Если Пустая Тогда + СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураФильтра; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СоздатьЗаголовкиЗапроса(Знач IDКлиента, Знач КлючAPI) + + Заголовки = Новый Соответствие; + + OPI_Инструменты.ДобавитьПоле("Client-Id", IDКлиента, "Строка", Заголовки); + OPI_Инструменты.ДобавитьПоле("Api-Key" , КлючAPI , "Строка", Заголовки); + + Возврат Заголовки; + +КонецФункции + +Функция ОтправитьОписанияОбъектов(Знач IDКлиента, Знач КлючAPI, Знач МассивОбъектов, Знач URL) + + Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("items", МассивОбъектов, "Массив", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +Процедура ОбработатьСписокКластеров(Кластеры) + + OPI_ПреобразованиеТипов.ПолучитьМассив(Кластеры); + + Для Н = 0 По Кластеры.ВГраница() Цикл + + ТекущееЗначение = Кластеры[Н]; + + OPI_ПреобразованиеТипов.ПолучитьЧисло(ТекущееЗначение); + + Кластеры[Н] = ТекущееЗначение; + + КонецЦикла; + +КонецПроцедуры + +Процедура ОбработатьСписокПозиций(Позиции) + + ТекстОшибки = "Список позиций имеет некорректный формат"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Позиции, ТекстОшибки); + + ОбработанныеПозиции = Новый Массив; + + Для Каждого Позиция Из Позиции Цикл + + ТекущийКлюч = Позиция.Ключ; + ТекущееЗначение = Позиция.Значение; + + OPI_ПреобразованиеТипов.ПолучитьЧисло(ТекущийКлюч); + OPI_ПреобразованиеТипов.ПолучитьЧисло(ТекущееЗначение); + + Если ТекущийКлюч = 0 Или ТекущееЗначение = 0 Тогда + ВызватьИсключение ("Ошибка в позиции " + Строка(ТекущийКлюч)); + КонецЕсли; + + ОбработанныеПозиции.Добавить(Новый Структура("quantity,sku", ТекущееЗначение, ТекущийКлюч)); + + КонецЦикла; + + Позиции = ОбработанныеПозиции; + +КонецПроцедуры + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_PostgreSQL.os b/src/ru/OInt/core/Modules/OPI_PostgreSQL.os index 3737604b7b..8c947c616a 100644 --- a/src/ru/OInt/core/Modules/OPI_PostgreSQL.os +++ b/src/ru/OInt/core/Modules/OPI_PostgreSQL.os @@ -1,700 +1,619 @@ -// OneScript: ./OInt/core/Modules/OPI_PostgreSQL.os -// Lib: PostgreSQL -// CLI: postgres -// Keywords: postgresql, postgre sql, postgres - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params -//@skip-check constructor-function-return-section -//@skip-check doc-comment-collection-item-type - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область ОсновныеМетоды - -// Открыть соединение !NOCLI -// Создает подключение к указанной базе -// -// Параметры: -// СтрокаПодключения - Строка - Строка подключения. См. СформироватьСтрокуПодключения - sting -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Произвольный - Объект коннектора или структура с информацией об ошибке -Функция ОткрытьСоединение(Знач СтрокаПодключения = "", Знач Tls = "") Экспорт - - Если ЭтоКоннектор(СтрокаПодключения) Тогда - Возврат СтрокаПодключения; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(СтрокаПодключения); - OPI_Инструменты.ВернутьУправляющиеПоследовательности(СтрокаПодключения); - - Коннектор = OPI_Компоненты.ПолучитьКомпоненту("PostgreSQL"); - - Tls = OPI_Компоненты.УстановитьTls(Коннектор, Tls); - - Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда - Возврат Tls; - КонецЕсли; - - Коннектор.ConnectionString = СтрокаПодключения; - - Результат = Коннектор.Connect(); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); - - Возврат ?(Результат["result"], Коннектор, Результат); - -КонецФункции - -// Закрыть соединение !NOCLI -// Явно закрывает переданное соединение -// -// Параметры: -// Соединение - Произвольный - Объект компоненты с открытым соединением - dbc -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Результат закрытия соединения -Функция ЗакрытьСоединение(Знач Соединение) Экспорт - - Если ЭтоКоннектор(Соединение) Тогда - - Результат = Соединение.Close(); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); - - Иначе - - Результат = Новый Структура("result,error", Ложь, "It's not a connection"); - - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// Это коннектор !NOCLI -// Проверяет, что значение является объектом внешней компоненты PostgreSQL -// -// Параметры: -// Значение - Произвольный - Значение для проверки - value -// -// Возвращаемое значение: -// Булево - Это коннектор -Функция ЭтоКоннектор(Знач Значение) Экспорт - - Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_PostgreSQL.Main"; - -КонецФункции - -// Выполнить запрос SQL -// Выполняет произвольный SQL запрос -// -// Примечание: -// Параметры запроса указываются как массив структур вида `{'Тип данных': 'Значение'}`.^^ -// Список доступных типов описан на начальной странице документации библиотеки PostgreSQL -// Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^ -// Для остальных запросов возвращается `result:true` или `false` с текстом ошибки -// -// Параметры: -// ТекстЗапроса - Строка - Текст запроса к базе - sql -// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params -// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса - , Знач Параметры = "" - , Знач ФорсироватьРезультат = Ложь - , Знач Соединение = "" - , Знач Tls = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина); - OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат); - - Параметры_ = ОбработатьПараметры(Параметры); - - Если ЭтоКоннектор(Соединение) Тогда - ЗакрыватьСоединение = Ложь; - Коннектор = Соединение; - Иначе - ЗакрыватьСоединение = Истина; - Коннектор = ОткрытьСоединение(Соединение, Tls); - КонецЕсли; - - Если Не ЭтоКоннектор(Коннектор) Тогда - Возврат Коннектор; - КонецЕсли; - - Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат); - - Если ЗакрыватьСоединение Тогда - ЗакрытьСоединение(Коннектор); - КонецЕсли; - - Результат = OPI_Инструменты.JsonВСтруктуру(Результат); - - Возврат Результат; - -КонецФункции - -// Сформировать строку подключения -// Формирует строку подключения из переданных данных -// -// Параметры: -// Адрес - Строка - IP адрес или доменное имя сервера - addr -// База - Строка - Имя базы данных для подключения - db -// Логин - Строка - Логин пользователя postgres - login -// Пароль - Строка - Пароль пользователя postgres - pass -// Порт - Строка - Порт подключения - port -// -// Возвращаемое значение: -// Строка - Строка подключения к базе PostgreSQL -Функция СформироватьСтрокуПодключения(Знач Адрес, Знач База, Знач Логин, Знач Пароль = "", Знач Порт = "5432") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин); - OPI_ПреобразованиеТипов.ПолучитьСтроку(База); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); - - Порт = ?(ЗначениеЗаполнено(Порт), ":" + Порт, Порт); - Пароль = ?(ЗначениеЗаполнено(Пароль), ":" + Пароль, Пароль); - - ШаблонСтроки = "postgresql://%1%2@%3%4/%5"; - СтрокаПодключения = СтрШаблон(ШаблонСтроки, Логин, Пароль, Адрес, Порт, База); - - Возврат СтрокаПодключения; - -КонецФункции - -// Получить настройки TLS -// Формирует настройки для использования TLS при выполнении запросов -// -// Примечание: -// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^ -// или неявного, при передаче строки подключения в методы ORM. -// Передача настроек Tls совместно с передачей уже созданного соединения в параметр `Соединение` будет проигнорирована -// -// Параметры: -// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust -// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура настроек TLS соединения -Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт - - Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату); - -КонецФункции - -#КонецОбласти - -#Область ORM - -// Создать базу данных -// Создает базу данных с указанным именем -// -// Параметры: -// База - Строка - Имя базы - base -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция СоздатьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_PostgreSQL, База, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Удалить базу данных -// Удаляет базу данных -// -// Параметры: -// База - Строка - Имя базы - base -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция УдалитьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_PostgreSQL, База, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Отключить все соединения базы данных -// Завершает все соединения к базе данных кроме текущего -// -// Параметры: -// База - Строка - Имя базы - base -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ОтключитьВсеСоединенияБазыДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(База); - - ТекстSQL = "SELECT pg_terminate_backend(pid) - |FROM pg_stat_activity - |WHERE datname = '%1' AND pid <> pg_backend_pid();"; - - ТекстSQL = СтрШаблон(ТекстSQL, База); - - Результат = ВыполнитьЗапросSQL(ТекстSQL, , , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -// Получить информацию о таблице -// Получает информацию о таблице -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.ПолучитьСтруктуруТаблицы(OPI_PostgreSQL, Таблица, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Создать таблицу -// Создает пустую таблицу в базе -// -// Примечание: -// Список доступных типов описан на начальной странице документации библиотеки PostgreSQL -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// СтруктураКолонок - Структура Из КлючИЗначение - Структура колонок: Ключ > имя, Значение > Тип данных - cols -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_PostgreSQL, Таблица, СтруктураКолонок, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Очистить таблицу -// Очищает таблицу базы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_PostgreSQL, Таблица, , Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Удалить таблицу -// Удаляет таблицу из базы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_PostgreSQL, Таблица, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Добавить записи -// Добавляет записи в таблицу -// -// Примечание: -// Данные записей указываются как массив структур вида:^ -// `{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}` -// Список доступных типов описан на начальной странице документации библиотеки PostgreSQL -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// МассивДанных - Массив Из Структура - Массив структур данных строк: Ключ > поле, Значение > значение поля - rows -// Транзакция - Булево - Истина > добавление записей в транзакции с откатом при ошибке - trn -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.ДобавитьЗаписи(OPI_PostgreSQL, Таблица, МассивДанных, Транзакция, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Получить записи -// Получает записи из выбранной таблицы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Поля - Массив Из Строка - Поля для выборки - fields -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Сортировка - Структура Из КлючИЗначение - Сортировка: Ключ > поле, Значение > направление (ASC, DESC) - order -// Количество - Число - Ограничение количества получаемых строк - limit -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ПолучитьЗаписи(Знач Таблица - , Знач Поля = "*" - , Знач Фильтры = "" - , Знач Сортировка = "" - , Знач Количество = "" - , Знач Соединение = "" - , Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.ПолучитьЗаписи(OPI_PostgreSQL - , Таблица - , Поля - , Фильтры - , Сортировка - , Количество - , Соединение - , Tls); - - Возврат Результат; - -КонецФункции - -// Обновить записи -// Обновляет значение записей по выбранным критериям -// -// Примечание: -// Данные записей указываются как массив структур вида:^ -// `{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}` -// Список доступных типов описан на начальной странице документации библиотеки PostgreSQL -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// СтруктураЗначений - Структура Из КлючИЗначение - Структура значений: Ключ > поле, Значение > значение поля - values -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ОбновитьЗаписи(Знач Таблица - , Знач СтруктураЗначений - , Знач Фильтры = "" - , Знач Соединение = "" - , Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.ОбновитьЗаписи(OPI_PostgreSQL, Таблица, СтруктураЗначений, Фильтры, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Удалить записи -// Удаляет записи из таблицы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "", Знач Tls = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_PostgreSQL, Таблица, Фильтры, Соединение, Tls); - Возврат Результат; - -КонецФункции - -// Получить структуру фильтра записей -// Получает структуру шаблон для фильтрации записей в запросах ORM -// -// Примечание: -// Использование признака `raw` необходимо для составных конструкций, вроде `BEETWEEN`.^^ -// Например: при `raw:false` фильтр `type:BETWEEN` `value:10 AND 20` будет интерпритирован как `BETWEEN ?1 `^^ -// где `?1 = "10 AND 20"`, что приведет к ошибке.^^ -// В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Элемент фильтра записей -Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт - - Возврат OPI_ЗапросыSQL.ПолучитьСтруктуруФильтраЗаписей(Пустая); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -Функция ПолучитьОсобенности() Экспорт - - Особенности = Новый Соответствие; - Особенности.Вставить("НумерацияПараметров", Истина); - Особенности.Вставить("МаркерПараметров" , "$"); - Особенности.Вставить("СУБД" , "postgres"); - - Возврат Особенности; - -КонецФункции - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ОбработатьПараметры(Знач Параметры) - - Если Не ЗначениеЗаполнено(Параметры) Тогда - Возврат "[]"; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры); - - Для Н = 0 По Параметры.ВГраница() Цикл - - ТекущийПараметр = Параметры[Н]; - - ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр); - - Параметры[Н] = ТекущийПараметр; - - КонецЦикла; - - Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь); - - Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда - ВызватьИсключение "Ошибка валидации JSON массива параметров!"; - КонецЕсли; - - Возврат Параметры_; - -КонецФункции - -Функция ОбработатьПараметр(ТекущийПараметр) - - ТекущийТип = ТипЗнч(ТекущийПараметр); - - Если ТекущийТип = Тип("ДвоичныеДанные") Тогда - - ТекущийПараметр = Новый Структура("BYTEA", Base64Строка(ТекущийПараметр)); - - ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда - - ТекущийПараметр = Строка(ТекущийПараметр); - - ИначеЕсли ТекущийТип = Тип("Дата") Тогда - - ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр); - - ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда - - ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр); - - ИначеЕсли ТекущийТип = Тип("Структура") - Или ТекущийТип = Тип("Соответствие") Тогда - - ТекущийПараметр_ = OPI_Инструменты.КопироватьКоллекцию(ТекущийПараметр); - - Для Каждого ЭлементПараметра Из ТекущийПараметр_ Цикл - - ТекущийКлюч = вРег(ЭлементПараметра.Ключ); - ТекущееЗначение = ЭлементПараметра.Значение; - - Если ЭтоТипКоллекция(ТекущийКлюч) Тогда - Продолжить; - КонецЕсли; - - ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение); - - КонецЦикла; - - Иначе - - Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр); - КонецЕсли; - - КонецЕсли; - - Возврат ТекущийПараметр; - -КонецФункции - -Функция ОбработатьСтруктуруBlob(Знач Значение) - - Bytea_ = "BYTEA"; - - ЗначениеДанных = Значение[Bytea_]; - - Если ТипЗнч(ЗначениеДанных) = Тип("ДвоичныеДанные") Тогда - Значение = Новый Структура(Bytea_, Base64Строка(ЗначениеДанных)); - Иначе - - ФайлДанных = Новый Файл(Строка(ЗначениеДанных)); - - Если ФайлДанных.Существует() Тогда - - ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных)); - Значение = Новый Структура(Bytea_, Base64Строка(ТекущиеДанные)); - - КонецЕсли; - - КонецЕсли; - - Возврат Значение; - -КонецФункции - -Функция ЭтоТипКоллекция(Знач ПроверяемыйТип) - - Возврат ПроверяемыйТип = "JSONB" Или ПроверяемыйТип = "JSON" Или ПроверяемыйТип = "HSTORE"; - -КонецФункции - -#КонецОбласти - - -#Region Alternate - -Function CreateConnection(Val ConnectionString = "", Val Tls = "") Export - Return ОткрытьСоединение(ConnectionString, Tls); -EndFunction - -Function CloseConnection(Val Connection) Export - Return ЗакрытьСоединение(Connection); -EndFunction - -Function IsConnector(Val Value) Export - Return ЭтоКоннектор(Value); -EndFunction - -Function ExecuteSQLQuery(Val QueryText, Val Parameters = "", Val ForceResult = False, Val Connection = "", Val Tls = "") Export - Return ВыполнитьЗапросSQL(QueryText, Parameters, ForceResult, Connection, Tls); -EndFunction - -Function GenerateConnectionString(Val Address, Val Base, Val Login, Val Password = "", Val Port = "5432") Export - Return СформироватьСтрокуПодключения(Address, Base, Login, Password, Port); -EndFunction - -Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export - Return ПолучитьНастройкиTls(DisableCertVerification, CertFilepath); -EndFunction - -Function CreateDatabase(Val Base, Val Connection = "", Val Tls = "") Export - Return СоздатьБазуДанных(Base, Connection, Tls); -EndFunction - -Function DeleteDatabase(Val Base, Val Connection = "", Val Tls = "") Export - Return УдалитьБазуДанных(Base, Connection, Tls); -EndFunction - -Function DisableAllDatabaseConnections(Val Base, Val Connection = "", Val Tls = "") Export - Return ОтключитьВсеСоединенияБазыДанных(Base, Connection, Tls); -EndFunction - -Function GetTableInformation(Val Table, Val Connection = "", Val Tls = "") Export - Return ПолучитьИнформациюОТаблице(Table, Connection, Tls); -EndFunction - -Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "", Val Tls = "") Export - Return СоздатьТаблицу(Table, ColoumnsStruct, Connection, Tls); -EndFunction - -Function ClearTable(Val Table, Val Connection = "", Val Tls = "") Export - Return ОчиститьТаблицу(Table, Connection, Tls); -EndFunction - -Function DeleteTable(Val Table, Val Connection = "", Val Tls = "") Export - Return УдалитьТаблицу(Table, Connection, Tls); -EndFunction - -Function AddRecords(Val Table, Val DataArray, Val Transaction = True, Val Connection = "", Val Tls = "") Export - Return ДобавитьЗаписи(Table, DataArray, Transaction, Connection, Tls); -EndFunction - -Function GetRecords(Val Table, Val Fields = "*", Val Filters = "", Val Sort = "", Val Count = "", Val Connection = "", Val Tls = "") Export - Return ПолучитьЗаписи(Table, Fields, Filters, Sort, Count, Connection, Tls); -EndFunction - -Function UpdateRecords(Val Table, Val ValueStructure, Val Filters = "", Val Connection = "", Val Tls = "") Export - Return ОбновитьЗаписи(Table, ValueStructure, Filters, Connection, Tls); -EndFunction - -Function DeleteRecords(Val Table, Val Filters = "", Val Connection = "", Val Tls = "") Export - Return УдалитьЗаписи(Table, Filters, Connection, Tls); -EndFunction - -Function GetRecordsFilterStrucutre(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраЗаписей(Clear); -EndFunction - -Function GetFeatures() Export - Return ПолучитьОсобенности(); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_PostgreSQL.os +// Lib: PostgreSQL +// CLI: postgres +// Keywords: postgresql, postgre sql, postgres + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params +//@skip-check constructor-function-return-section +//@skip-check doc-comment-collection-item-type + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ОсновныеМетоды + +// Открыть соединение !NOCLI +// Создает подключение к указанной базе +// +// Параметры: +// СтрокаПодключения - Строка - Строка подключения. См. СформироватьСтрокуПодключения - sting +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Произвольный - Объект коннектора или структура с информацией об ошибке +Функция ОткрытьСоединение(Знач СтрокаПодключения = "", Знач Tls = "") Экспорт + + Если ЭтоКоннектор(СтрокаПодключения) Тогда + Возврат СтрокаПодключения; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(СтрокаПодключения); + OPI_Инструменты.ВернутьУправляющиеПоследовательности(СтрокаПодключения); + + Коннектор = OPI_Компоненты.ПолучитьКомпоненту("PostgreSQL"); + + Tls = OPI_Компоненты.УстановитьTls(Коннектор, Tls); + + Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда + Возврат Tls; + КонецЕсли; + + Коннектор.ConnectionString = СтрокаПодключения; + + Результат = Коннектор.Connect(); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); + + Возврат ?(Результат["result"], Коннектор, Результат); + +КонецФункции + +// Закрыть соединение !NOCLI +// Явно закрывает переданное соединение +// +// Параметры: +// Соединение - Произвольный - Объект компоненты с открытым соединением - dbc +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Результат закрытия соединения +Функция ЗакрытьСоединение(Знач Соединение) Экспорт + + Если ЭтоКоннектор(Соединение) Тогда + + Результат = Соединение.Close(); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); + + Иначе + + Результат = Новый Структура("result,error", Ложь, "It's not a connection"); + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Это коннектор !NOCLI +// Проверяет, что значение является объектом внешней компоненты PostgreSQL +// +// Параметры: +// Значение - Произвольный - Значение для проверки - value +// +// Возвращаемое значение: +// Булево - Это коннектор +Функция ЭтоКоннектор(Знач Значение) Экспорт + + Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_PostgreSQL.Main"; + +КонецФункции + +// Выполнить запрос SQL +// Выполняет произвольный SQL запрос +// +// Примечание: +// Параметры запроса указываются как массив структур вида `{'Тип данных': 'Значение'}`.^^ +// Список доступных типов описан на начальной странице документации библиотеки PostgreSQL +// Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^ +// Для остальных запросов возвращается `result:true` или `false` с текстом ошибки +// +// Параметры: +// ТекстЗапроса - Строка - Текст запроса к базе - sql +// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params +// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса + , Знач Параметры = "" + , Знач ФорсироватьРезультат = Ложь + , Знач Соединение = "" + , Знач Tls = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина); + OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат); + + Параметры_ = ОбработатьПараметры(Параметры); + + Если ЭтоКоннектор(Соединение) Тогда + ЗакрыватьСоединение = Ложь; + Коннектор = Соединение; + Иначе + ЗакрыватьСоединение = Истина; + Коннектор = ОткрытьСоединение(Соединение, Tls); + КонецЕсли; + + Если Не ЭтоКоннектор(Коннектор) Тогда + Возврат Коннектор; + КонецЕсли; + + Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат); + + Если ЗакрыватьСоединение Тогда + ЗакрытьСоединение(Коннектор); + КонецЕсли; + + Результат = OPI_Инструменты.JsonВСтруктуру(Результат); + + Возврат Результат; + +КонецФункции + +// Сформировать строку подключения +// Формирует строку подключения из переданных данных +// +// Параметры: +// Адрес - Строка - IP адрес или доменное имя сервера - addr +// База - Строка - Имя базы данных для подключения - db +// Логин - Строка - Логин пользователя postgres - login +// Пароль - Строка - Пароль пользователя postgres - pass +// Порт - Строка - Порт подключения - port +// +// Возвращаемое значение: +// Строка - Строка подключения к базе PostgreSQL +Функция СформироватьСтрокуПодключения(Знач Адрес, Знач База, Знач Логин, Знач Пароль = "", Знач Порт = "5432") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин); + OPI_ПреобразованиеТипов.ПолучитьСтроку(База); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); + + Порт = ?(ЗначениеЗаполнено(Порт), ":" + Порт, Порт); + Пароль = ?(ЗначениеЗаполнено(Пароль), ":" + Пароль, Пароль); + + ШаблонСтроки = "postgresql://%1%2@%3%4/%5"; + СтрокаПодключения = СтрШаблон(ШаблонСтроки, Логин, Пароль, Адрес, Порт, База); + + Возврат СтрокаПодключения; + +КонецФункции + +// Получить настройки TLS +// Формирует настройки для использования TLS при выполнении запросов +// +// Примечание: +// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^ +// или неявного, при передаче строки подключения в методы ORM. +// Передача настроек Tls совместно с передачей уже созданного соединения в параметр `Соединение` будет проигнорирована +// +// Параметры: +// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust +// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура настроек TLS соединения +Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт + + Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату); + +КонецФункции + +#КонецОбласти + +#Область ORM + +// Создать базу данных +// Создает базу данных с указанным именем +// +// Параметры: +// База - Строка - Имя базы - base +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция СоздатьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.СоздатьБазуДанных(OPI_PostgreSQL, База, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Удалить базу данных +// Удаляет базу данных +// +// Параметры: +// База - Строка - Имя базы - base +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция УдалитьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьБазуДанных(OPI_PostgreSQL, База, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Отключить все соединения базы данных +// Завершает все соединения к базе данных кроме текущего +// +// Параметры: +// База - Строка - Имя базы - base +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ОтключитьВсеСоединенияБазыДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(База); + + ТекстSQL = "SELECT pg_terminate_backend(pid) + |FROM pg_stat_activity + |WHERE datname = '%1' AND pid <> pg_backend_pid();"; + + ТекстSQL = СтрШаблон(ТекстSQL, База); + + Результат = ВыполнитьЗапросSQL(ТекстSQL, , , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +// Получить информацию о таблице +// Получает информацию о таблице +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.ПолучитьСтруктуруТаблицы(OPI_PostgreSQL, Таблица, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Создать таблицу +// Создает пустую таблицу в базе +// +// Примечание: +// Список доступных типов описан на начальной странице документации библиотеки PostgreSQL +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// СтруктураКолонок - Структура Из КлючИЗначение - Структура колонок: Ключ > имя, Значение > Тип данных - cols +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_PostgreSQL, Таблица, СтруктураКолонок, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Очистить таблицу +// Очищает таблицу базы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_PostgreSQL, Таблица, , Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Удалить таблицу +// Удаляет таблицу из базы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_PostgreSQL, Таблица, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Добавить записи +// Добавляет записи в таблицу +// +// Примечание: +// Данные записей указываются как массив структур вида:^ +// `{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}` +// Список доступных типов описан на начальной странице документации библиотеки PostgreSQL +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// МассивДанных - Массив Из Структура - Массив структур данных строк: Ключ > поле, Значение > значение поля - rows +// Транзакция - Булево - Истина > добавление записей в транзакции с откатом при ошибке - trn +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.ДобавитьЗаписи(OPI_PostgreSQL, Таблица, МассивДанных, Транзакция, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Получить записи +// Получает записи из выбранной таблицы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Поля - Массив Из Строка - Поля для выборки - fields +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Сортировка - Структура Из КлючИЗначение - Сортировка: Ключ > поле, Значение > направление (ASC, DESC) - order +// Количество - Число - Ограничение количества получаемых строк - limit +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ПолучитьЗаписи(Знач Таблица + , Знач Поля = "*" + , Знач Фильтры = "" + , Знач Сортировка = "" + , Знач Количество = "" + , Знач Соединение = "" + , Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.ПолучитьЗаписи(OPI_PostgreSQL + , Таблица + , Поля + , Фильтры + , Сортировка + , Количество + , Соединение + , Tls); + + Возврат Результат; + +КонецФункции + +// Обновить записи +// Обновляет значение записей по выбранным критериям +// +// Примечание: +// Данные записей указываются как массив структур вида:^ +// `{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}` +// Список доступных типов описан на начальной странице документации библиотеки PostgreSQL +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// СтруктураЗначений - Структура Из КлючИЗначение - Структура значений: Ключ > поле, Значение > значение поля - values +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ОбновитьЗаписи(Знач Таблица + , Знач СтруктураЗначений + , Знач Фильтры = "" + , Знач Соединение = "" + , Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.ОбновитьЗаписи(OPI_PostgreSQL, Таблица, СтруктураЗначений, Фильтры, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Удалить записи +// Удаляет записи из таблицы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "", Знач Tls = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_PostgreSQL, Таблица, Фильтры, Соединение, Tls); + Возврат Результат; + +КонецФункции + +// Получить структуру фильтра записей +// Получает структуру шаблон для фильтрации записей в запросах ORM +// +// Примечание: +// Использование признака `raw` необходимо для составных конструкций, вроде `BEETWEEN`.^^ +// Например: при `raw:false` фильтр `type:BETWEEN` `value:10 AND 20` будет интерпритирован как `BETWEEN ?1 `^^ +// где `?1 = "10 AND 20"`, что приведет к ошибке.^^ +// В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Элемент фильтра записей +Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт + + Возврат OPI_ЗапросыSQL.ПолучитьСтруктуруФильтраЗаписей(Пустая); + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ПолучитьОсобенности() Экспорт + + Особенности = Новый Соответствие; + Особенности.Вставить("НумерацияПараметров", Истина); + Особенности.Вставить("МаркерПараметров" , "$"); + Особенности.Вставить("СУБД" , "postgres"); + + Возврат Особенности; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ОбработатьПараметры(Знач Параметры) + + Если Не ЗначениеЗаполнено(Параметры) Тогда + Возврат "[]"; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры); + + Для Н = 0 По Параметры.ВГраница() Цикл + + ТекущийПараметр = Параметры[Н]; + + ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр); + + Параметры[Н] = ТекущийПараметр; + + КонецЦикла; + + Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь); + + Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда + ВызватьИсключение "Ошибка валидации JSON массива параметров!"; + КонецЕсли; + + Возврат Параметры_; + +КонецФункции + +Функция ОбработатьПараметр(ТекущийПараметр) + + ТекущийТип = ТипЗнч(ТекущийПараметр); + + Если ТекущийТип = Тип("ДвоичныеДанные") Тогда + + ТекущийПараметр = Новый Структура("BYTEA", Base64Строка(ТекущийПараметр)); + + ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда + + ТекущийПараметр = Строка(ТекущийПараметр); + + ИначеЕсли ТекущийТип = Тип("Дата") Тогда + + ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр); + + ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда + + ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр); + + ИначеЕсли ТекущийТип = Тип("Структура") + Или ТекущийТип = Тип("Соответствие") Тогда + + ТекущийПараметр_ = OPI_Инструменты.КопироватьКоллекцию(ТекущийПараметр); + + Для Каждого ЭлементПараметра Из ТекущийПараметр_ Цикл + + ТекущийКлюч = вРег(ЭлементПараметра.Ключ); + ТекущееЗначение = ЭлементПараметра.Значение; + + Если ЭтоТипКоллекция(ТекущийКлюч) Тогда + Продолжить; + КонецЕсли; + + ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение); + + КонецЦикла; + + Иначе + + Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр); + КонецЕсли; + + КонецЕсли; + + Возврат ТекущийПараметр; + +КонецФункции + +Функция ОбработатьСтруктуруBlob(Знач Значение) + + Bytea_ = "BYTEA"; + + ЗначениеДанных = Значение[Bytea_]; + + Если ТипЗнч(ЗначениеДанных) = Тип("ДвоичныеДанные") Тогда + Значение = Новый Структура(Bytea_, Base64Строка(ЗначениеДанных)); + Иначе + + ФайлДанных = Новый Файл(Строка(ЗначениеДанных)); + + Если ФайлДанных.Существует() Тогда + + ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных)); + Значение = Новый Структура(Bytea_, Base64Строка(ТекущиеДанные)); + + КонецЕсли; + + КонецЕсли; + + Возврат Значение; + +КонецФункции + +Функция ЭтоТипКоллекция(Знач ПроверяемыйТип) + + Возврат ПроверяемыйТип = "JSONB" Или ПроверяемыйТип = "JSON" Или ПроверяемыйТип = "HSTORE"; + +КонецФункции + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_RCON.os b/src/ru/OInt/core/Modules/OPI_RCON.os index 75e9ceb2d0..230ea6c7f6 100644 --- a/src/ru/OInt/core/Modules/OPI_RCON.os +++ b/src/ru/OInt/core/Modules/OPI_RCON.os @@ -1,185 +1,164 @@ -// OneScript: ./OInt/core/Modules/OPI_RCON.os -// Lib: RCON -// CLI: rcon -// Keywords: rcon, remote console - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область ВыполнениеКоманд - -// Открыть соединение !NOCLI -// Открывает новое соединения RCON -// -// Параметры: -// ПараметрыСоединения - Структура Из КлючИЗначение - Параметры соединения. См. СформироватьПараметрыСоединения - params -// -// Возвращаемое значение: -// Произвольный - Объект коннектора или структура с информацией об ошибке -Функция ОткрытьСоединение(Знач ПараметрыСоединения) Экспорт - - Если ЭтоКоннектор(ПараметрыСоединения) Тогда - Возврат ПараметрыСоединения; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыСоединения); - - МассивОбязательных = СтрРазделить("url,password,read_timeout,write_timeout", ","); - МассивНедостающих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ПараметрыСоединения, МассивОбязательных); - - Если ЗначениеЗаполнено(МассивНедостающих) Тогда - ВызватьИсключение СтрШаблон("Отсутствуют параметры подключения: %1", СтрСоединить(МассивНедостающих, ", ")); - КонецЕсли; - - Коннектор = OPI_Компоненты.ПолучитьКомпоненту("RCON"); - - URL = ПараметрыСоединения["url"]; - Пароль = ПараметрыСоединения["password"]; - ТаймаутЧтения = ПараметрыСоединения["read_timeout"]; - ТаймаутЗаписи = ПараметрыСоединения["write_timeout"]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); - OPI_ПреобразованиеТипов.ПолучитьЧисло(ТаймаутЧтения); - OPI_ПреобразованиеТипов.ПолучитьЧисло(ТаймаутЗаписи); - - Результат = Коннектор.Connect(URL, Пароль, ТаймаутЧтения, ТаймаутЗаписи); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); - - Возврат ?(Результат["result"], Коннектор, Результат); - -КонецФункции - -// Выполнить команду -// Выполняет команду на сервере -// -// Примечание: -// При передаче параметров соединения, новое соединение будет создано и закрыто в рамках выполнения одной команды.^^ -// Для выполнения нескольких команд (в версиях для OS и 1С) рекомендуется использовать заранее созданное соединение (см. ОткрытьСоединение) -// -// Параметры: -// Команда - Строка - Текст команды - exec -// Соединение - Произвольный, Структура Из КлючИЗначение - Соединение или параметры соединения - conn -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения команды -Функция ВыполнитьКоманду(Знач Команда, Знач Соединение) Экспорт - - Если ЭтоКоннектор(Соединение) Тогда - Коннектор = Соединение; - Иначе - Коннектор = ОткрытьСоединение(Соединение); - КонецЕсли; - - Если Не ЭтоКоннектор(Коннектор) Тогда - Возврат Коннектор; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Команда); - - Результат = Коннектор.Command(Команда); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат); - - Возврат Результат; - -КонецФункции - -// Сформировать параметры соединения -// Формирует коллекцию параметров соединения -// -// Параметры: -// URL - Строка - URL сервера - url -// Пароль - Строка - Пароль для подключения - pass -// ТаймаутЧтения - Число - Таймаут ожидания ответа (в секундах) - rtout -// ТаймаутЗаписи - Число - Таймаут ожидания отправки запроса (в секундах) - wtout -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура параметров соединения -Функция СформироватьПараметрыСоединения(Знач URL, Знач Пароль, Знач ТаймаутЧтения = 30, Знач ТаймаутЗаписи = 30) Экспорт - - ПараметрыСоединения = Новый Структура; - OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", ПараметрыСоединения); - OPI_Инструменты.ДобавитьПоле("password" , Пароль , "Строка", ПараметрыСоединения); - OPI_Инструменты.ДобавитьПоле("read_timeout" , ТаймаутЧтения, "Число" , ПараметрыСоединения); - OPI_Инструменты.ДобавитьПоле("write_timeout", ТаймаутЗаписи, "Число" , ПараметрыСоединения); - - Возврат ПараметрыСоединения; - -КонецФункции - -// Это коннектор !NOCLI -// Проверяет, что значение является объектом внешней компоненты RCON -// -// Параметры: -// Значение - Произвольный - Значение для проверки - value -// -// Возвращаемое значение: -// Булево - Это коннектор -Функция ЭтоКоннектор(Знач Значение) Экспорт - - Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_RCON.Main"; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - - -#Region Alternate - -Function CreateConnection(Val ConnectionParams) Export - Return ОткрытьСоединение(ConnectionParams); -EndFunction - -Function ExecuteCommand(Val Command, Val Connection) Export - Return ВыполнитьКоманду(Command, Connection); -EndFunction - -Function FormConnectionParameters(Val URL, Val Password, Val ReadTimeout = 30, Val WriteTimeout = 30) Export - Return СформироватьПараметрыСоединения(URL, Password, ReadTimeout, WriteTimeout); -EndFunction - -Function IsConnector(Val Value) Export - Return ЭтоКоннектор(Value); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_RCON.os +// Lib: RCON +// CLI: rcon +// Keywords: rcon, remote console + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ВыполнениеКоманд + +// Открыть соединение !NOCLI +// Открывает новое соединения RCON +// +// Параметры: +// ПараметрыСоединения - Структура Из КлючИЗначение - Параметры соединения. См. СформироватьПараметрыСоединения - params +// +// Возвращаемое значение: +// Произвольный - Объект коннектора или структура с информацией об ошибке +Функция ОткрытьСоединение(Знач ПараметрыСоединения) Экспорт + + Если ЭтоКоннектор(ПараметрыСоединения) Тогда + Возврат ПараметрыСоединения; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыСоединения); + + МассивОбязательных = СтрРазделить("url,password,read_timeout,write_timeout", ","); + МассивНедостающих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ПараметрыСоединения, МассивОбязательных); + + Если ЗначениеЗаполнено(МассивНедостающих) Тогда + ВызватьИсключение СтрШаблон("Отсутствуют параметры подключения: %1", СтрСоединить(МассивНедостающих, ", ")); + КонецЕсли; + + Коннектор = OPI_Компоненты.ПолучитьКомпоненту("RCON"); + + URL = ПараметрыСоединения["url"]; + Пароль = ПараметрыСоединения["password"]; + ТаймаутЧтения = ПараметрыСоединения["read_timeout"]; + ТаймаутЗаписи = ПараметрыСоединения["write_timeout"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); + OPI_ПреобразованиеТипов.ПолучитьЧисло(ТаймаутЧтения); + OPI_ПреобразованиеТипов.ПолучитьЧисло(ТаймаутЗаписи); + + Результат = Коннектор.Connect(URL, Пароль, ТаймаутЧтения, ТаймаутЗаписи); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); + + Возврат ?(Результат["result"], Коннектор, Результат); + +КонецФункции + +// Выполнить команду +// Выполняет команду на сервере +// +// Примечание: +// При передаче параметров соединения, новое соединение будет создано и закрыто в рамках выполнения одной команды.^^ +// Для выполнения нескольких команд (в версиях для OS и 1С) рекомендуется использовать заранее созданное соединение (см. ОткрытьСоединение) +// +// Параметры: +// Команда - Строка - Текст команды - exec +// Соединение - Произвольный, Структура Из КлючИЗначение - Соединение или параметры соединения - conn +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения команды +Функция ВыполнитьКоманду(Знач Команда, Знач Соединение) Экспорт + + Если ЭтоКоннектор(Соединение) Тогда + Коннектор = Соединение; + Иначе + Коннектор = ОткрытьСоединение(Соединение); + КонецЕсли; + + Если Не ЭтоКоннектор(Коннектор) Тогда + Возврат Коннектор; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Команда); + + Результат = Коннектор.Command(Команда); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат); + + Возврат Результат; + +КонецФункции + +// Сформировать параметры соединения +// Формирует коллекцию параметров соединения +// +// Параметры: +// URL - Строка - URL сервера - url +// Пароль - Строка - Пароль для подключения - pass +// ТаймаутЧтения - Число - Таймаут ожидания ответа (в секундах) - rtout +// ТаймаутЗаписи - Число - Таймаут ожидания отправки запроса (в секундах) - wtout +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура параметров соединения +Функция СформироватьПараметрыСоединения(Знач URL, Знач Пароль, Знач ТаймаутЧтения = 30, Знач ТаймаутЗаписи = 30) Экспорт + + ПараметрыСоединения = Новый Структура; + OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", ПараметрыСоединения); + OPI_Инструменты.ДобавитьПоле("password" , Пароль , "Строка", ПараметрыСоединения); + OPI_Инструменты.ДобавитьПоле("read_timeout" , ТаймаутЧтения, "Число" , ПараметрыСоединения); + OPI_Инструменты.ДобавитьПоле("write_timeout", ТаймаутЗаписи, "Число" , ПараметрыСоединения); + + Возврат ПараметрыСоединения; + +КонецФункции + +// Это коннектор !NOCLI +// Проверяет, что значение является объектом внешней компоненты RCON +// +// Параметры: +// Значение - Произвольный - Значение для проверки - value +// +// Возвращаемое значение: +// Булево - Это коннектор +Функция ЭтоКоннектор(Знач Значение) Экспорт + + Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_RCON.Main"; + +КонецФункции + +#КонецОбласти + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_S3.os b/src/ru/OInt/core/Modules/OPI_S3.os index a0cc8abb0a..1e2e22b9ea 100644 --- a/src/ru/OInt/core/Modules/OPI_S3.os +++ b/src/ru/OInt/core/Modules/OPI_S3.os @@ -1,2064 +1,1931 @@ -// OneScript: ./OInt/core/Modules/OPI_S3.os -// Lib: S3 -// CLI: s3 -// Keywords: s3, minio, aws, simple storage service - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params -//@skip-check constructor-function-return-section - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область ОбщиеМетоды - -// Получить структуру данных -// Возвращает основные данные запроса в структурированном виде -// -// Параметры: -// URL - Строка - URL: домен для обычных методов или полный URL с параметрами для прямой отправки запросов - url -// AccessKey - Строка - Access key для авторизации - access -// SecretKey - Строка - Secret key для авторизации - secret -// Region - Строка - Регион сервиса - region -// Service - Строка - Вид сервиса, если отличен от s3 - service -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура основных данных запроса -Функция ПолучитьСтруктуруДанных(Знач URL, Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт - - Строка_ = "Строка"; - - СтруктураАвторизации = Новый Структура; - OPI_Инструменты.ДобавитьПоле("URL" , URL , Строка_, СтруктураАвторизации); - OPI_Инструменты.ДобавитьПоле("AccessKey", AccessKey, Строка_, СтруктураАвторизации); - OPI_Инструменты.ДобавитьПоле("SecretKey", SecretKey, Строка_, СтруктураАвторизации); - OPI_Инструменты.ДобавитьПоле("Region" , Region , Строка_, СтруктураАвторизации); - OPI_Инструменты.ДобавитьПоле("Service" , Service , Строка_, СтруктураАвторизации); - - Возврат СтруктураАвторизации; - -КонецФункции - -// Отправить запрос без тела -// Отправляет простой http запрос без тела -// -// Параметры: -// Метод - Строка - HTTP метод - method -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных - basic -// ОжидаютсяДвоичные - Булево - Отключает попытку преобразования ответа в JSON - binary -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ОтправитьЗапросБезТела(Знач Метод - , Знач ОсновныеДанные - , Знач ОжидаютсяДвоичные = Ложь - , Знач Заголовки = Неопределено) Экспорт - - Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, , ОжидаютсяДвоичные, Заголовки); - Возврат Ответ; - -КонецФункции - -// Отправить запрос с телом -// Отправляет http запрос с телом -// -// Параметры: -// Метод - Строка - HTTP метод - method -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных - basic -// Тело - Строка, ДвоичныеДанные - Двоичное тело запроса или путь к файлу - body -// ОжидаютсяДвоичные - Булево - Отключает попытку преобразования ответа в JSON - binary -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ОтправитьЗапросСТелом(Знач Метод - , Знач ОсновныеДанные - , Знач Тело - , Знач ОжидаютсяДвоичные = Ложь - , Знач Заголовки = Неопределено) Экспорт - - Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, Тело, ОжидаютсяДвоичные, Заголовки); - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область РаботаСБакетами - -// Создать бакет -// Создает новый бакет с выбранным именем -// -// Примечание: -// Метод в документации AWS: [CreateBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Ложь, Знач Заголовки = Неопределено) Экспорт - - Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "PUT", Заголовки); - Возврат Ответ; - -КонецФункции - -// Удалить бакет -// Удаляет бакет с выбранным именем -// -// Примечание: -// Метод в документации AWS: [DeleteBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Ложь, Знач Заголовки = Неопределено) Экспорт - - Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "DELETE", Заголовки); - Возврат Ответ; - -КонецФункции - -// Проверить доступность бакета -// Проверяет доступность бакета для текущего аккаунта или аккаунта по ID -// -// Примечание: -// Метод в документации AWS: [HeadBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// IDАккаунта - Строка - ID аккаунта для проверки, что бакет принадлежит ему - account -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПроверитьДоступностьБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач Каталог = Ложь - , Знач IDАккаунта = "" - , Знач Заголовки = Неопределено) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDАккаунта); - - Если ЗначениеЗаполнено(IDАккаунта) Тогда - ЗаголовокАккаунта = Новый Соответствие(); - ЗаголовокАккаунта.Вставить("x-amz-expected-bucket-owner", IDАккаунта); - ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокАккаунта); - КонецЕсли; - - Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "HEAD", Заголовки); - Возврат Ответ; - -КонецФункции - -// Установить шифрование бакета -// Устанавлиает шифрование бакета по XML конфигурации -// -// Примечание: -// Метод в документации AWS: [PutBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// XMLКонфигурация - Строка - XML строка или файл конфигурации шифрования - conf -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УстановитьШифрованиеБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач XMLКонфигурация - , Знач Каталог = Ложь - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(XMLКонфигурация, Истина); - XMLКонфигурация = ПолучитьДвоичныеДанныеИзСтроки(XMLКонфигурация); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Наименование, Каталог); - URL = URL + "?encryption"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, XMLКонфигурация, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить шифрование бакета -// Получает установленную ранее конфигурацию шифрования бакета -// -// Примечание: -// Метод в документации AWS: [GetBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПолучитьШифрованиеБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач Каталог = Ложь - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Наименование, Каталог); - - URL = URL + "?encryption"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Удалить шифрование бакета -// Удаляет конфигурацию шифрования бакета -// -// Примечание: -// Метод в документации AWS: [DeleteBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УдалитьШифрованиеБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач Каталог = Ложь - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Наименование, Каталог); - - URL = URL + "?encryption"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Установить теги бакета -// Устанавливает набор тегов для бакета -// -// Примечание: -// Установка нового набора удаляет все существующие теги бакета -// Метод в документации AWS: [PutBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Теги - Структура Из КлючИЗначение - Набор тегов (ключ и значение) для установки - tagset -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УстановитьТегиБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач Теги - , Знач Каталог = Ложь - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - Теги = СформироватьСтруктуруТегов(Теги); - ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/"); - ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Наименование, Каталог); - URL = URL + "?tagging"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, ТегиXML, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить теги бакета -// Получает набор тегов бакета -// -// Примечание: -// Метод в документации AWS: [GetBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПолучитьТегиБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач Каталог = Ложь - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Наименование, Каталог); - URL = URL + "?tagging"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Удалить теги бакета -// Удаляет набор тегов бакета -// -// Примечание: -// Метод в документации AWS: [DeleteBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УдалитьТегиБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач Каталог = Ложь - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Наименование, Каталог); - URL = URL + "?tagging"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Установить настройки версионирования бакета -// Устанавливает настройки версионирования объектов бакета -// -// Примечание: -// Метод в документации AWS: [PutBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Статус - Булево - Включение и отключение версионирования, если необходимо - status -// УдалениеMFA - Булево - Включение и отключение удаления MFA, если необходимо - mfad -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач Статус = Неопределено - , Знач УдалениеMFA = Неопределено - , Знач Каталог = Ложь - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - Теги = СформироватьСтруктуруНастроекВерсионирования(Статус, УдалениеMFA); - ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/"); - ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Наименование, Каталог); - URL = URL + "?versioning"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, ТегиXML, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить настройки версионирования бакета -// Получает значения настроек версионирования объектов в бакете -// -// Примечание: -// Метод в документации AWS: [GetBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html) -// -// Параметры: -// Наименование - Строка - Наименование бакета - name -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование - , Знач ОсновныеДанные - , Знач Каталог = Ложь - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Наименование, Каталог); - URL = URL + "?versioning"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список бакетов -// Получает список бакетов. Возможно использование отборов, если они поддерживаются сервисом -// -// Примечание: -// Метод в документации AWS: [ListBuckets](@docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html) -// -// Параметры: -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Префикс - Строка - Отбор по префиксу, если необходимо - prefix -// Регион - Строка - Отбор по региону бакета, если необходимо - region -// ТокенСтраницы - Строка - Токен страницы, если используется пагинация - ctoken -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПолучитьСписокБакетов(Знач ОсновныеДанные - , Знач Префикс = "" - , Знач Регион = "" - , Знач ТокенСтраницы = "" - , Знач Заголовки = Неопределено) Экспорт - - Строка_ = "Строка"; - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - Параметры = Новый Соответствие; - OPI_Инструменты.ДобавитьПоле("bucket-region" , Регион , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("continuation-token", ТокенСтраницы, Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("max-buckets" , 250 , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("prefix" , Префикс , Строка_, Параметры); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры); - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область РаботаСОбъектами - -// Загрузить объект -// Загружает файл в бакет -// -// Примечание: -// Метод в документации AWS (стандартный): [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)^ -// Метод в документации AWS (по частям): [Multipart upload](@docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) -// Вы можете использовать поле `ChunkSize` в основных данных для указания минимального размера и величины чанка загрузки по частям.^^ -// Например, `ChunkSize равный X` означает, что все файлы, размером больше `X` (в байтах) будут загружаться по частям, где одна часть будет размером `X`.^^ -// Загрузка по частям используется для больших файлов. Стандартный размер `ChunkSize` - 20971520 байт (20 МБайт) -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// Содержимое - Строка, ДвоичныеДанные - Данные или путь к файлу для загрузки - data -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ЗагрузитьОбъект(Знач Наименование - , Знач Бакет - , Знач Содержимое - , Знач ОсновныеДанные - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Содержимое); - - РазмерФайла = ПолучитьРазмерСодержимого(Содержимое); - Делитель = 10000; - МинимальныйРазмерЧасти = РазмерФайла / Делитель; - МинимальныйРазмерЧасти = Макс(МинимальныйРазмерЧасти, 5242880); - Половина = 0.5; - - Если OPI_Инструменты.ПолеКоллекцииСуществует(ОсновныеДанные_, "ChunkSize") Тогда - МаксимальныйРазмер = ОсновныеДанные_["ChunkSize"]; - OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер); - Иначе - МаксимальныйРазмер = 20971520; - КонецЕсли; - - Если МинимальныйРазмерЧасти > МаксимальныйРазмер Тогда - ВызватьИсключение "ChunkSize слишком мал. Необходимо увеличить размер части (минимум для данного файла - " - + OPI_Инструменты.ЧислоВСтроку(Окр(МинимальныйРазмерЧасти + Половина)) - + ")"; - КонецЕсли; - - Если РазмерФайла > МаксимальныйРазмер Тогда - - Размеры = Новый Структура("object,chunk", РазмерФайла, МаксимальныйРазмер); - Ответ = ЗагрузитьОбъектЧастями(Наименование, Бакет, Содержимое, ОсновныеДанные_, Заголовки, Размеры); - - Иначе - - Ответ = ЗагрузитьОбъектЦеликом(Наименование, Бакет, Содержимое, ОсновныеДанные_, Заголовки); - - КонецЕсли; - - Возврат Ответ; - -КонецФункции - -// Загрузить объект целиком -// Загружает объект на сервер не используюя загрузку по частям -// -// Примечание: -// Метод в документации AWS: [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) -// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^ -// Использование данного метода для больших файлов может приводить к сбоям -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// Содержимое - Строка, ДвоичныеДанные - Данные или путь к файлу для загрузки - data -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ЗагрузитьОбъектЦеликом(Знач Наименование - , Знач Бакет - , Знач Содержимое - , Знач ОсновныеДанные - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); - - Ответ = ОтправитьЗапрос("PUT", ОсновныеДанные_, Содержимое, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Инициализировать загрузку частями -// Инициализирует загрузку объекта по частям -// -// Примечание: -// Метод в документации AWS: [CreateMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) -// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^ -// Использование загрузки частями для файлов < 5 МБ или при размере одной части < 5 МБ приведет к ошибке -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ИнициализироватьЗагрузкуЧастями(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); - - ОсновныеДанные_.Вставить("URL", ОсновныеДанные_["URL"] + "?uploads"); - - Ответ = ОтправитьЗапросБезТела("POST", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Загрузить часть объекта -// Загружает часть объекта при загрузке по частям -// -// Примечание: -// Метод в документации AWS: [UploadPart](@docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) -// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект` -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// IDЗагрузки - Строка - ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями - upload -// НомерЧасти - Число, Строка - Порядковый номер части объекта от 1 до 10000 - part -// Данные - ДвоичныеДанные, Строка - Данные части для загрузки - content -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ЗагрузитьЧастьОбъекта(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач IDЗагрузки - , Знач НомерЧасти - , Знач Данные) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("partNumber", НомерЧасти, "Строка", Параметры); - OPI_Инструменты.ДобавитьПоле("uploadId" , IDЗагрузки, "Строка", Параметры); - - СтрокаПараметров = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры); - - ОсновныеДанные_.Вставить("URL", ОсновныеДанные_["URL"] + СтрокаПараметров); - - Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, Данные); - - Возврат Ответ; - -КонецФункции - -// Завершить загрузку частями -// Подтверждает окончание загрузки объекта по частям -// -// Примечание: -// Метод в документации AWS: [CompleteMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) -// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект` -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// IDЗагрузки - Строка - ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями - upload -// МассивТегов - Массив Из Строка - Массив тегов (Etag) из загрузок каждой части - tags -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ЗавершитьЗагрузкуЧастями(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач IDЗагрузки - , Знач МассивТегов - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьМассив(МассивТегов); - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); - - ОсновныеДанные_.Вставить("URL", ОсновныеДанные_["URL"] + "?uploadId=" + Строка(IDЗагрузки)); - - МассивЧастей = Новый Массив; - - Для Н = 1 По МассивТегов.Количество() Цикл - - СтруктураЧасти = Новый Структура; - СтруктураЧасти.Вставить("ETag" , МассивТегов[Н - 1]); - СтруктураЧасти.Вставить("PartNumber", Н); - - МассивЧастей.Добавить(Новый Структура("Part", СтруктураЧасти)); - - КонецЦикла; - - СтруктураЗавершения = Новый Структура("CompleteMultipartUpload", МассивЧастей); - XMLЗавершения = OPI_Инструменты.ПолучитьXML(СтруктураЗавершения, "http://s3.amazonaws.com/doc/2006-03-01/"); - XMLЗавершения = ПолучитьДвоичныеДанныеИзСтроки(XMLЗавершения); - - Ответ = ОтправитьЗапросСТелом("POST", ОсновныеДанные_, XMLЗавершения, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Отменить загрузку частями -// Отменяет загрузку объекта по частям -// -// Примечание: -// Метод в документации AWS: [AbortMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html) -// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^ -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// IDЗагрузки - Строка - ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями - upload -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ОтменитьЗагрузкуЧастями(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач IDЗагрузки - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); - - ОсновныеДанные_.Вставить("URL", ОсновныеДанные_["URL"] + "?uploadId=" + Строка(IDЗагрузки)); - - Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить описание объекта -// Получает информацию о характеристиках объекта в бакете -// -// Примечание: -// Метаданные объекты содержатся в заголовках -// Метод в документации AWS: [GetObjectAttributes](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html) -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета, в котором находится объект - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Версия - Строка - Токен для получения конкретной версии объекта - ver -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПолучитьОписаниеОбъекта(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач Версия = Неопределено - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет, Версия); - - Ответ = ОтправитьЗапросБезТела("HEAD", ОсновныеДанные_, , Заголовки); - Ответ["response"] = Новый Структура; - - Возврат Ответ; - -КонецФункции - -// Получить объект -// Получает содержимое объекта из бакета -// -// Примечание: -// Метод в документации AWS: [GetObjectAttributes](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html) -// Вы можете использовать поле `ChunkSize` в основных данных для указания минимального размера и величины чанка загрузки по частям.^^ -// Например, `ChunkSize равный X` означает, что все файлы, размером больше `X` (в байтах) будут загружаться по частям, где одна часть будет размером `X`.^^ -// Загрузка по частям используется для больших файлов. Стандартный размер `ChunkSize` - 20971520 байт (20 МБайт) -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета, в котором находится объект - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Версия - Строка - Токен для получения конкретной версии объекта - ver -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// ПутьСохранения - Строка - Путь для прямой записи файла на диск - out -// -// Возвращаемое значение: -// ДвоичныеДанные, Строка - содержимое объекта или путь к файлу, если указан путь сохранения -Функция ПолучитьОбъект(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач Версия = "" - , Знач Заголовки = Неопределено - , Знач ПутьСохранения = "") Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - ИнформацияОбъекта = ПолучитьОписаниеОбъекта(Наименование, Бакет, ОсновныеДанные_, Версия); - - Если OPI_Инструменты.ПолеКоллекцииСуществует(ОсновныеДанные_, "ChunkSize") Тогда - МаксимальныйРазмер = ОсновныеДанные_["ChunkSize"]; - OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер); - Иначе - МаксимальныйРазмер = 20971520; - КонецЕсли; - - Если Не OPI_Инструменты.ПолеКоллекцииСуществует(ИнформацияОбъекта, "headers.Content-Length") Тогда - Возврат ИнформацияОбъекта; - КонецЕсли; - - РазмерОбъекта = ИнформацияОбъекта["headers"]["Content-Length"]; - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер); - OPI_ПреобразованиеТипов.ПолучитьЧисло(РазмерОбъекта); - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет, Версия); - - Если РазмерОбъекта > МаксимальныйРазмер Тогда - - Размеры = Новый Структура("object,chunk", РазмерОбъекта, МаксимальныйРазмер); - Ответ = ПолучитьОбъектЧастями(ОсновныеДанные_, Заголовки, ПутьСохранения, Размеры); - - Иначе - - Ответ = ПолучитьОбъектЦеликом(ОсновныеДанные_, Заголовки, ПутьСохранения); - - КонецЕсли; - - Возврат Ответ; - -КонецФункции - -// Удалить объект -// Удаляет объект из бакета -// -// Примечание: -// Метод в документации AWS: [DeleteObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html) -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Версия - Строка - Токен для удаления конкретной версии объекта - ver -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УдалитьОбъект(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач Версия = Неопределено - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Бакет, Ложь); - URL = URL + Наименование; - - Если ЗначениеЗаполнено(Версия) Тогда - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия); - URL = URL + "?versionId=" + Версия; - - КонецЕсли; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Копировать объект -// Копирует объект из одного расположения в другое -// -// Примечание: -// Метод в документации AWS: [CopyObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) -// -// Параметры: -// ПутьИсточник - Строка - Путь (имя) в бакете источнике - sname -// БакетИсточник - Строка - Бакет источник объекта - sbucket -// ПутьПриемник - Строка - Путь (имя) объекта в бакете приемнике - name -// БакетПриемник - Строка - Имя бакета приемника - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция КопироватьОбъект(Знач ПутьИсточник - , Знач БакетИсточник - , Знач ПутьПриемник - , Знач БакетПриемник - , Знач ОсновныеДанные - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьИсточник); - OPI_ПреобразованиеТипов.ПолучитьСтроку(БакетИсточник); - - Источник = БакетИсточник + "/" + ПутьИсточник; - Источник = ?(СтрНачинаетсяС(Источник, "/"), Источник, "/" + Источник); - - ЗаголовокИсточника = Новый Соответствие(); - ЗаголовокИсточника.Вставить("x-amz-copy-source", Источник); - ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокИсточника); - - Ответ = ЗагрузитьОбъектЦеликом(ПутьПриемник, БакетПриемник, Неопределено, ОсновныеДанные_, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Установить теги объекта -// Устанавливает набор тегов для объекта -// -// Примечание: -// Установка нового набора удаляет все существующие теги объекта -// Метод в документации AWS: [PutObjectTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) -// -// Параметры: -// Наименование - Строка - Наименование объекта - name -// Бакет - Строка - Наименование бакета - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Теги - Структура Из КлючИЗначение - Набор тегов (ключ и значение) для установки - tagset -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УстановитьТегиОбъекта(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач Теги - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); - - Теги = СформироватьСтруктуруТегов(Теги); - ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/"); - ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Бакет, Ложь); - URL = URL + Наименование + "?tagging"; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, ТегиXML, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить теги объекта -// Получает набор тегов объекта -// -// Примечание: -// Метод в документации AWS: [GetObjectTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) -// -// Параметры: -// Наименование - Строка - Наименование объекта - name -// Бакет - Строка - Наименование бакета - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Версия - Строка - Токен для получения данных конкретной версии объекта - ver -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПолучитьТегиОбъекта(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач Версия = "" - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Бакет, Ложь); - URL = URL + Наименование + "?tagging"; - - Если ЗначениеЗаполнено(Версия) Тогда - URL = URL + "&versionId=" + Версия; - КонецЕсли; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Удалить теги объекта -// Удаляет набор тегов объекта -// -// Примечание: -// Метод в документации AWS: [DeleteObjectTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) -// -// Параметры: -// Наименование - Строка - Наименование объекта - name -// Бакет - Строка - Наименование бакета - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Версия - Строка - Токен для удаления данных конкретной версии объекта - ver -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция УдалитьТегиОбъекта(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач Версия = "" - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Бакет, Ложь); - URL = URL + Наименование + "?tagging"; - - Если ЗначениеЗаполнено(Версия) Тогда - URL = URL + "&versionId=" + Версия; - КонецЕсли; - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список объектов -// Получает список объектов в выбранном бакете -// -// Примечание: -// Метод в документации AWS: [ListObjectsV2](@docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) -// -// Параметры: -// Бакет - Строка - Наименование бакета - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Префикс - Строка - Отбор по префиксу, если необходимо - prefix -// ТокенСтраницы - Строка - Токен страницы, если используется пагинация - ctoken -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПолучитьСписокОбъектов(Знач Бакет - , Знач ОсновныеДанные - , Знач Префикс = "" - , Знач ТокенСтраницы = "" - , Знач Заголовки = Неопределено) Экспорт - - Строка_ = "Строка"; - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Бакет, Ложь); - - Параметры = Новый Соответствие; - OPI_Инструменты.ДобавитьПоле("list-type" , 2 , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("max-keys" , 250 , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("continuation-token", ТокенСтраницы, Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("prefix" , Префикс , Строка_, Параметры); - - URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры); - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список версий объектов -// Получает список всех версий объектов в выбранном бакете -// -// Примечание: -// Метод в документации AWS: [ListObjectVersions](@docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html) -// -// Параметры: -// Бакет - Строка - Наименование бакета - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// Префикс - Строка - Отбор по префиксу, если необходимо - prefix -// Версия - Строка - ID версии начала списка - ver -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища -Функция ПолучитьСписокВерсийОбъектов(Знач Бакет - , Знач ОсновныеДанные - , Знач Префикс = "" - , Знач Версия = "" - , Знач Заголовки = Неопределено) Экспорт - - Строка_ = "Строка"; - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Бакет, Ложь); - URL = URL + "?versions"; - - Параметры = Новый Соответствие; - OPI_Инструменты.ДобавитьПоле("max-keys" , 250 , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("version-id-marker", Версия , Строка_, Параметры); - OPI_Инструменты.ДобавитьПоле("prefix" , Префикс, Строка_, Параметры); - - URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры, , Ложь); - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить ссылку скачивания объекта -// Получает прямую ссылку для скачивания объекта без дополнительной авторизации -// -// Примечание: -// В Заголовки необходимо добавить все x-amz заголовки, которые будут использоваться при обращении к полученному URL -// О механизме в документации AWS: [Download and upload objects with presigned URLs](@docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// ВремяЖизни - Строка, Число - Время жизни ссылки в секундах. 604800 максимум - expires -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Строка - URL для получения объекта -Функция ПолучитьСсылкуСкачиванияОбъекта(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач ВремяЖизни = 3600 - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - ПроверитьОсновныеДанные(ОсновныеДанные_); - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); - - Подпись = СоздатьПодписьURL(ОсновныеДанные_, "GET", ВремяЖизни, Заголовки); - URL = ОсновныеДанные_["URL"] + Подпись; - - Возврат URL; - -КонецФункции - -// Получить ссылку загрузки объекта -// Получает прямую ссылку для загрузки объекта без дополнительной авторизации -// -// Примечание: -// В Заголовки необходимо добавить все x-amz заголовки, которые будут использоваться при обращении к полученному URL -// О механизме в документации AWS: [Download and upload objects with presigned URLs](@docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) -// -// Параметры: -// Наименование - Строка - Наименование объекта в бакете - name -// Бакет - Строка - Имя бакета для загрузки объекта - bucket -// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic -// ВремяЖизни - Строка, Число - Время жизни ссылки в секундах. 604800 максимум - expires -// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers -// -// Возвращаемое значение: -// Строка - URL для получения объекта -Функция ПолучитьСсылкуЗагрузкиОбъекта(Знач Наименование - , Знач Бакет - , Знач ОсновныеДанные - , Знач ВремяЖизни = 3600 - , Знач Заголовки = Неопределено) Экспорт - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - ПроверитьОсновныеДанные(ОсновныеДанные_); - ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); - - Подпись = СоздатьПодписьURL(ОсновныеДанные_, "PUT", ВремяЖизни, Заголовки); - URL = ОсновныеДанные_["URL"] + Подпись; - - Возврат URL; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Авторизация - -Функция СоздатьПодписьURL(Знач СтруктураДанных, Знач Метод, Знач ВремяЖизни, Знач Заголовки) - - AccessKey = СтруктураДанных["AccessKey"]; - SecretKey = СтруктураДанных["SecretKey"]; - Region = СтруктураДанных["Region"]; - Service = СтруктураДанных["Service"]; - URL = СтруктураДанных["URL"]; - - РазбитыйURL = OPI_Инструменты.РазбитьURL(URL); - - Домен = РазбитыйURL["Домен"]; - Адрес = РазбитыйURL["Адрес"]; - - ДопЗаголовки = Новый Структура("Host", Домен); - ДобавитьДополнительныеЗаголовки(Заголовки, ДопЗаголовки); - - ТекущаяДата = ТекущаяУниверсальнаяДата(); - КлючПодписи = ПолучитьКлючПодписи(SecretKey, Region, Service, ТекущаяДата); - Скоуп = СоздатьСкоуп(Region, Service, ТекущаяДата); - ВременнаяМетка = OPI_Инструменты.ВременнаяМеткаISO(ТекущаяДата); - КлючиЗаголовков = ПолучитьСтрокуКлючейЗаголовков(Заголовки); - Основа = КодироватьСтроку(AccessKey + "/" + Скоуп, СпособКодированияСтроки.КодировкаURL); - - СтрокаЗаголовков = ПолучитьСтрокуЗаголовков(Заголовки); - СтрокаХеша = "UNSIGNED-PAYLOAD"; - - ПараметрыURL = Новый ТаблицаЗначений; - - OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Algorithm" , "AWS4-HMAC-SHA256"); - OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Credential" , Основа); - OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Date" , ВременнаяМетка); - OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Expires" , ВремяЖизни); - OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-SignedHeaders", КлючиЗаголовков); - - ПараметрыСтрокой = OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL); - ПараметрыСтрокой = Прав(ПараметрыСтрокой, СтрДлина(ПараметрыСтрокой) - 1); - ШаблонЗапроса = ""; - ЧислоЧастей = 6; - - Для Н = 1 По ЧислоЧастей Цикл - - ШаблонЗапроса = ШаблонЗапроса + "%" + Строка(Н) + ?(Н = ЧислоЧастей, "", Символы.ПС); - - КонецЦикла; - - КаноническийЗапрос = СтрШаблон(ШаблонЗапроса - , Метод - , Адрес - , ПараметрыСтрокой - , СтрокаЗаголовков - , КлючиЗаголовков - , СтрокаХеша); - - СтрокаДляПодписи = СоздатьСтрокуПодписи(КаноническийЗапрос, Скоуп, ТекущаяДата); - Сигнатура = OPI_Криптография.HMAC(КлючПодписи, СтрокаДляПодписи, "SHA256"); - Сигнатура = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(Сигнатура)); - - OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Signature", Сигнатура); - - ПодписьURL = OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL); - - Возврат ПодписьURL; - -КонецФункции - -Функция ПолучитьКлючПодписи(Знач СекретныйКлюч, Знач Регион, Знач Сервис, Знач ТекущаяДата) - - СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч); - ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;")); - Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион); - Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис); - AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request"); - Sha256_ = "SHA256"; - - КлючДанных = OPI_Криптография.HMAC(СекретныйКлюч, ДанныеДата, Sha256_); - КлючРегиона = OPI_Криптография.HMAC(КлючДанных, Регион, Sha256_); - КлючСервиса = OPI_Криптография.HMAC(КлючРегиона, Сервис, Sha256_); - - ФинальныйКлюч = OPI_Криптография.HMAC(КлючСервиса, AWSЗапрос, Sha256_); - - Возврат ФинальныйКлюч; - -КонецФункции - -Функция СоздатьСкоуп(Знач Регион, Знач Сервис, Знач ТекущаяДата) - - ДатаОбычная = Формат(ТекущаяДата, "ДФ=yyyyMMdd;"); - - Скоуп = Новый Массив; - Скоуп.Добавить(ДатаОбычная); - Скоуп.Добавить(Регион); - Скоуп.Добавить(Сервис); - Скоуп.Добавить("aws4_request"); - - СкоупСтрокой = СтрСоединить(Скоуп, "/"); - - Возврат СкоупСтрокой; - -КонецФункции - -Функция СоздатьСтрокуПодписи(Знач КаноническийЗапрос, Знач Скоуп, Знач ТекущаяДата) - - ШаблонСтроки = ""; - Алгоритм = "AWS4-HMAC-SHA256"; - ДатаISO = OPI_Инструменты.ВременнаяМеткаISO(ТекущаяДата); - ЧислоЧастей = 4; - - КаноническийЗапрос = ПолучитьДвоичныеДанныеИзСтроки(КаноническийЗапрос); - КаноническийЗапрос = OPI_Криптография.Хеш(КаноническийЗапрос, ХешФункция.SHA256); - КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос)); - - Для Н = 1 По ЧислоЧастей Цикл - - ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = ЧислоЧастей, "", Символы.ПС); - - КонецЦикла; - - СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос); - СтрокаПодписи = ПолучитьДвоичныеДанныеИзСтроки(СтрокаПодписи); - - Возврат СтрокаПодписи; - -КонецФункции - -Функция ПолучитьСтрокуЗаголовков(Знач Заголовки) - - СписокЗаголовков = Новый СписокЗначений; - - Для Каждого Заголовок Из Заголовки Цикл - - ТекущийКлюч = Заголовок.Ключ; - ТекущийКлючН = нРег(ТекущийКлюч); - - Если Не СтрНачинаетсяС(ТекущийКлючН, "host") И Не СтрНачинаетсяС(ТекущийКлючН, "x-amz") Тогда - Продолжить; - КонецЕсли; - - СтрокаЗаголовка = нРег(ТекущийКлюч) + ":" + Заголовок.Значение; - СписокЗаголовков.Добавить(СтрокаЗаголовка); - - КонецЦикла; - - СписокЗаголовков.СортироватьПоЗначению(); - - СтрокаЗаголовков = СтрСоединить(СписокЗаголовков.ВыгрузитьЗначения(), Символы.ПС); - СтрокаЗаголовков = СтрокаЗаголовков + Символы.ПС; - - Возврат СтрокаЗаголовков; - -КонецФункции - -Функция ПолучитьСтрокуКлючейЗаголовков(Знач Заголовки) - - СписокЗаголовков = Новый СписокЗначений; - - Для Каждого Заголовок Из Заголовки Цикл - - ТекущийКлюч = Заголовок.Ключ; - ТекущийКлючН = нРег(ТекущийКлюч); - - Если Не СтрНачинаетсяС(ТекущийКлючН, "host") И Не СтрНачинаетсяС(ТекущийКлючН, "x-amz") Тогда - Продолжить; - КонецЕсли; - - СтрокаЗаголовка = нРег(ТекущийКлюч); - СписокЗаголовков.Добавить(СтрокаЗаголовка); - - КонецЦикла; - - СписокЗаголовков.СортироватьПоЗначению(); - - СтрокаЗаголовков = СтрСоединить(СписокЗаголовков.ВыгрузитьЗначения(), ";"); - - Возврат СтрокаЗаголовков; - -КонецФункции - -Функция ПолучитьURLСервиса(ОсновныеДанные) - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОсновныеДанные); - - Если ТипЗнч(ОсновныеДанные) = Тип("Массив") Тогда - ВызватьИсключение "Ошибка получения авторизационных данных из структуры"; - КонецЕсли; - - URL = ОсновныеДанные["URL"]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); - - Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда - URL = URL + "/"; - КонецЕсли; - - Возврат URL; - -КонецФункции - -#КонецОбласти - -#Область Прочее - -Функция ОтправитьЗапрос(Знач Метод - , Знач ОсновныеДанные - , Знач Тело = Неопределено - , Знач ОжидаютсяДвоичные = Ложь - , Знач Заголовки = Неопределено) - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - ПроверитьОсновныеДанные(ОсновныеДанные_); - - AccessKey = ОсновныеДанные_["AccessKey"]; - SecretKey = ОсновныеДанные_["SecretKey"]; - Region = ОсновныеДанные_["Region"]; - Service = ОсновныеДанные_["Service"]; - URL = ОсновныеДанные_["URL"]; - - Ответ = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьЗаголовки(Заголовки) - .УстановитьДвоичноеТело(Тело) - .ДобавитьAWS4Авторизацию(AccessKey, SecretKey, Region, Service) - .ОбработатьЗапрос(Метод) - .ВернутьОтвет(Ложь, Истина); - - Ответ = ОформитьОтвет(Ответ, ОжидаютсяДвоичные); - - Возврат Ответ; - -КонецФункции - -Функция УправлениеБакетом(Знач Имя, Знач ОсновныеДанные, Знач Каталог, Знач Метод, Знач Заголовки) - - ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); - - URL = ПолучитьURLСервиса(ОсновныеДанные_); - URL = СформироватьURLБакета(URL, Имя, Каталог); - - ОсновныеДанные_.Вставить("URL", URL); - - Ответ = ОтправитьЗапросБезТела(Метод, ОсновныеДанные_, , Заголовки); - - Возврат Ответ; - -КонецФункции - -Функция ПолучитьОбъектЧастями(Знач ОсновныеДанные - , Знач Заголовки - , Знач ПутьСохранения - , Знач Размеры) - - ОбщийРазмер = Размеры["object"]; - РазмерУчастка = Размеры["chunk"]; - ШаблонЗаголовка = "bytes=%1-%2"; - НачалоУчастка = 0; - Попытки = 3; - - МассивЗаголовков = Новый Массив; - - Пока НачалоУчастка < ОбщийРазмер - РазмерУчастка Цикл - - КонецУчастка = НачалоУчастка + РазмерУчастка - 1; - - НачалоСтр = OPI_Инструменты.ЧислоВСтроку(НачалоУчастка); - КонецСтр = OPI_Инструменты.ЧислоВСтроку(КонецУчастка); - - Заголовок = СтрШаблон(ШаблонЗаголовка, НачалоСтр, КонецСтр); - МассивЗаголовков.Добавить(Новый Структура("Заголовок,Позиция", Заголовок, КонецСтр)); - - НачалоУчастка = КонецУчастка + 1; - - КонецЦикла; - - Если НачалоУчастка < ОбщийРазмер Тогда - - Заголовок = "bytes=" + OPI_Инструменты.ЧислоВСтроку(НачалоУчастка) + "-"; - - СтруктураИнформации = Новый Структура("Заголовок,Позиция", Заголовок, ОбщийРазмер); - МассивЗаголовков.Добавить(СтруктураИнформации); - - КонецЕсли; - - ПотокФайла = OPI_Инструменты.СоздатьПоток(ПутьСохранения); - ЗаписьФайла = Новый ЗаписьДанных(ПотокФайла); - - Для Каждого ТекущийНабор Из МассивЗаголовков Цикл - - Для Н = 1 По Попытки Цикл - - Попытка - - ЗаголовокУчастка = ТекущийНабор["Заголовок"]; - ТекущаяПозиция = ТекущийНабор["Позиция"]; - - ЗаголовокИсточника = Новый Соответствие(); - ЗаголовокИсточника.Вставить("Range", ЗаголовокУчастка); - ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокИсточника); - - ПромежуточныйРезультат = ПолучитьОбъектЦеликом(ОсновныеДанные, ЗаголовокИсточника); - ЗаписьФайла.Записать(ПромежуточныйРезультат); - - КБайт = 1024; - МБайт = КБайт * КБайт; - OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, "МБ", МБайт); - - ВыполнитьСборкуМусора(); - ОсвободитьОбъект(ПромежуточныйРезультат); - - Прервать; - - Исключение - - Если Н = Попытки Тогда - - Сообщить(ОписаниеОшибки()); - ВызватьИсключение "Не удалось получить файл!"; - - Иначе - Сообщить("Ошибка загрузки участка " + Строка(Н) + "/" + Строка(Попытки)); - Продолжить; - КонецЕсли; - - КонецПопытки; - - КонецЦикла; - - КонецЦикла; - - ЗаписьФайла.Закрыть(); - - ПолученныйОбъект = ЗакрытьПотокИПолучитьДанные(ПотокФайла, ПутьСохранения); - - Возврат ПолученныйОбъект; - -КонецФункции - -Функция ПолучитьОбъектЦеликом(Знач ОсновныеДанные - , Знач Заголовки - , Знач ПутьСохранения = "") - - Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Истина, Заголовки); - - Если ЗначениеЗаполнено(ПутьСохранения) Тогда - Ответ.Записать(ПутьСохранения); - ФайлОтвета = Новый Файл(ПутьСохранения); - Возврат ФайлОтвета.ПолноеИмя; - Иначе - Возврат Ответ; - КонецЕсли; - -КонецФункции - -Функция ЗагрузитьОбъектЧастями(Знач Наименование - , Знач Бакет - , Знач Содержимое - , Знач ОсновныеДанные - , Знач Заголовки - , Знач Размеры) - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеИлиПоток(Содержимое); - - НачалоЗагрузки = ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, Заголовки); - - ПолеID = "response.InitiateMultipartUploadResult.UploadId"; - IDЗагрузки = Неопределено; - ОбщийРазмер = Размеры["object"]; - РазмерУчастка = Размеры["chunk"]; - ПрочитаноБайт = 0; - НомерЧасти = 1; - - Если Не OPI_Инструменты.ПолеКоллекцииСуществует(НачалоЗагрузки, ПолеID, IDЗагрузки) Тогда - Возврат НачалоЗагрузки; - КонецЕсли; - - ЧтениеДанных = Новый ЧтениеДанных(Содержимое); - ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); - Ответ = Новый Соответствие; - МассивТегов = Новый Массив; - - Ошибка = Ложь; - Попытки = 3; - ПоследнийКодУспеха = 299; - - Пока ПрочитаноБайт < ОбщийРазмер Цикл - - Для Н = 1 По Попытки Цикл - - Попытка - - Результат = ЧтениеДанных.Прочитать(РазмерУчастка); - ТекущиеДанные = Результат.ПолучитьДвоичныеДанные(); - - Если ТекущиеДанные.Размер() = 0 Тогда - Прервать; - КонецЕсли; - - Ответ = ЗагрузитьЧастьОбъекта(Наименование - , Бакет - , ОсновныеДанные - , IDЗагрузки - , НомерЧасти - , ТекущиеДанные); - - Если Ответ["status"] > ПоследнийКодУспеха Тогда - ВызватьИсключение "Сервер вернул статус " + Строка(Ответ["status"]); - КонецЕсли; - - ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); - - ETag = Ответ["headers"]["Etag"]; - ETag = ?(ETag = Неопределено, Ответ["headers"]["ETag"], ETag); - - МассивТегов.Добавить(ETag); - - КБайт = 1024; - МБайт = КБайт * КБайт; - OPI_Инструменты.ИнформацияОПрогрессе(ПрочитаноБайт, ОбщийРазмер, "МБ", МБайт); - - ВыполнитьСборкуМусора(); - ОсвободитьОбъект(ТекущиеДанные); - - Прервать; - - Исключение - - Если Н = Попытки Тогда - - Сообщить(OPI_Инструменты.JSONСтрокой(Ответ)); - Сообщить("Не удалось загрузить часть файла! Отмена загрузки ID:" + IDЗагрузки + "..."); - - Ошибка = Истина; - Прервать; - - Иначе - - Сообщить("Ошибка загрузки участка " + Строка(Н) + "/" + Строка(Попытки)); - Сообщить(ОписаниеОшибки()); - Продолжить; - - КонецЕсли; - - КонецПопытки; - - КонецЦикла; - - НомерЧасти = НомерЧасти + 1; - - КонецЦикла; - - Если Ошибка Тогда - Ответ = ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки); - Иначе - Ответ = ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов); - КонецЕсли; - - Возврат Ответ; - -КонецФункции - -Функция ОформитьОтвет(Знач Ответ, Знач ОжидаютсяДвоичные = Ложь) - - Статус = Ответ.КодСостояния; - Заголовки = Ответ.Заголовки; - ПоследнийКодУспеха = 299; - - Если Не ОжидаютсяДвоичные Или Статус > ПоследнийКодУспеха Тогда - - ДанныеОтвета = Новый Структура; - ДанныеТела = Новый Структура; - - ТелоОтветаИзначальное = Ответ.ПолучитьТелоКакСтроку(); - ТелоОтветаДляОбработки = СокрЛП(ТелоОтветаИзначальное); - - Если ЗначениеЗаполнено(ТелоОтветаДляОбработки) Тогда - - Попытка - ДанныеТела = OPI_Инструменты.ОбработатьXML(ТелоОтветаДляОбработки); - Исключение - ДанныеТела.Вставить("notValidXMLMessage", ТелоОтветаИзначальное); - КонецПопытки; - - КонецЕсли; - - ДанныеОтвета = Новый Структура; - ДанныеОтвета.Вставить("status" , Статус); - ДанныеОтвета.Вставить("response", ДанныеТела); - ДанныеОтвета.Вставить("headers" , Заголовки); - - Иначе - ДанныеОтвета = Ответ.ПолучитьТелоКакДвоичныеДанные(); - КонецЕсли; - - Возврат ДанныеОтвета; - -КонецФункции - -Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); - OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог); - - Признак = "://"; - - Если Каталог Тогда - URL = URL + Имя; - Иначе - - Если СтрНайти(URL, Признак) Тогда - URL = СтрЗаменить(URL, Признак, Признак + Имя + "."); - Иначе - URL = Имя + "." + URL; - КонецЕсли; - - КонецЕсли; - - Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда - URL = URL + "/"; - КонецЕсли; - - Возврат URL; - -КонецФункции - -Функция СформироватьСтруктуруТегов(Знач Теги) - - ТекстОшибки = "Некорректный формат тегов. Ожидается коллекция ключ-значение"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Теги, ТекстОшибки); - - МассивТегов = Новый Массив; - - Для Каждого Тег Из Теги Цикл - - СтруктураТега = Новый Структура; - СтруктураТега.Вставить("Key" , Строка(Тег.Ключ)); - СтруктураТега.Вставить("Value", Строка(Тег.Значение)); - - МассивТегов.Добавить(Новый Структура("Tag", СтруктураТега)); - - КонецЦикла; - - ФинальнаяСтруктура = Новый Структура; - НаборТегов = Новый Структура; - - НаборТегов.Вставить("TagSet", МассивТегов); - ФинальнаяСтруктура.Вставить("Tagging", НаборТегов); - - Возврат ФинальнаяСтруктура; - -КонецФункции - -Функция СформироватьСтруктуруНастроекВерсионирования(Знач Статус, Знач УдалениеMFA) - - СтруктураНастроек = Новый Структура; - - Если ЗначениеЗаполнено(Статус) Тогда - - OPI_ПреобразованиеТипов.ПолучитьБулево(Статус); - СтруктураНастроек.Вставить("Status", ?(Статус, "Enabled", "Suspended")); - - КонецЕсли; - - Если ЗначениеЗаполнено(УдалениеMFA) Тогда - - OPI_ПреобразованиеТипов.ПолучитьБулево(УдалениеMFA); - СтруктураНастроек.Вставить("MfaDelete", ?(УдалениеMFA, "Enabled", "Disabled")); - - КонецЕсли; - - ФинальнаяСтруктура = Новый Структура("VersioningConfiguration", СтруктураНастроек); - - Возврат ФинальнаяСтруктура; - -КонецФункции - -Функция ПолучитьРазмерСодержимого(Знач Содержимое) - - Если ТипЗнч(Содержимое) = Тип("Строка") Тогда - - ФайлСодержимого = Новый Файл(Содержимое); - Возврат ФайлСодержимого.Размер(); - - Иначе - - Возврат Содержимое.Размер(); - - КонецЕсли; - -КонецФункции - -Функция ЗакрытьПотокИПолучитьДанные(Знач ПотокФайла, Знач ПутьСохранения) - - Если ТипЗнч(ПотокФайла) = Тип("ПотокВПамяти") Тогда - Возврат ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные(); - Иначе - ПотокФайла.Закрыть(); - ФайлОтвета = Новый Файл(ПутьСохранения); - Возврат ФайлОтвета.ПолноеИмя; - КонецЕсли; - -КонецФункции - -Процедура ПроверитьОсновныеДанные(ОсновныеДанные) - - ТекстОшибки = "Ошибка получения авторизационных данных из структуры"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ОсновныеДанные, ТекстОшибки); - - МассивНеобходимыхПолей = Новый Массив; - МассивНеобходимыхПолей.Добавить("AccessKey"); - МассивНеобходимыхПолей.Добавить("SecretKey"); - МассивНеобходимыхПолей.Добавить("Region"); - МассивНеобходимыхПолей.Добавить("Service"); - МассивНеобходимыхПолей.Добавить("URL"); - - ОтсутствующиеПоля = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ОсновныеДанные, МассивНеобходимыхПолей); - - Если ОтсутствующиеПоля.Количество() > 0 Тогда - ВызватьИсключение "Отсутствуют необходимые данные авторизации: " + СтрСоединить(ОтсутствующиеПоля, ", "); - КонецЕсли; - -КонецПроцедуры - -Процедура ДобавитьДополнительныеЗаголовки(Приемник, Знач Заголовки) - - Если Не ЗначениеЗаполнено(Заголовки) Тогда - Возврат; - КонецЕсли; - - ТипПриемника = ТипЗнч(Приемник); - ТекстОшибки = "Ошибка установки дополнительных заголовков"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки); - - Если ТипПриемника = Тип("HTTPЗапрос") Тогда - - Для Каждого Заголовок Из Заголовки Цикл - Приемник.Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение); - КонецЦикла; - - Иначе - - Если Не ЗначениеЗаполнено(Приемник) Тогда - Приемник = Новый Соответствие; - Иначе - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Приемник, ТекстОшибки); - КонецЕсли; - - Для Каждого Заголовок Из Заголовки Цикл - Приемник.Вставить(Заголовок.Ключ, Заголовок.Значение); - КонецЦикла; - - КонецЕсли; - -КонецПроцедуры - -Процедура ЗаполнитьURLОбъекта(ОсновныеДанные, Наименование, Бакет, Версия = "") - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); - - URL = ПолучитьURLСервиса(ОсновныеДанные); - URL = СформироватьURLБакета(URL, Бакет, Ложь); - URL = URL + Наименование; - - Если ЗначениеЗаполнено(Версия) Тогда - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия); - URL = URL + "?versionId=" + Версия; - - КонецЕсли; - - ОсновныеДанные.Вставить("URL", URL); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - - -#Region Alternate - -Function GetBasicDataStructure(Val URL, Val AccessKey, Val SecretKey, Val Region, Val Service = "s3") Export - Return ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region, Service); -EndFunction - -Function SendRequestWithoutBody(Val Method, Val BasicData, Val ExpectedBinary = False, Val Headers = Undefined) Export - Return ОтправитьЗапросБезТела(Method, BasicData, ExpectedBinary, Headers); -EndFunction - -Function SendRequestWithBody(Val Method, Val BasicData, Val Body, Val ExpectedBinary = False, Val Headers = Undefined) Export - Return ОтправитьЗапросСТелом(Method, BasicData, Body, ExpectedBinary, Headers); -EndFunction - -Function CreateBucket(Val Name, Val BasicData, Val Directory = False, Val Headers = Undefined) Export - Return СоздатьБакет(Name, BasicData, Directory, Headers); -EndFunction - -Function DeleteBucket(Val Name, Val BasicData, Val Directory = False, Val Headers = Undefined) Export - Return УдалитьБакет(Name, BasicData, Directory, Headers); -EndFunction - -Function HeadBucket(Val Name, Val BasicData, Val Directory = False, Val AccountID = "", Val Headers = Undefined) Export - Return ПроверитьДоступностьБакета(Name, BasicData, Directory, AccountID, Headers); -EndFunction - -Function PutBucketEncryption(Val Name, Val BasicData, Val XmlConfig, Val Directory = False, Val Headers = Undefined) Export - Return УстановитьШифрованиеБакета(Name, BasicData, XmlConfig, Directory, Headers); -EndFunction - -Function GetBucketEncryption(Val Name, Val BasicData, Val Directory = False, Val Headers = Undefined) Export - Return ПолучитьШифрованиеБакета(Name, BasicData, Directory, Headers); -EndFunction - -Function DeleteBucketEncryption(Val Name, Val BasicData, Val Directory = False, Val Headers = Undefined) Export - Return УдалитьШифрованиеБакета(Name, BasicData, Directory, Headers); -EndFunction - -Function PutBucketTagging(Val Name, Val BasicData, Val Tags, Val Directory = False, Val Headers = Undefined) Export - Return УстановитьТегиБакета(Name, BasicData, Tags, Directory, Headers); -EndFunction - -Function GetBucketTagging(Val Name, Val BasicData, Val Directory = False, Val Headers = Undefined) Export - Return ПолучитьТегиБакета(Name, BasicData, Directory, Headers); -EndFunction - -Function DeleteBucketTagging(Val Name, Val BasicData, Val Directory = False, Val Headers = Undefined) Export - Return УдалитьТегиБакета(Name, BasicData, Directory, Headers); -EndFunction - -Function PutBucketVersioning(Val Name, Val BasicData, Val Status = Undefined, Val MFADelete = Undefined, Val Directory = False, Val Headers = Undefined) Export - Return УстановитьНастройкиВерсионированияБакета(Name, BasicData, Status, MFADelete, Directory, Headers); -EndFunction - -Function GetBucketVersioning(Val Name, Val BasicData, Val Directory = False, Val Headers = Undefined) Export - Return ПолучитьНастройкийВерсионированияБакета(Name, BasicData, Directory, Headers); -EndFunction - -Function ListBuckets(Val BasicData, Val Prefix = "", Val Region = "", Val PageToken = "", Val Headers = Undefined) Export - Return ПолучитьСписокБакетов(BasicData, Prefix, Region, PageToken, Headers); -EndFunction - -Function PutObject(Val Name, Val Bucket, Val Entity, Val BasicData, Val Headers = Undefined) Export - Return ЗагрузитьОбъект(Name, Bucket, Entity, BasicData, Headers); -EndFunction - -Function UploadFullObject(Val Name, Val Bucket, Val Entity, Val BasicData, Val Headers = Undefined) Export - Return ЗагрузитьОбъектЦеликом(Name, Bucket, Entity, BasicData, Headers); -EndFunction - -Function InitPartsUpload(Val Name, Val Bucket, Val BasicData, Val Headers = Undefined) Export - Return ИнициализироватьЗагрузкуЧастями(Name, Bucket, BasicData, Headers); -EndFunction - -Function UploadObjectPart(Val Name, Val Bucket, Val BasicData, Val UploadID, Val PartNumber, Val Data) Export - Return ЗагрузитьЧастьОбъекта(Name, Bucket, BasicData, UploadID, PartNumber, Data); -EndFunction - -Function FinishPartsUpload(Val Name, Val Bucket, Val BasicData, Val UploadID, Val TagsArray, Val Headers = Undefined) Export - Return ЗавершитьЗагрузкуЧастями(Name, Bucket, BasicData, UploadID, TagsArray, Headers); -EndFunction - -Function AbortMultipartUpload(Val Name, Val Bucket, Val BasicData, Val UploadID, Val Headers = Undefined) Export - Return ОтменитьЗагрузкуЧастями(Name, Bucket, BasicData, UploadID, Headers); -EndFunction - -Function HeadObject(Val Name, Val Bucket, Val BasicData, Val Version = Undefined, Val Headers = Undefined) Export - Return ПолучитьОписаниеОбъекта(Name, Bucket, BasicData, Version, Headers); -EndFunction - -Function GetObject(Val Name, Val Bucket, Val BasicData, Val Version = "", Val Headers = Undefined, Val SavePath = "") Export - Return ПолучитьОбъект(Name, Bucket, BasicData, Version, Headers, SavePath); -EndFunction - -Function DeleteObject(Val Name, Val Bucket, Val BasicData, Val Version = Undefined, Val Headers = Undefined) Export - Return УдалитьОбъект(Name, Bucket, BasicData, Version, Headers); -EndFunction - -Function CopyObject(Val SourcePath, Val DestinationBucket, Val DestinationPath, Val SourceBucket, Val BasicData, Val Headers = Undefined) Export - Return КопироватьОбъект(SourcePath, DestinationBucket, DestinationPath, SourceBucket, BasicData, Headers); -EndFunction - -Function PutObjectTagging(Val Name, Val Bucket, Val BasicData, Val Tags, Val Headers = Undefined) Export - Return УстановитьТегиОбъекта(Name, Bucket, BasicData, Tags, Headers); -EndFunction - -Function GetObjectTagging(Val Name, Val Bucket, Val BasicData, Val Version = "", Val Headers = Undefined) Export - Return ПолучитьТегиОбъекта(Name, Bucket, BasicData, Version, Headers); -EndFunction - -Function DeleteObjectTagging(Val Name, Val Bucket, Val BasicData, Val Version = "", Val Headers = Undefined) Export - Return УдалитьТегиОбъекта(Name, Bucket, BasicData, Version, Headers); -EndFunction - -Function ListObjects(Val Bucket, Val BasicData, Val Prefix = "", Val PageToken = "", Val Headers = Undefined) Export - Return ПолучитьСписокОбъектов(Bucket, BasicData, Prefix, PageToken, Headers); -EndFunction - -Function ListObjectVersions(Val Bucket, Val BasicData, Val Prefix = "", Val Version = "", Val Headers = Undefined) Export - Return ПолучитьСписокВерсийОбъектов(Bucket, BasicData, Prefix, Version, Headers); -EndFunction - -Function GetObjectDownloadLink(Val Name, Val Bucket, Val BasicData, Val Expire = 3600, Val Headers = Undefined) Export - Return ПолучитьСсылкуСкачиванияОбъекта(Name, Bucket, BasicData, Expire, Headers); -EndFunction - -Function GetObjectUploadLink(Val Name, Val Bucket, Val BasicData, Val Expire = 3600, Val Headers = Undefined) Export - Return ПолучитьСсылкуЗагрузкиОбъекта(Name, Bucket, BasicData, Expire, Headers); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_S3.os +// Lib: S3 +// CLI: s3 +// Keywords: s3, minio, aws, simple storage service + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params +//@skip-check constructor-function-return-section + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ОбщиеМетоды + +// Получить структуру данных +// Возвращает основные данные запроса в структурированном виде +// +// Параметры: +// URL - Строка - URL: домен для обычных методов или полный URL с параметрами для прямой отправки запросов - url +// AccessKey - Строка - Access key для авторизации - access +// SecretKey - Строка - Secret key для авторизации - secret +// Region - Строка - Регион сервиса - region +// Service - Строка - Вид сервиса, если отличен от s3 - service +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура основных данных запроса +Функция ПолучитьСтруктуруДанных(Знач URL, Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт + + Строка_ = "Строка"; + + СтруктураАвторизации = Новый Структура; + OPI_Инструменты.ДобавитьПоле("URL" , URL , Строка_, СтруктураАвторизации); + OPI_Инструменты.ДобавитьПоле("AccessKey", AccessKey, Строка_, СтруктураАвторизации); + OPI_Инструменты.ДобавитьПоле("SecretKey", SecretKey, Строка_, СтруктураАвторизации); + OPI_Инструменты.ДобавитьПоле("Region" , Region , Строка_, СтруктураАвторизации); + OPI_Инструменты.ДобавитьПоле("Service" , Service , Строка_, СтруктураАвторизации); + + Возврат СтруктураАвторизации; + +КонецФункции + +// Отправить запрос без тела +// Отправляет простой http запрос без тела +// +// Параметры: +// Метод - Строка - HTTP метод - method +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных - basic +// ОжидаютсяДвоичные - Булево - Отключает попытку преобразования ответа в JSON - binary +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ОтправитьЗапросБезТела(Знач Метод + , Знач ОсновныеДанные + , Знач ОжидаютсяДвоичные = Ложь + , Знач Заголовки = Неопределено) Экспорт + + Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, , ОжидаютсяДвоичные, Заголовки); + Возврат Ответ; + +КонецФункции + +// Отправить запрос с телом +// Отправляет http запрос с телом +// +// Параметры: +// Метод - Строка - HTTP метод - method +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных - basic +// Тело - Строка, ДвоичныеДанные - Двоичное тело запроса или путь к файлу - body +// ОжидаютсяДвоичные - Булево - Отключает попытку преобразования ответа в JSON - binary +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ОтправитьЗапросСТелом(Знач Метод + , Знач ОсновныеДанные + , Знач Тело + , Знач ОжидаютсяДвоичные = Ложь + , Знач Заголовки = Неопределено) Экспорт + + Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, Тело, ОжидаютсяДвоичные, Заголовки); + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область РаботаСБакетами + +// Создать бакет +// Создает новый бакет с выбранным именем +// +// Примечание: +// Метод в документации AWS: [CreateBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Ложь, Знач Заголовки = Неопределено) Экспорт + + Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "PUT", Заголовки); + Возврат Ответ; + +КонецФункции + +// Удалить бакет +// Удаляет бакет с выбранным именем +// +// Примечание: +// Метод в документации AWS: [DeleteBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Ложь, Знач Заголовки = Неопределено) Экспорт + + Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "DELETE", Заголовки); + Возврат Ответ; + +КонецФункции + +// Проверить доступность бакета +// Проверяет доступность бакета для текущего аккаунта или аккаунта по ID +// +// Примечание: +// Метод в документации AWS: [HeadBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// IDАккаунта - Строка - ID аккаунта для проверки, что бакет принадлежит ему - account +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПроверитьДоступностьБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач Каталог = Ложь + , Знач IDАккаунта = "" + , Знач Заголовки = Неопределено) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDАккаунта); + + Если ЗначениеЗаполнено(IDАккаунта) Тогда + ЗаголовокАккаунта = Новый Соответствие(); + ЗаголовокАккаунта.Вставить("x-amz-expected-bucket-owner", IDАккаунта); + ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокАккаунта); + КонецЕсли; + + Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "HEAD", Заголовки); + Возврат Ответ; + +КонецФункции + +// Установить шифрование бакета +// Устанавлиает шифрование бакета по XML конфигурации +// +// Примечание: +// Метод в документации AWS: [PutBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// XMLКонфигурация - Строка - XML строка или файл конфигурации шифрования - conf +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УстановитьШифрованиеБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач XMLКонфигурация + , Знач Каталог = Ложь + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(XMLКонфигурация, Истина); + XMLКонфигурация = ПолучитьДвоичныеДанныеИзСтроки(XMLКонфигурация); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Наименование, Каталог); + URL = URL + "?encryption"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, XMLКонфигурация, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить шифрование бакета +// Получает установленную ранее конфигурацию шифрования бакета +// +// Примечание: +// Метод в документации AWS: [GetBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПолучитьШифрованиеБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач Каталог = Ложь + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Наименование, Каталог); + + URL = URL + "?encryption"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить шифрование бакета +// Удаляет конфигурацию шифрования бакета +// +// Примечание: +// Метод в документации AWS: [DeleteBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УдалитьШифрованиеБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач Каталог = Ложь + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Наименование, Каталог); + + URL = URL + "?encryption"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Установить теги бакета +// Устанавливает набор тегов для бакета +// +// Примечание: +// Установка нового набора удаляет все существующие теги бакета +// Метод в документации AWS: [PutBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Теги - Структура Из КлючИЗначение - Набор тегов (ключ и значение) для установки - tagset +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УстановитьТегиБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач Теги + , Знач Каталог = Ложь + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + Теги = СформироватьСтруктуруТегов(Теги); + ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/"); + ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Наименование, Каталог); + URL = URL + "?tagging"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, ТегиXML, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить теги бакета +// Получает набор тегов бакета +// +// Примечание: +// Метод в документации AWS: [GetBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПолучитьТегиБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач Каталог = Ложь + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Наименование, Каталог); + URL = URL + "?tagging"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить теги бакета +// Удаляет набор тегов бакета +// +// Примечание: +// Метод в документации AWS: [DeleteBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УдалитьТегиБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач Каталог = Ложь + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Наименование, Каталог); + URL = URL + "?tagging"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Установить настройки версионирования бакета +// Устанавливает настройки версионирования объектов бакета +// +// Примечание: +// Метод в документации AWS: [PutBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Статус - Булево - Включение и отключение версионирования, если необходимо - status +// УдалениеMFA - Булево - Включение и отключение удаления MFA, если необходимо - mfad +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач Статус = Неопределено + , Знач УдалениеMFA = Неопределено + , Знач Каталог = Ложь + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + Теги = СформироватьСтруктуруНастроекВерсионирования(Статус, УдалениеMFA); + ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/"); + ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Наименование, Каталог); + URL = URL + "?versioning"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, ТегиXML, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить настройки версионирования бакета +// Получает значения настроек версионирования объектов в бакете +// +// Примечание: +// Метод в документации AWS: [GetBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html) +// +// Параметры: +// Наименование - Строка - Наименование бакета - name +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование + , Знач ОсновныеДанные + , Знач Каталог = Ложь + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Наименование, Каталог); + URL = URL + "?versioning"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список бакетов +// Получает список бакетов. Возможно использование отборов, если они поддерживаются сервисом +// +// Примечание: +// Метод в документации AWS: [ListBuckets](@docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html) +// +// Параметры: +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Префикс - Строка - Отбор по префиксу, если необходимо - prefix +// Регион - Строка - Отбор по региону бакета, если необходимо - region +// ТокенСтраницы - Строка - Токен страницы, если используется пагинация - ctoken +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПолучитьСписокБакетов(Знач ОсновныеДанные + , Знач Префикс = "" + , Знач Регион = "" + , Знач ТокенСтраницы = "" + , Знач Заголовки = Неопределено) Экспорт + + Строка_ = "Строка"; + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + Параметры = Новый Соответствие; + OPI_Инструменты.ДобавитьПоле("bucket-region" , Регион , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("continuation-token", ТокенСтраницы, Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("max-buckets" , 250 , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("prefix" , Префикс , Строка_, Параметры); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры); + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область РаботаСОбъектами + +// Загрузить объект +// Загружает файл в бакет +// +// Примечание: +// Метод в документации AWS (стандартный): [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)^ +// Метод в документации AWS (по частям): [Multipart upload](@docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) +// Вы можете использовать поле `ChunkSize` в основных данных для указания минимального размера и величины чанка загрузки по частям.^^ +// Например, `ChunkSize равный X` означает, что все файлы, размером больше `X` (в байтах) будут загружаться по частям, где одна часть будет размером `X`.^^ +// Загрузка по частям используется для больших файлов. Стандартный размер `ChunkSize` - 20971520 байт (20 МБайт) +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// Содержимое - Строка, ДвоичныеДанные - Данные или путь к файлу для загрузки - data +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ЗагрузитьОбъект(Знач Наименование + , Знач Бакет + , Знач Содержимое + , Знач ОсновныеДанные + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Содержимое); + + РазмерФайла = ПолучитьРазмерСодержимого(Содержимое); + Делитель = 10000; + МинимальныйРазмерЧасти = РазмерФайла / Делитель; + МинимальныйРазмерЧасти = Макс(МинимальныйРазмерЧасти, 5242880); + Половина = 0.5; + + Если OPI_Инструменты.ПолеКоллекцииСуществует(ОсновныеДанные_, "ChunkSize") Тогда + МаксимальныйРазмер = ОсновныеДанные_["ChunkSize"]; + OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер); + Иначе + МаксимальныйРазмер = 20971520; + КонецЕсли; + + Если МинимальныйРазмерЧасти > МаксимальныйРазмер Тогда + ВызватьИсключение "ChunkSize слишком мал. Необходимо увеличить размер части (минимум для данного файла - " + + OPI_Инструменты.ЧислоВСтроку(Окр(МинимальныйРазмерЧасти + Половина)) + + ")"; + КонецЕсли; + + Если РазмерФайла > МаксимальныйРазмер Тогда + + Размеры = Новый Структура("object,chunk", РазмерФайла, МаксимальныйРазмер); + Ответ = ЗагрузитьОбъектЧастями(Наименование, Бакет, Содержимое, ОсновныеДанные_, Заголовки, Размеры); + + Иначе + + Ответ = ЗагрузитьОбъектЦеликом(Наименование, Бакет, Содержимое, ОсновныеДанные_, Заголовки); + + КонецЕсли; + + Возврат Ответ; + +КонецФункции + +// Загрузить объект целиком +// Загружает объект на сервер не используюя загрузку по частям +// +// Примечание: +// Метод в документации AWS: [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) +// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^ +// Использование данного метода для больших файлов может приводить к сбоям +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// Содержимое - Строка, ДвоичныеДанные - Данные или путь к файлу для загрузки - data +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ЗагрузитьОбъектЦеликом(Знач Наименование + , Знач Бакет + , Знач Содержимое + , Знач ОсновныеДанные + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); + + Ответ = ОтправитьЗапрос("PUT", ОсновныеДанные_, Содержимое, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Инициализировать загрузку частями +// Инициализирует загрузку объекта по частям +// +// Примечание: +// Метод в документации AWS: [CreateMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) +// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^ +// Использование загрузки частями для файлов < 5 МБ или при размере одной части < 5 МБ приведет к ошибке +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ИнициализироватьЗагрузкуЧастями(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); + + ОсновныеДанные_.Вставить("URL", ОсновныеДанные_["URL"] + "?uploads"); + + Ответ = ОтправитьЗапросБезТела("POST", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Загрузить часть объекта +// Загружает часть объекта при загрузке по частям +// +// Примечание: +// Метод в документации AWS: [UploadPart](@docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) +// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект` +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// IDЗагрузки - Строка - ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями - upload +// НомерЧасти - Число, Строка - Порядковый номер части объекта от 1 до 10000 - part +// Данные - ДвоичныеДанные, Строка - Данные части для загрузки - content +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ЗагрузитьЧастьОбъекта(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач IDЗагрузки + , Знач НомерЧасти + , Знач Данные) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("partNumber", НомерЧасти, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("uploadId" , IDЗагрузки, "Строка", Параметры); + + СтрокаПараметров = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры); + + ОсновныеДанные_.Вставить("URL", ОсновныеДанные_["URL"] + СтрокаПараметров); + + Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, Данные); + + Возврат Ответ; + +КонецФункции + +// Завершить загрузку частями +// Подтверждает окончание загрузки объекта по частям +// +// Примечание: +// Метод в документации AWS: [CompleteMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) +// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект` +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// IDЗагрузки - Строка - ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями - upload +// МассивТегов - Массив Из Строка - Массив тегов (Etag) из загрузок каждой части - tags +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ЗавершитьЗагрузкуЧастями(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач IDЗагрузки + , Знач МассивТегов + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьМассив(МассивТегов); + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); + + ОсновныеДанные_.Вставить("URL", ОсновныеДанные_["URL"] + "?uploadId=" + Строка(IDЗагрузки)); + + МассивЧастей = Новый Массив; + + Для Н = 1 По МассивТегов.Количество() Цикл + + СтруктураЧасти = Новый Структура; + СтруктураЧасти.Вставить("ETag" , МассивТегов[Н - 1]); + СтруктураЧасти.Вставить("PartNumber", Н); + + МассивЧастей.Добавить(Новый Структура("Part", СтруктураЧасти)); + + КонецЦикла; + + СтруктураЗавершения = Новый Структура("CompleteMultipartUpload", МассивЧастей); + XMLЗавершения = OPI_Инструменты.ПолучитьXML(СтруктураЗавершения, "http://s3.amazonaws.com/doc/2006-03-01/"); + XMLЗавершения = ПолучитьДвоичныеДанныеИзСтроки(XMLЗавершения); + + Ответ = ОтправитьЗапросСТелом("POST", ОсновныеДанные_, XMLЗавершения, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Отменить загрузку частями +// Отменяет загрузку объекта по частям +// +// Примечание: +// Метод в документации AWS: [AbortMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html) +// Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`^ +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// IDЗагрузки - Строка - ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями - upload +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ОтменитьЗагрузкуЧастями(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач IDЗагрузки + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); + + ОсновныеДанные_.Вставить("URL", ОсновныеДанные_["URL"] + "?uploadId=" + Строка(IDЗагрузки)); + + Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить описание объекта +// Получает информацию о характеристиках объекта в бакете +// +// Примечание: +// Метаданные объекты содержатся в заголовках +// Метод в документации AWS: [GetObjectAttributes](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html) +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета, в котором находится объект - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Версия - Строка - Токен для получения конкретной версии объекта - ver +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПолучитьОписаниеОбъекта(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач Версия = Неопределено + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет, Версия); + + Ответ = ОтправитьЗапросБезТела("HEAD", ОсновныеДанные_, , Заголовки); + Ответ["response"] = Новый Структура; + + Возврат Ответ; + +КонецФункции + +// Получить объект +// Получает содержимое объекта из бакета +// +// Примечание: +// Метод в документации AWS: [GetObjectAttributes](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html) +// Вы можете использовать поле `ChunkSize` в основных данных для указания минимального размера и величины чанка загрузки по частям.^^ +// Например, `ChunkSize равный X` означает, что все файлы, размером больше `X` (в байтах) будут загружаться по частям, где одна часть будет размером `X`.^^ +// Загрузка по частям используется для больших файлов. Стандартный размер `ChunkSize` - 20971520 байт (20 МБайт) +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета, в котором находится объект - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Версия - Строка - Токен для получения конкретной версии объекта - ver +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// ПутьСохранения - Строка - Путь для прямой записи файла на диск - out +// +// Возвращаемое значение: +// ДвоичныеДанные, Строка - содержимое объекта или путь к файлу, если указан путь сохранения +Функция ПолучитьОбъект(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач Версия = "" + , Знач Заголовки = Неопределено + , Знач ПутьСохранения = "") Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + ИнформацияОбъекта = ПолучитьОписаниеОбъекта(Наименование, Бакет, ОсновныеДанные_, Версия); + + Если OPI_Инструменты.ПолеКоллекцииСуществует(ОсновныеДанные_, "ChunkSize") Тогда + МаксимальныйРазмер = ОсновныеДанные_["ChunkSize"]; + OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер); + Иначе + МаксимальныйРазмер = 20971520; + КонецЕсли; + + Если Не OPI_Инструменты.ПолеКоллекцииСуществует(ИнформацияОбъекта, "headers.Content-Length") Тогда + Возврат ИнформацияОбъекта; + КонецЕсли; + + РазмерОбъекта = ИнформацияОбъекта["headers"]["Content-Length"]; + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер); + OPI_ПреобразованиеТипов.ПолучитьЧисло(РазмерОбъекта); + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет, Версия); + + Если РазмерОбъекта > МаксимальныйРазмер Тогда + + Размеры = Новый Структура("object,chunk", РазмерОбъекта, МаксимальныйРазмер); + Ответ = ПолучитьОбъектЧастями(ОсновныеДанные_, Заголовки, ПутьСохранения, Размеры); + + Иначе + + Ответ = ПолучитьОбъектЦеликом(ОсновныеДанные_, Заголовки, ПутьСохранения); + + КонецЕсли; + + Возврат Ответ; + +КонецФункции + +// Удалить объект +// Удаляет объект из бакета +// +// Примечание: +// Метод в документации AWS: [DeleteObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html) +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Версия - Строка - Токен для удаления конкретной версии объекта - ver +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УдалитьОбъект(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач Версия = Неопределено + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Бакет, Ложь); + URL = URL + Наименование; + + Если ЗначениеЗаполнено(Версия) Тогда + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия); + URL = URL + "?versionId=" + Версия; + + КонецЕсли; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Копировать объект +// Копирует объект из одного расположения в другое +// +// Примечание: +// Метод в документации AWS: [CopyObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) +// +// Параметры: +// ПутьИсточник - Строка - Путь (имя) в бакете источнике - sname +// БакетИсточник - Строка - Бакет источник объекта - sbucket +// ПутьПриемник - Строка - Путь (имя) объекта в бакете приемнике - name +// БакетПриемник - Строка - Имя бакета приемника - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция КопироватьОбъект(Знач ПутьИсточник + , Знач БакетИсточник + , Знач ПутьПриемник + , Знач БакетПриемник + , Знач ОсновныеДанные + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьИсточник); + OPI_ПреобразованиеТипов.ПолучитьСтроку(БакетИсточник); + + Источник = БакетИсточник + "/" + ПутьИсточник; + Источник = ?(СтрНачинаетсяС(Источник, "/"), Источник, "/" + Источник); + + ЗаголовокИсточника = Новый Соответствие(); + ЗаголовокИсточника.Вставить("x-amz-copy-source", Источник); + ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокИсточника); + + Ответ = ЗагрузитьОбъектЦеликом(ПутьПриемник, БакетПриемник, Неопределено, ОсновныеДанные_, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Установить теги объекта +// Устанавливает набор тегов для объекта +// +// Примечание: +// Установка нового набора удаляет все существующие теги объекта +// Метод в документации AWS: [PutObjectTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) +// +// Параметры: +// Наименование - Строка - Наименование объекта - name +// Бакет - Строка - Наименование бакета - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Теги - Структура Из КлючИЗначение - Набор тегов (ключ и значение) для установки - tagset +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УстановитьТегиОбъекта(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач Теги + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); + + Теги = СформироватьСтруктуруТегов(Теги); + ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/"); + ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Бакет, Ложь); + URL = URL + Наименование + "?tagging"; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные_, ТегиXML, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить теги объекта +// Получает набор тегов объекта +// +// Примечание: +// Метод в документации AWS: [GetObjectTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) +// +// Параметры: +// Наименование - Строка - Наименование объекта - name +// Бакет - Строка - Наименование бакета - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Версия - Строка - Токен для получения данных конкретной версии объекта - ver +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПолучитьТегиОбъекта(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач Версия = "" + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Бакет, Ложь); + URL = URL + Наименование + "?tagging"; + + Если ЗначениеЗаполнено(Версия) Тогда + URL = URL + "&versionId=" + Версия; + КонецЕсли; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить теги объекта +// Удаляет набор тегов объекта +// +// Примечание: +// Метод в документации AWS: [DeleteObjectTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) +// +// Параметры: +// Наименование - Строка - Наименование объекта - name +// Бакет - Строка - Наименование бакета - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Версия - Строка - Токен для удаления данных конкретной версии объекта - ver +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция УдалитьТегиОбъекта(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач Версия = "" + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Бакет, Ложь); + URL = URL + Наименование + "?tagging"; + + Если ЗначениеЗаполнено(Версия) Тогда + URL = URL + "&versionId=" + Версия; + КонецЕсли; + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список объектов +// Получает список объектов в выбранном бакете +// +// Примечание: +// Метод в документации AWS: [ListObjectsV2](@docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) +// +// Параметры: +// Бакет - Строка - Наименование бакета - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Префикс - Строка - Отбор по префиксу, если необходимо - prefix +// ТокенСтраницы - Строка - Токен страницы, если используется пагинация - ctoken +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПолучитьСписокОбъектов(Знач Бакет + , Знач ОсновныеДанные + , Знач Префикс = "" + , Знач ТокенСтраницы = "" + , Знач Заголовки = Неопределено) Экспорт + + Строка_ = "Строка"; + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Бакет, Ложь); + + Параметры = Новый Соответствие; + OPI_Инструменты.ДобавитьПоле("list-type" , 2 , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("max-keys" , 250 , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("continuation-token", ТокенСтраницы, Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("prefix" , Префикс , Строка_, Параметры); + + URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры); + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список версий объектов +// Получает список всех версий объектов в выбранном бакете +// +// Примечание: +// Метод в документации AWS: [ListObjectVersions](@docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html) +// +// Параметры: +// Бакет - Строка - Наименование бакета - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// Префикс - Строка - Отбор по префиксу, если необходимо - prefix +// Версия - Строка - ID версии начала списка - ver +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища +Функция ПолучитьСписокВерсийОбъектов(Знач Бакет + , Знач ОсновныеДанные + , Знач Префикс = "" + , Знач Версия = "" + , Знач Заголовки = Неопределено) Экспорт + + Строка_ = "Строка"; + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Бакет, Ложь); + URL = URL + "?versions"; + + Параметры = Новый Соответствие; + OPI_Инструменты.ДобавитьПоле("max-keys" , 250 , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("version-id-marker", Версия , Строка_, Параметры); + OPI_Инструменты.ДобавитьПоле("prefix" , Префикс, Строка_, Параметры); + + URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры, , Ложь); + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить ссылку скачивания объекта +// Получает прямую ссылку для скачивания объекта без дополнительной авторизации +// +// Примечание: +// В Заголовки необходимо добавить все x-amz заголовки, которые будут использоваться при обращении к полученному URL +// О механизме в документации AWS: [Download and upload objects with presigned URLs](@docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// ВремяЖизни - Строка, Число - Время жизни ссылки в секундах. 604800 максимум - expires +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Строка - URL для получения объекта +Функция ПолучитьСсылкуСкачиванияОбъекта(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач ВремяЖизни = 3600 + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + ПроверитьОсновныеДанные(ОсновныеДанные_); + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); + + Подпись = СоздатьПодписьURL(ОсновныеДанные_, "GET", ВремяЖизни, Заголовки); + URL = ОсновныеДанные_["URL"] + Подпись; + + Возврат URL; + +КонецФункции + +// Получить ссылку загрузки объекта +// Получает прямую ссылку для загрузки объекта без дополнительной авторизации +// +// Примечание: +// В Заголовки необходимо добавить все x-amz заголовки, которые будут использоваться при обращении к полученному URL +// О механизме в документации AWS: [Download and upload objects with presigned URLs](@docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) +// +// Параметры: +// Наименование - Строка - Наименование объекта в бакете - name +// Бакет - Строка - Имя бакета для загрузки объекта - bucket +// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic +// ВремяЖизни - Строка, Число - Время жизни ссылки в секундах. 604800 максимум - expires +// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers +// +// Возвращаемое значение: +// Строка - URL для получения объекта +Функция ПолучитьСсылкуЗагрузкиОбъекта(Знач Наименование + , Знач Бакет + , Знач ОсновныеДанные + , Знач ВремяЖизни = 3600 + , Знач Заголовки = Неопределено) Экспорт + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + ПроверитьОсновныеДанные(ОсновныеДанные_); + ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет); + + Подпись = СоздатьПодписьURL(ОсновныеДанные_, "PUT", ВремяЖизни, Заголовки); + URL = ОсновныеДанные_["URL"] + Подпись; + + Возврат URL; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Авторизация + +Функция СоздатьПодписьURL(Знач СтруктураДанных, Знач Метод, Знач ВремяЖизни, Знач Заголовки) + + AccessKey = СтруктураДанных["AccessKey"]; + SecretKey = СтруктураДанных["SecretKey"]; + Region = СтруктураДанных["Region"]; + Service = СтруктураДанных["Service"]; + URL = СтруктураДанных["URL"]; + + РазбитыйURL = OPI_Инструменты.РазбитьURL(URL); + + Домен = РазбитыйURL["Домен"]; + Адрес = РазбитыйURL["Адрес"]; + + ДопЗаголовки = Новый Структура("Host", Домен); + ДобавитьДополнительныеЗаголовки(Заголовки, ДопЗаголовки); + + ТекущаяДата = ТекущаяУниверсальнаяДата(); + КлючПодписи = ПолучитьКлючПодписи(SecretKey, Region, Service, ТекущаяДата); + Скоуп = СоздатьСкоуп(Region, Service, ТекущаяДата); + ВременнаяМетка = OPI_Инструменты.ВременнаяМеткаISO(ТекущаяДата); + КлючиЗаголовков = ПолучитьСтрокуКлючейЗаголовков(Заголовки); + Основа = КодироватьСтроку(AccessKey + "/" + Скоуп, СпособКодированияСтроки.КодировкаURL); + + СтрокаЗаголовков = ПолучитьСтрокуЗаголовков(Заголовки); + СтрокаХеша = "UNSIGNED-PAYLOAD"; + + ПараметрыURL = Новый ТаблицаЗначений; + + OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Algorithm" , "AWS4-HMAC-SHA256"); + OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Credential" , Основа); + OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Date" , ВременнаяМетка); + OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Expires" , ВремяЖизни); + OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-SignedHeaders", КлючиЗаголовков); + + ПараметрыСтрокой = OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL); + ПараметрыСтрокой = Прав(ПараметрыСтрокой, СтрДлина(ПараметрыСтрокой) - 1); + ШаблонЗапроса = ""; + ЧислоЧастей = 6; + + Для Н = 1 По ЧислоЧастей Цикл + + ШаблонЗапроса = ШаблонЗапроса + "%" + Строка(Н) + ?(Н = ЧислоЧастей, "", Символы.ПС); + + КонецЦикла; + + КаноническийЗапрос = СтрШаблон(ШаблонЗапроса + , Метод + , Адрес + , ПараметрыСтрокой + , СтрокаЗаголовков + , КлючиЗаголовков + , СтрокаХеша); + + СтрокаДляПодписи = СоздатьСтрокуПодписи(КаноническийЗапрос, Скоуп, ТекущаяДата); + Сигнатура = OPI_Криптография.HMAC(КлючПодписи, СтрокаДляПодписи, "SHA256"); + Сигнатура = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(Сигнатура)); + + OPI_Инструменты.ДобавитьКлючЗначение(ПараметрыURL, "X-Amz-Signature", Сигнатура); + + ПодписьURL = OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL); + + Возврат ПодписьURL; + +КонецФункции + +Функция ПолучитьКлючПодписи(Знач СекретныйКлюч, Знач Регион, Знач Сервис, Знач ТекущаяДата) + + СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч); + ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;")); + Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион); + Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис); + AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request"); + Sha256_ = "SHA256"; + + КлючДанных = OPI_Криптография.HMAC(СекретныйКлюч, ДанныеДата, Sha256_); + КлючРегиона = OPI_Криптография.HMAC(КлючДанных, Регион, Sha256_); + КлючСервиса = OPI_Криптография.HMAC(КлючРегиона, Сервис, Sha256_); + + ФинальныйКлюч = OPI_Криптография.HMAC(КлючСервиса, AWSЗапрос, Sha256_); + + Возврат ФинальныйКлюч; + +КонецФункции + +Функция СоздатьСкоуп(Знач Регион, Знач Сервис, Знач ТекущаяДата) + + ДатаОбычная = Формат(ТекущаяДата, "ДФ=yyyyMMdd;"); + + Скоуп = Новый Массив; + Скоуп.Добавить(ДатаОбычная); + Скоуп.Добавить(Регион); + Скоуп.Добавить(Сервис); + Скоуп.Добавить("aws4_request"); + + СкоупСтрокой = СтрСоединить(Скоуп, "/"); + + Возврат СкоупСтрокой; + +КонецФункции + +Функция СоздатьСтрокуПодписи(Знач КаноническийЗапрос, Знач Скоуп, Знач ТекущаяДата) + + ШаблонСтроки = ""; + Алгоритм = "AWS4-HMAC-SHA256"; + ДатаISO = OPI_Инструменты.ВременнаяМеткаISO(ТекущаяДата); + ЧислоЧастей = 4; + + КаноническийЗапрос = ПолучитьДвоичныеДанныеИзСтроки(КаноническийЗапрос); + КаноническийЗапрос = OPI_Криптография.Хеш(КаноническийЗапрос, ХешФункция.SHA256); + КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос)); + + Для Н = 1 По ЧислоЧастей Цикл + + ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = ЧислоЧастей, "", Символы.ПС); + + КонецЦикла; + + СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос); + СтрокаПодписи = ПолучитьДвоичныеДанныеИзСтроки(СтрокаПодписи); + + Возврат СтрокаПодписи; + +КонецФункции + +Функция ПолучитьСтрокуЗаголовков(Знач Заголовки) + + СписокЗаголовков = Новый СписокЗначений; + + Для Каждого Заголовок Из Заголовки Цикл + + ТекущийКлюч = Заголовок.Ключ; + ТекущийКлючН = нРег(ТекущийКлюч); + + Если Не СтрНачинаетсяС(ТекущийКлючН, "host") И Не СтрНачинаетсяС(ТекущийКлючН, "x-amz") Тогда + Продолжить; + КонецЕсли; + + СтрокаЗаголовка = нРег(ТекущийКлюч) + ":" + Заголовок.Значение; + СписокЗаголовков.Добавить(СтрокаЗаголовка); + + КонецЦикла; + + СписокЗаголовков.СортироватьПоЗначению(); + + СтрокаЗаголовков = СтрСоединить(СписокЗаголовков.ВыгрузитьЗначения(), Символы.ПС); + СтрокаЗаголовков = СтрокаЗаголовков + Символы.ПС; + + Возврат СтрокаЗаголовков; + +КонецФункции + +Функция ПолучитьСтрокуКлючейЗаголовков(Знач Заголовки) + + СписокЗаголовков = Новый СписокЗначений; + + Для Каждого Заголовок Из Заголовки Цикл + + ТекущийКлюч = Заголовок.Ключ; + ТекущийКлючН = нРег(ТекущийКлюч); + + Если Не СтрНачинаетсяС(ТекущийКлючН, "host") И Не СтрНачинаетсяС(ТекущийКлючН, "x-amz") Тогда + Продолжить; + КонецЕсли; + + СтрокаЗаголовка = нРег(ТекущийКлюч); + СписокЗаголовков.Добавить(СтрокаЗаголовка); + + КонецЦикла; + + СписокЗаголовков.СортироватьПоЗначению(); + + СтрокаЗаголовков = СтрСоединить(СписокЗаголовков.ВыгрузитьЗначения(), ";"); + + Возврат СтрокаЗаголовков; + +КонецФункции + +Функция ПолучитьURLСервиса(ОсновныеДанные) + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОсновныеДанные); + + Если ТипЗнч(ОсновныеДанные) = Тип("Массив") Тогда + ВызватьИсключение "Ошибка получения авторизационных данных из структуры"; + КонецЕсли; + + URL = ОсновныеДанные["URL"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); + + Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда + URL = URL + "/"; + КонецЕсли; + + Возврат URL; + +КонецФункции + +#КонецОбласти + +#Область Прочее + +Функция ОтправитьЗапрос(Знач Метод + , Знач ОсновныеДанные + , Знач Тело = Неопределено + , Знач ОжидаютсяДвоичные = Ложь + , Знач Заголовки = Неопределено) + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + ПроверитьОсновныеДанные(ОсновныеДанные_); + + AccessKey = ОсновныеДанные_["AccessKey"]; + SecretKey = ОсновныеДанные_["SecretKey"]; + Region = ОсновныеДанные_["Region"]; + Service = ОсновныеДанные_["Service"]; + URL = ОсновныеДанные_["URL"]; + + Ответ = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьЗаголовки(Заголовки) + .УстановитьДвоичноеТело(Тело) + .ДобавитьAWS4Авторизацию(AccessKey, SecretKey, Region, Service) + .ОбработатьЗапрос(Метод) + .ВернутьОтвет(Ложь, Истина); + + Ответ = ОформитьОтвет(Ответ, ОжидаютсяДвоичные); + + Возврат Ответ; + +КонецФункции + +Функция УправлениеБакетом(Знач Имя, Знач ОсновныеДанные, Знач Каталог, Знач Метод, Знач Заголовки) + + ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные); + + URL = ПолучитьURLСервиса(ОсновныеДанные_); + URL = СформироватьURLБакета(URL, Имя, Каталог); + + ОсновныеДанные_.Вставить("URL", URL); + + Ответ = ОтправитьЗапросБезТела(Метод, ОсновныеДанные_, , Заголовки); + + Возврат Ответ; + +КонецФункции + +Функция ПолучитьОбъектЧастями(Знач ОсновныеДанные + , Знач Заголовки + , Знач ПутьСохранения + , Знач Размеры) + + ОбщийРазмер = Размеры["object"]; + РазмерУчастка = Размеры["chunk"]; + ШаблонЗаголовка = "bytes=%1-%2"; + НачалоУчастка = 0; + Попытки = 3; + + МассивЗаголовков = Новый Массив; + + Пока НачалоУчастка < ОбщийРазмер - РазмерУчастка Цикл + + КонецУчастка = НачалоУчастка + РазмерУчастка - 1; + + НачалоСтр = OPI_Инструменты.ЧислоВСтроку(НачалоУчастка); + КонецСтр = OPI_Инструменты.ЧислоВСтроку(КонецУчастка); + + Заголовок = СтрШаблон(ШаблонЗаголовка, НачалоСтр, КонецСтр); + МассивЗаголовков.Добавить(Новый Структура("Заголовок,Позиция", Заголовок, КонецСтр)); + + НачалоУчастка = КонецУчастка + 1; + + КонецЦикла; + + Если НачалоУчастка < ОбщийРазмер Тогда + + Заголовок = "bytes=" + OPI_Инструменты.ЧислоВСтроку(НачалоУчастка) + "-"; + + СтруктураИнформации = Новый Структура("Заголовок,Позиция", Заголовок, ОбщийРазмер); + МассивЗаголовков.Добавить(СтруктураИнформации); + + КонецЕсли; + + ПотокФайла = OPI_Инструменты.СоздатьПоток(ПутьСохранения); + ЗаписьФайла = Новый ЗаписьДанных(ПотокФайла); + + Для Каждого ТекущийНабор Из МассивЗаголовков Цикл + + Для Н = 1 По Попытки Цикл + + Попытка + + ЗаголовокУчастка = ТекущийНабор["Заголовок"]; + ТекущаяПозиция = ТекущийНабор["Позиция"]; + + ЗаголовокИсточника = Новый Соответствие(); + ЗаголовокИсточника.Вставить("Range", ЗаголовокУчастка); + ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокИсточника); + + ПромежуточныйРезультат = ПолучитьОбъектЦеликом(ОсновныеДанные, ЗаголовокИсточника); + ЗаписьФайла.Записать(ПромежуточныйРезультат); + + КБайт = 1024; + МБайт = КБайт * КБайт; + OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, "МБ", МБайт); + + ВыполнитьСборкуМусора(); + ОсвободитьОбъект(ПромежуточныйРезультат); + + Прервать; + + Исключение + + Если Н = Попытки Тогда + + Сообщить(ОписаниеОшибки()); + ВызватьИсключение "Не удалось получить файл!"; + + Иначе + Сообщить("Ошибка загрузки участка " + Строка(Н) + "/" + Строка(Попытки)); + Продолжить; + КонецЕсли; + + КонецПопытки; + + КонецЦикла; + + КонецЦикла; + + ЗаписьФайла.Закрыть(); + + ПолученныйОбъект = ЗакрытьПотокИПолучитьДанные(ПотокФайла, ПутьСохранения); + + Возврат ПолученныйОбъект; + +КонецФункции + +Функция ПолучитьОбъектЦеликом(Знач ОсновныеДанные + , Знач Заголовки + , Знач ПутьСохранения = "") + + Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Истина, Заголовки); + + Если ЗначениеЗаполнено(ПутьСохранения) Тогда + Ответ.Записать(ПутьСохранения); + ФайлОтвета = Новый Файл(ПутьСохранения); + Возврат ФайлОтвета.ПолноеИмя; + Иначе + Возврат Ответ; + КонецЕсли; + +КонецФункции + +Функция ЗагрузитьОбъектЧастями(Знач Наименование + , Знач Бакет + , Знач Содержимое + , Знач ОсновныеДанные + , Знач Заголовки + , Знач Размеры) + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеИлиПоток(Содержимое); + + НачалоЗагрузки = ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, Заголовки); + + ПолеID = "response.InitiateMultipartUploadResult.UploadId"; + IDЗагрузки = Неопределено; + ОбщийРазмер = Размеры["object"]; + РазмерУчастка = Размеры["chunk"]; + ПрочитаноБайт = 0; + НомерЧасти = 1; + + Если Не OPI_Инструменты.ПолеКоллекцииСуществует(НачалоЗагрузки, ПолеID, IDЗагрузки) Тогда + Возврат НачалоЗагрузки; + КонецЕсли; + + ЧтениеДанных = Новый ЧтениеДанных(Содержимое); + ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); + Ответ = Новый Соответствие; + МассивТегов = Новый Массив; + + Ошибка = Ложь; + Попытки = 3; + ПоследнийКодУспеха = 299; + + Пока ПрочитаноБайт < ОбщийРазмер Цикл + + Для Н = 1 По Попытки Цикл + + Попытка + + Результат = ЧтениеДанных.Прочитать(РазмерУчастка); + ТекущиеДанные = Результат.ПолучитьДвоичныеДанные(); + + Если ТекущиеДанные.Размер() = 0 Тогда + Прервать; + КонецЕсли; + + Ответ = ЗагрузитьЧастьОбъекта(Наименование + , Бакет + , ОсновныеДанные + , IDЗагрузки + , НомерЧасти + , ТекущиеДанные); + + Если Ответ["status"] > ПоследнийКодУспеха Тогда + ВызватьИсключение "Сервер вернул статус " + Строка(Ответ["status"]); + КонецЕсли; + + ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); + + ETag = Ответ["headers"]["Etag"]; + ETag = ?(ETag = Неопределено, Ответ["headers"]["ETag"], ETag); + + МассивТегов.Добавить(ETag); + + КБайт = 1024; + МБайт = КБайт * КБайт; + OPI_Инструменты.ИнформацияОПрогрессе(ПрочитаноБайт, ОбщийРазмер, "МБ", МБайт); + + ВыполнитьСборкуМусора(); + ОсвободитьОбъект(ТекущиеДанные); + + Прервать; + + Исключение + + Если Н = Попытки Тогда + + Сообщить(OPI_Инструменты.JSONСтрокой(Ответ)); + Сообщить("Не удалось загрузить часть файла! Отмена загрузки ID:" + IDЗагрузки + "..."); + + Ошибка = Истина; + Прервать; + + Иначе + + Сообщить("Ошибка загрузки участка " + Строка(Н) + "/" + Строка(Попытки)); + Сообщить(ОписаниеОшибки()); + Продолжить; + + КонецЕсли; + + КонецПопытки; + + КонецЦикла; + + НомерЧасти = НомерЧасти + 1; + + КонецЦикла; + + Если Ошибка Тогда + Ответ = ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки); + Иначе + Ответ = ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов); + КонецЕсли; + + Возврат Ответ; + +КонецФункции + +Функция ОформитьОтвет(Знач Ответ, Знач ОжидаютсяДвоичные = Ложь) + + Статус = Ответ.КодСостояния; + Заголовки = Ответ.Заголовки; + ПоследнийКодУспеха = 299; + + Если Не ОжидаютсяДвоичные Или Статус > ПоследнийКодУспеха Тогда + + ДанныеОтвета = Новый Структура; + ДанныеТела = Новый Структура; + + ТелоОтветаИзначальное = Ответ.ПолучитьТелоКакСтроку(); + ТелоОтветаДляОбработки = СокрЛП(ТелоОтветаИзначальное); + + Если ЗначениеЗаполнено(ТелоОтветаДляОбработки) Тогда + + Попытка + ДанныеТела = OPI_Инструменты.ОбработатьXML(ТелоОтветаДляОбработки); + Исключение + ДанныеТела.Вставить("notValidXMLMessage", ТелоОтветаИзначальное); + КонецПопытки; + + КонецЕсли; + + ДанныеОтвета = Новый Структура; + ДанныеОтвета.Вставить("status" , Статус); + ДанныеОтвета.Вставить("response", ДанныеТела); + ДанныеОтвета.Вставить("headers" , Заголовки); + + Иначе + ДанныеОтвета = Ответ.ПолучитьТелоКакДвоичныеДанные(); + КонецЕсли; + + Возврат ДанныеОтвета; + +КонецФункции + +Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); + OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог); + + Признак = "://"; + + Если Каталог Тогда + URL = URL + Имя; + Иначе + + Если СтрНайти(URL, Признак) Тогда + URL = СтрЗаменить(URL, Признак, Признак + Имя + "."); + Иначе + URL = Имя + "." + URL; + КонецЕсли; + + КонецЕсли; + + Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда + URL = URL + "/"; + КонецЕсли; + + Возврат URL; + +КонецФункции + +Функция СформироватьСтруктуруТегов(Знач Теги) + + ТекстОшибки = "Некорректный формат тегов. Ожидается коллекция ключ-значение"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Теги, ТекстОшибки); + + МассивТегов = Новый Массив; + + Для Каждого Тег Из Теги Цикл + + СтруктураТега = Новый Структура; + СтруктураТега.Вставить("Key" , Строка(Тег.Ключ)); + СтруктураТега.Вставить("Value", Строка(Тег.Значение)); + + МассивТегов.Добавить(Новый Структура("Tag", СтруктураТега)); + + КонецЦикла; + + ФинальнаяСтруктура = Новый Структура; + НаборТегов = Новый Структура; + + НаборТегов.Вставить("TagSet", МассивТегов); + ФинальнаяСтруктура.Вставить("Tagging", НаборТегов); + + Возврат ФинальнаяСтруктура; + +КонецФункции + +Функция СформироватьСтруктуруНастроекВерсионирования(Знач Статус, Знач УдалениеMFA) + + СтруктураНастроек = Новый Структура; + + Если ЗначениеЗаполнено(Статус) Тогда + + OPI_ПреобразованиеТипов.ПолучитьБулево(Статус); + СтруктураНастроек.Вставить("Status", ?(Статус, "Enabled", "Suspended")); + + КонецЕсли; + + Если ЗначениеЗаполнено(УдалениеMFA) Тогда + + OPI_ПреобразованиеТипов.ПолучитьБулево(УдалениеMFA); + СтруктураНастроек.Вставить("MfaDelete", ?(УдалениеMFA, "Enabled", "Disabled")); + + КонецЕсли; + + ФинальнаяСтруктура = Новый Структура("VersioningConfiguration", СтруктураНастроек); + + Возврат ФинальнаяСтруктура; + +КонецФункции + +Функция ПолучитьРазмерСодержимого(Знач Содержимое) + + Если ТипЗнч(Содержимое) = Тип("Строка") Тогда + + ФайлСодержимого = Новый Файл(Содержимое); + Возврат ФайлСодержимого.Размер(); + + Иначе + + Возврат Содержимое.Размер(); + + КонецЕсли; + +КонецФункции + +Функция ЗакрытьПотокИПолучитьДанные(Знач ПотокФайла, Знач ПутьСохранения) + + Если ТипЗнч(ПотокФайла) = Тип("ПотокВПамяти") Тогда + Возврат ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные(); + Иначе + ПотокФайла.Закрыть(); + ФайлОтвета = Новый Файл(ПутьСохранения); + Возврат ФайлОтвета.ПолноеИмя; + КонецЕсли; + +КонецФункции + +Процедура ПроверитьОсновныеДанные(ОсновныеДанные) + + ТекстОшибки = "Ошибка получения авторизационных данных из структуры"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ОсновныеДанные, ТекстОшибки); + + МассивНеобходимыхПолей = Новый Массив; + МассивНеобходимыхПолей.Добавить("AccessKey"); + МассивНеобходимыхПолей.Добавить("SecretKey"); + МассивНеобходимыхПолей.Добавить("Region"); + МассивНеобходимыхПолей.Добавить("Service"); + МассивНеобходимыхПолей.Добавить("URL"); + + ОтсутствующиеПоля = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ОсновныеДанные, МассивНеобходимыхПолей); + + Если ОтсутствующиеПоля.Количество() > 0 Тогда + ВызватьИсключение "Отсутствуют необходимые данные авторизации: " + СтрСоединить(ОтсутствующиеПоля, ", "); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьДополнительныеЗаголовки(Приемник, Знач Заголовки) + + Если Не ЗначениеЗаполнено(Заголовки) Тогда + Возврат; + КонецЕсли; + + ТипПриемника = ТипЗнч(Приемник); + ТекстОшибки = "Ошибка установки дополнительных заголовков"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки); + + Если ТипПриемника = Тип("HTTPЗапрос") Тогда + + Для Каждого Заголовок Из Заголовки Цикл + Приемник.Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение); + КонецЦикла; + + Иначе + + Если Не ЗначениеЗаполнено(Приемник) Тогда + Приемник = Новый Соответствие; + Иначе + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Приемник, ТекстОшибки); + КонецЕсли; + + Для Каждого Заголовок Из Заголовки Цикл + Приемник.Вставить(Заголовок.Ключ, Заголовок.Значение); + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +Процедура ЗаполнитьURLОбъекта(ОсновныеДанные, Наименование, Бакет, Версия = "") + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование); + + URL = ПолучитьURLСервиса(ОсновныеДанные); + URL = СформироватьURLБакета(URL, Бакет, Ложь); + URL = URL + Наименование; + + Если ЗначениеЗаполнено(Версия) Тогда + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия); + URL = URL + "?versionId=" + Версия; + + КонецЕсли; + + ОсновныеДанные.Вставить("URL", URL); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_SQLite.os b/src/ru/OInt/core/Modules/OPI_SQLite.os index 95088a075d..09bbdc6442 100644 --- a/src/ru/OInt/core/Modules/OPI_SQLite.os +++ b/src/ru/OInt/core/Modules/OPI_SQLite.os @@ -1,540 +1,475 @@ -// OneScript: ./OInt/core/Modules/OPI_SQLite.os -// Lib: SQLite -// CLI: sqlite -// Keywords: sqlite - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params -//@skip-check constructor-function-return-section - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область ОсновныеМетоды - -// Открыть соединение !NOCLI -// Создает подключение к указанной базе -// -// Параметры: -// База - Строка - Путь к базе. In memory, если не заполнено - db -// -// Возвращаемое значение: -// Произвольный - Объект коннектора или структура с информацией об ошибке -Функция ОткрытьСоединение(Знач База = "") Экспорт - - Если ЭтоКоннектор(База) Тогда - Возврат База; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(База); - OPI_Инструменты.ВернутьУправляющиеПоследовательности(База); - - Коннектор = OPI_Компоненты.ПолучитьКомпоненту("SQLite"); - - Коннектор.Database = База; - - Результат = Коннектор.Connect(); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); - - Возврат ?(Результат["result"], Коннектор, Результат); - -КонецФункции - -// Закрыть соединение !NOCLI -// Явно закрывает переданное соединение -// -// Параметры: -// Соединение - Произвольный - Объект компоненты с открытым соединением - db -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Результат закрытия соединения -Функция ЗакрытьСоединение(Знач Соединение) Экспорт - - Если ЭтоКоннектор(Соединение) Тогда - - Результат = Соединение.Close(); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); - - Иначе - - Результат = Новый Структура("result,error", Ложь, "It's not a connection"); - - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// Это коннектор !NOCLI -// Проверяет, что значение является объектом внешней компоненты SQLite -// -// Параметры: -// Значение - Произвольный - Значение для проверки - value -// -// Возвращаемое значение: -// Булево - Это коннектор -Функция ЭтоКоннектор(Знач Значение) Экспорт - - Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_SQLite.Main"; - -КонецФункции - -// Выполнить запрос SQL -// Выполняет произвольный SQL запрос -// -// Примечание: -// Доступные типы параметров: Cтрока, Число, Дата, Булево, ДвоичныеДанные.^^ -// Двоичные данные могут также быть переданы как структура `{'blob':Путь к файлу}`. Возвращаются значения двоичных данных (BLOB)^^ -// в виде `{'blob':Base64 строка}` -// Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^ -// Для остальных запросов возвращается `result:true` или `false` с текстом ошибки -// При выполнении нескольких запросов в рамках одного соединения, расширения лучше подключить один раз при помощи функции `ПодключитьРасширение` -// -// Параметры: -// ТекстЗапроса - Строка - Текст запроса к базе - sql -// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params -// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db -// Расширения - Соответствие Из КлючИЗначение - Расширения: Ключ > путь или данные расширения, Значение > точка входа - exts -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса - , Знач Параметры = "" - , Знач ФорсироватьРезультат = Ложь - , Знач Соединение = "" - , Знач Расширения = Неопределено) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина); - OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат); - - Параметры_ = ОбработатьПараметры(Параметры); - Коннектор = ОткрытьСоединение(Соединение); - - Если ТипЗнч(Коннектор) <> Тип("AddIn.OPI_SQLite.Main") Тогда - Возврат Коннектор; - КонецЕсли; - - Если ЗначениеЗаполнено(Расширения) Тогда - - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Расширения, "Некорректная коллекция расширений!"); - - Для Каждого Расширение Из Расширения Цикл - - ПодключениеРасширения = ПодключитьРасширение(Расширение.Ключ, Расширение.Значение, Коннектор); - - Если Не ПодключениеРасширения["result"] Тогда - Возврат ПодключениеРасширения; - КонецЕсли; - - КонецЦикла; - - КонецЕсли; - - Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат); - - Возврат Результат; - -КонецФункции - -// Подключить расширение !NOCLI -// Подключает расширение SQLite для указанного соединения -// -// Примечание: -// Расширение активно только в рамках соединения. При каждом новом соединении его необходимо подключать заново -// Аналогично использованию параметра `Расширения` (`exts` в CLI) функции `ВыполнитьЗапросSQL` -// -// Параметры: -// Расширение - Строка, ДвоичныеДанные - Данные или путь к расширению - ext -// ТочкаВхода - Строка - Точка входа расширения, если необходима - point -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат подключения расширения -Функция ПодключитьРасширение(Знач Расширение, Знач ТочкаВхода = "", Знач Соединение = "") Экспорт - - Расширение_ = Расширение; - РасширениеФайла = ?(OPI_Инструменты.ЭтоWindows(), "dll", "so"); - - OPI_ПреобразованиеТипов.ПолучитьФайлНаДиске(Расширение_, РасширениеФайла); - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТочкаВхода); - - Временный = Расширение_["Временный"]; - ПутьКФайлу = Расширение_["Путь"]; - Коннектор = ОткрытьСоединение(Соединение); - - Если ТипЗнч(Коннектор) <> Тип("AddIn.OPI_SQLite.Main") Тогда - Возврат Коннектор; - КонецЕсли; - - Результат = Коннектор.LoadExtension(ПутьКФайлу, ТочкаВхода); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат); - - Если Временный Тогда - - Попытка - УдалитьФайлы(ПутьКФайлу); - Исключение - Возврат Результат; - КонецПопытки; - - КонецЕсли; - - Возврат Результат; - -КонецФункции - -#КонецОбласти - -#Область ORM - -// Получить информацию о таблице -// Получает информацию о таблице -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "") Экспорт - - Результат = OPI_ЗапросыSQL.ПолучитьСтруктуруТаблицы(OPI_SQLite, Таблица, Соединение); - Возврат Результат; - -КонецФункции - -// Создать таблицу -// Создает пустую таблицу в базе -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// СтруктураКолонок - Структура Из КлючИЗначение - Структура колонок: Ключ > имя, Значение > Тип данных - cols -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт - - Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_SQLite, Таблица, СтруктураКолонок, Соединение); - Возврат Результат; - -КонецФункции - -// Добавить записи -// Добавляет записи в таблицу -// -// Примечание: -// Двоичные данные могут также быть переданы как структура `{'blob':Путь к файлу}` -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// МассивДанных - Массив Из Структура - Массив структур данных строк: Ключ > поле, Значение > значение поля - rows -// Транзакция - Булево - Истина > добавление записей в транзакции с откатом при ошибке - trn -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "") Экспорт - - Результат = OPI_ЗапросыSQL.ДобавитьЗаписи(OPI_SQLite, Таблица, МассивДанных, Транзакция, Соединение); - Возврат Результат; - -КонецФункции - -// Получить записи -// Получает записи из выбранной таблицы -// -// Примечание: -// Значения типа Двоичные данные (BLOB) возвращаются в виде `{'blob':Base64 строка}` -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Поля - Массив Из Строка - Поля для выборки - fields -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Сортировка - Структура Из КлючИЗначение - Сортировка: Ключ > поле, Значение > направление (ASC, DESC) - order -// Количество - Число - Ограничение количества получаемых строк - limit -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ПолучитьЗаписи(Знач Таблица - , Знач Поля = "*" - , Знач Фильтры = "" - , Знач Сортировка = "" - , Знач Количество = "" - , Знач Соединение = "") Экспорт - - Результат = OPI_ЗапросыSQL.ПолучитьЗаписи(OPI_SQLite, Таблица, Поля, Фильтры, Сортировка, Количество, Соединение); - Возврат Результат; - -КонецФункции - -// Обновить записи -// Обновляет значение записей по выбранным критериям -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// СтруктураЗначений - Структура Из КлючИЗначение - Структура значений: Ключ > поле, Значение > значение поля - values -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ОбновитьЗаписи(Знач Таблица, Знач СтруктураЗначений, Знач Фильтры = "", Знач Соединение = "") Экспорт - - Результат = OPI_ЗапросыSQL.ОбновитьЗаписи(OPI_SQLite, Таблица, СтруктураЗначений, Фильтры, Соединение); - Возврат Результат; - -КонецФункции - -// Удалить записи -// Удаляет записи из таблицы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, Фильтры, Соединение); - Возврат Результат; - -КонецФункции - -// Удалить таблицу -// Удаляет таблицу из базы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_SQLite, Таблица, Соединение); - Возврат Результат; - -КонецФункции - -// Очистить таблицу -// Очищает таблицу базы -// -// Параметры: -// Таблица - Строка - Имя таблицы - table -// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - Результат выполнения запроса -Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт - - Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, , Соединение); - Возврат Результат; - -КонецФункции - -// Получить структуру фильтра записей -// Получает структуру шаблон для фильтрации записей в запросах ORM -// -// Примечание: -// Использование признака `raw` необходимо для составных конструкций, вроде `BEETWEEN`.^^ -// Например: при `raw:false` фильтр `type:BETWEEN` `value:10 AND 20` будет интерпритирован как `BETWEEN ?1 `^^ -// где `?1 = "10 AND 20"`, что приведет к ошибке.^^ -// В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Элемент фильтра записей -Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт - - Возврат OPI_ЗапросыSQL.ПолучитьСтруктуруФильтраЗаписей(Пустая); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -Функция ПолучитьОсобенности() Экспорт - - Особенности = Новый Соответствие; - Особенности.Вставить("НумерацияПараметров", Истина); - Особенности.Вставить("МаркерПараметров" , "?"); - Особенности.Вставить("СУБД" , "sqlite"); - - Возврат Особенности; - -КонецФункции - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ОбработатьПараметры(Знач Параметры) - - Если Не ЗначениеЗаполнено(Параметры) Тогда - Возврат "[]"; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры); - - Для Н = 0 По Параметры.ВГраница() Цикл - - ТекущийПараметр = Параметры[Н]; - - Если ТипЗнч(ТекущийПараметр) = Тип("ДвоичныеДанные") Тогда - - ТекущийПараметр = Новый Структура("blob", Base64Строка(ТекущийПараметр)); - - ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "blob") Тогда - - ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр); - - ИначеЕсли ТипЗнч(ТекущийПараметр) = Тип("Дата") Тогда - - ТекущийПараметр = Формат(ТекущийПараметр, "ДФ='yyyy-MM-dd HH:MM:ss'"); - - Иначе - - Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр); - КонецЕсли; - - КонецЕсли; - - Параметры[Н] = ТекущийПараметр; - - КонецЦикла; - - Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь); - - Возврат Параметры_; - -КонецФункции - -Функция ОбработатьСтруктуруBlob(Знач Значение) - - ЗначениеДанных = Значение["blob"]; - ФайлДанных = Новый Файл(Строка(ЗначениеДанных)); - - Если ФайлДанных.Существует() Тогда - - ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных)); - Значение = Новый Структура("blob", Base64Строка(ТекущиеДанные)); - - КонецЕсли; - - Возврат Значение; - -КонецФункции - -#КонецОбласти - - -#Region Alternate - -Function CreateConnection(Val Base = "") Export - Return ОткрытьСоединение(Base); -EndFunction - -Function CloseConnection(Val Connection) Export - Return ЗакрытьСоединение(Connection); -EndFunction - -Function IsConnector(Val Value) Export - Return ЭтоКоннектор(Value); -EndFunction - -Function ExecuteSQLQuery(Val QueryText, Val Parameters = "", Val ForceResult = False, Val Connection = "", Val Extensions = Undefined) Export - Return ВыполнитьЗапросSQL(QueryText, Parameters, ForceResult, Connection, Extensions); -EndFunction - -Function ConnectExtension(Val Extension, Val EntryPoint = "", Val Connection = "") Export - Return ПодключитьРасширение(Extension, EntryPoint, Connection); -EndFunction - -Function GetTableInformation(Val Table, Val Connection = "") Export - Return ПолучитьИнформациюОТаблице(Table, Connection); -EndFunction - -Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "") Export - Return СоздатьТаблицу(Table, ColoumnsStruct, Connection); -EndFunction - -Function AddRecords(Val Table, Val DataArray, Val Transaction = True, Val Connection = "") Export - Return ДобавитьЗаписи(Table, DataArray, Transaction, Connection); -EndFunction - -Function GetRecords(Val Table, Val Fields = "*", Val Filters = "", Val Sort = "", Val Count = "", Val Connection = "") Export - Return ПолучитьЗаписи(Table, Fields, Filters, Sort, Count, Connection); -EndFunction - -Function UpdateRecords(Val Table, Val ValueStructure, Val Filters = "", Val Connection = "") Export - Return ОбновитьЗаписи(Table, ValueStructure, Filters, Connection); -EndFunction - -Function DeleteRecords(Val Table, Val Filters = "", Val Connection = "") Export - Return УдалитьЗаписи(Table, Filters, Connection); -EndFunction - -Function DeleteTable(Val Table, Val Connection = "") Export - Return УдалитьТаблицу(Table, Connection); -EndFunction - -Function ClearTable(Val Table, Val Connection = "") Export - Return ОчиститьТаблицу(Table, Connection); -EndFunction - -Function GetRecordsFilterStrucutre(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраЗаписей(Clear); -EndFunction - -Function GetFeatures() Export - Return ПолучитьОсобенности(); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_SQLite.os +// Lib: SQLite +// CLI: sqlite +// Keywords: sqlite + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params +//@skip-check constructor-function-return-section + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область ОсновныеМетоды + +// Открыть соединение !NOCLI +// Создает подключение к указанной базе +// +// Параметры: +// База - Строка - Путь к базе. In memory, если не заполнено - db +// +// Возвращаемое значение: +// Произвольный - Объект коннектора или структура с информацией об ошибке +Функция ОткрытьСоединение(Знач База = "") Экспорт + + Если ЭтоКоннектор(База) Тогда + Возврат База; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(База); + OPI_Инструменты.ВернутьУправляющиеПоследовательности(База); + + Коннектор = OPI_Компоненты.ПолучитьКомпоненту("SQLite"); + + Коннектор.Database = База; + + Результат = Коннектор.Connect(); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); + + Возврат ?(Результат["result"], Коннектор, Результат); + +КонецФункции + +// Закрыть соединение !NOCLI +// Явно закрывает переданное соединение +// +// Параметры: +// Соединение - Произвольный - Объект компоненты с открытым соединением - db +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Результат закрытия соединения +Функция ЗакрытьСоединение(Знач Соединение) Экспорт + + Если ЭтоКоннектор(Соединение) Тогда + + Результат = Соединение.Close(); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); + + Иначе + + Результат = Новый Структура("result,error", Ложь, "It's not a connection"); + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Это коннектор !NOCLI +// Проверяет, что значение является объектом внешней компоненты SQLite +// +// Параметры: +// Значение - Произвольный - Значение для проверки - value +// +// Возвращаемое значение: +// Булево - Это коннектор +Функция ЭтоКоннектор(Знач Значение) Экспорт + + Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_SQLite.Main"; + +КонецФункции + +// Выполнить запрос SQL +// Выполняет произвольный SQL запрос +// +// Примечание: +// Доступные типы параметров: Cтрока, Число, Дата, Булево, ДвоичныеДанные.^^ +// Двоичные данные могут также быть переданы как структура `{'blob':Путь к файлу}`. Возвращаются значения двоичных данных (BLOB)^^ +// в виде `{'blob':Base64 строка}` +// Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT`^^ +// Для остальных запросов возвращается `result:true` или `false` с текстом ошибки +// При выполнении нескольких запросов в рамках одного соединения, расширения лучше подключить один раз при помощи функции `ПодключитьРасширение` +// +// Параметры: +// ТекстЗапроса - Строка - Текст запроса к базе - sql +// Параметры - Массив Из Произвольный - Массив позиционных параметров запроса - params +// ФорсироватьРезультат - Булево - Включает попытку получения результата, даже для не SELECT запросов - force +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db +// Расширения - Соответствие Из КлючИЗначение - Расширения: Ключ > путь или данные расширения, Значение > точка входа - exts +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса + , Знач Параметры = "" + , Знач ФорсироватьРезультат = Ложь + , Знач Соединение = "" + , Знач Расширения = Неопределено) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина); + OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат); + + Параметры_ = ОбработатьПараметры(Параметры); + Коннектор = ОткрытьСоединение(Соединение); + + Если ТипЗнч(Коннектор) <> Тип("AddIn.OPI_SQLite.Main") Тогда + Возврат Коннектор; + КонецЕсли; + + Если ЗначениеЗаполнено(Расширения) Тогда + + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Расширения, "Некорректная коллекция расширений!"); + + Для Каждого Расширение Из Расширения Цикл + + ПодключениеРасширения = ПодключитьРасширение(Расширение.Ключ, Расширение.Значение, Коннектор); + + Если Не ПодключениеРасширения["result"] Тогда + Возврат ПодключениеРасширения; + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат); + + Возврат Результат; + +КонецФункции + +// Подключить расширение !NOCLI +// Подключает расширение SQLite для указанного соединения +// +// Примечание: +// Расширение активно только в рамках соединения. При каждом новом соединении его необходимо подключать заново +// Аналогично использованию параметра `Расширения` (`exts` в CLI) функции `ВыполнитьЗапросSQL` +// +// Параметры: +// Расширение - Строка, ДвоичныеДанные - Данные или путь к расширению - ext +// ТочкаВхода - Строка - Точка входа расширения, если необходима - point +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе. In memory, если не заполнено - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат подключения расширения +Функция ПодключитьРасширение(Знач Расширение, Знач ТочкаВхода = "", Знач Соединение = "") Экспорт + + Расширение_ = Расширение; + РасширениеФайла = ?(OPI_Инструменты.ЭтоWindows(), "dll", "so"); + + OPI_ПреобразованиеТипов.ПолучитьФайлНаДиске(Расширение_, РасширениеФайла); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТочкаВхода); + + Временный = Расширение_["Временный"]; + ПутьКФайлу = Расширение_["Путь"]; + Коннектор = ОткрытьСоединение(Соединение); + + Если ТипЗнч(Коннектор) <> Тип("AddIn.OPI_SQLite.Main") Тогда + Возврат Коннектор; + КонецЕсли; + + Результат = Коннектор.LoadExtension(ПутьКФайлу, ТочкаВхода); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат); + + Если Временный Тогда + + Попытка + УдалитьФайлы(ПутьКФайлу); + Исключение + Возврат Результат; + КонецПопытки; + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область ORM + +// Получить информацию о таблице +// Получает информацию о таблице +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ПолучитьИнформациюОТаблице(Знач Таблица, Знач Соединение = "") Экспорт + + Результат = OPI_ЗапросыSQL.ПолучитьСтруктуруТаблицы(OPI_SQLite, Таблица, Соединение); + Возврат Результат; + +КонецФункции + +// Создать таблицу +// Создает пустую таблицу в базе +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// СтруктураКолонок - Структура Из КлючИЗначение - Структура колонок: Ключ > имя, Значение > Тип данных - cols +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт + + Результат = OPI_ЗапросыSQL.СоздатьТаблицу(OPI_SQLite, Таблица, СтруктураКолонок, Соединение); + Возврат Результат; + +КонецФункции + +// Добавить записи +// Добавляет записи в таблицу +// +// Примечание: +// Двоичные данные могут также быть переданы как структура `{'blob':Путь к файлу}` +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// МассивДанных - Массив Из Структура - Массив структур данных строк: Ключ > поле, Значение > значение поля - rows +// Транзакция - Булево - Истина > добавление записей в транзакции с откатом при ошибке - trn +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "") Экспорт + + Результат = OPI_ЗапросыSQL.ДобавитьЗаписи(OPI_SQLite, Таблица, МассивДанных, Транзакция, Соединение); + Возврат Результат; + +КонецФункции + +// Получить записи +// Получает записи из выбранной таблицы +// +// Примечание: +// Значения типа Двоичные данные (BLOB) возвращаются в виде `{'blob':Base64 строка}` +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Поля - Массив Из Строка - Поля для выборки - fields +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Сортировка - Структура Из КлючИЗначение - Сортировка: Ключ > поле, Значение > направление (ASC, DESC) - order +// Количество - Число - Ограничение количества получаемых строк - limit +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ПолучитьЗаписи(Знач Таблица + , Знач Поля = "*" + , Знач Фильтры = "" + , Знач Сортировка = "" + , Знач Количество = "" + , Знач Соединение = "") Экспорт + + Результат = OPI_ЗапросыSQL.ПолучитьЗаписи(OPI_SQLite, Таблица, Поля, Фильтры, Сортировка, Количество, Соединение); + Возврат Результат; + +КонецФункции + +// Обновить записи +// Обновляет значение записей по выбранным критериям +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// СтруктураЗначений - Структура Из КлючИЗначение - Структура значений: Ключ > поле, Значение > значение поля - values +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ОбновитьЗаписи(Знач Таблица, Знач СтруктураЗначений, Знач Фильтры = "", Знач Соединение = "") Экспорт + + Результат = OPI_ЗапросыSQL.ОбновитьЗаписи(OPI_SQLite, Таблица, СтруктураЗначений, Фильтры, Соединение); + Возврат Результат; + +КонецФункции + +// Удалить записи +// Удаляет записи из таблицы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, Фильтры, Соединение); + Возврат Результат; + +КонецФункции + +// Удалить таблицу +// Удаляет таблицу из базы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_SQLite, Таблица, Соединение); + Возврат Результат; + +КонецФункции + +// Очистить таблицу +// Очищает таблицу базы +// +// Параметры: +// Таблица - Строка - Имя таблицы - table +// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - Результат выполнения запроса +Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт + + Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, , Соединение); + Возврат Результат; + +КонецФункции + +// Получить структуру фильтра записей +// Получает структуру шаблон для фильтрации записей в запросах ORM +// +// Примечание: +// Использование признака `raw` необходимо для составных конструкций, вроде `BEETWEEN`.^^ +// Например: при `raw:false` фильтр `type:BETWEEN` `value:10 AND 20` будет интерпритирован как `BETWEEN ?1 `^^ +// где `?1 = "10 AND 20"`, что приведет к ошибке.^^ +// В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Элемент фильтра записей +Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт + + Возврат OPI_ЗапросыSQL.ПолучитьСтруктуруФильтраЗаписей(Пустая); + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ПолучитьОсобенности() Экспорт + + Особенности = Новый Соответствие; + Особенности.Вставить("НумерацияПараметров", Истина); + Особенности.Вставить("МаркерПараметров" , "?"); + Особенности.Вставить("СУБД" , "sqlite"); + + Возврат Особенности; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ОбработатьПараметры(Знач Параметры) + + Если Не ЗначениеЗаполнено(Параметры) Тогда + Возврат "[]"; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры); + + Для Н = 0 По Параметры.ВГраница() Цикл + + ТекущийПараметр = Параметры[Н]; + + Если ТипЗнч(ТекущийПараметр) = Тип("ДвоичныеДанные") Тогда + + ТекущийПараметр = Новый Структура("blob", Base64Строка(ТекущийПараметр)); + + ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "blob") Тогда + + ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр); + + ИначеЕсли ТипЗнч(ТекущийПараметр) = Тип("Дата") Тогда + + ТекущийПараметр = Формат(ТекущийПараметр, "ДФ='yyyy-MM-dd HH:MM:ss'"); + + Иначе + + Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр); + КонецЕсли; + + КонецЕсли; + + Параметры[Н] = ТекущийПараметр; + + КонецЦикла; + + Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь); + + Возврат Параметры_; + +КонецФункции + +Функция ОбработатьСтруктуруBlob(Знач Значение) + + ЗначениеДанных = Значение["blob"]; + ФайлДанных = Новый Файл(Строка(ЗначениеДанных)); + + Если ФайлДанных.Существует() Тогда + + ТекущиеДанные = Новый ДвоичныеДанные(Строка(ЗначениеДанных)); + Значение = Новый Структура("blob", Base64Строка(ТекущиеДанные)); + + КонецЕсли; + + Возврат Значение; + +КонецФункции + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_Slack.os b/src/ru/OInt/core/Modules/OPI_Slack.os index 2e107cc40b..16ede0e598 100644 --- a/src/ru/OInt/core/Modules/OPI_Slack.os +++ b/src/ru/OInt/core/Modules/OPI_Slack.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_Slack.os +// OneScript: ./OInt/core/Modules/OPI_Slack.os // Lib: Slack // CLI: slack // Keywords: slack @@ -1042,156 +1042,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function GetBotInformation(Val Token) Export - Return ПолучитьИнформациюОБоте(Token); -EndFunction - -Function GetWorkspaceList(Val Token, Val Cursor = "") Export - Return ПолучитьСписокРабочихОбластей(Token, Cursor); -EndFunction - -Function GetUserList(Val Token, Val Cursor = "") Export - Return ПолучитьСписокПользователей(Token, Cursor); -EndFunction - -Function SendMessage(Val Token, Val Channel, Val Text = "", Val SendingDate = "", Val Blocks = "") Export - Return ОтправитьСообщение(Token, Channel, Text, SendingDate, Blocks); -EndFunction - -Function SendEphemeralMessage(Val Token, Val Channel, Val Text = "", Val User = "", Val Blocks = "") Export - Return ОтправитьЭфемерноеСообщение(Token, Channel, Text, User, Blocks); -EndFunction - -Function EditMessage(Val Token, Val Channel, Val Timestamp, Val Text = "", Val BlockArray = "") Export - Return ИзменитьСообщение(Token, Channel, Timestamp, Text, BlockArray); -EndFunction - -Function DeleteMessage(Val Token, Val Channel, Val Timestamp, Val IsDelayed = False) Export - Return УдалитьСообщение(Token, Channel, Timestamp, IsDelayed); -EndFunction - -Function GetDelayedMessageList(Val Token, Val Channel, Val Cursor = "") Export - Return ПолучитьСписокОтложенныхСообщений(Token, Channel, Cursor); -EndFunction - -Function GetMessageLink(Val Token, Val Channel, Val Timestamp) Export - Return ПолучитьСсылкуНаСообщение(Token, Channel, Timestamp); -EndFunction - -Function GetMessageReplyList(Val Token, Val Channel, Val Timestamp, Val Cursor = "") Export - Return ПолучитьСписокОтветовНаСообщение(Token, Channel, Timestamp, Cursor); -EndFunction - -Function GetChannelList(Val Token, Val ExcludeArchived = False, Val Cursor = "") Export - Return ПолучитьСписокКаналов(Token, ExcludeArchived, Cursor); -EndFunction - -Function GetChannelUserList(Val Token, Val Channel, Val Cursor = "") Export - Return ПолучитьСписокПользователейКанала(Token, Channel, Cursor); -EndFunction - -Function CreateChannel(Val Token, Val Name, Val Private = False) Export - Return СоздатьКанал(Token, Name, Private); -EndFunction - -Function ArchiveChannel(Val Token, Val Channel) Export - Return АрхивироватьКанал(Token, Channel); -EndFunction - -Function GetChannel(Val Token, Val Channel) Export - Return ПолучитьКанал(Token, Channel); -EndFunction - -Function GetChannelHistory(Val Token, Val Channel) Export - Return ПолучитьИсториюКанала(Token, Channel); -EndFunction - -Function InviteUsersToChannel(Val Token, Val Channel, Val ArrayOfUsers) Export - Return ПригласитьПользователейВКанал(Token, Channel, ArrayOfUsers); -EndFunction - -Function KickUserFromChannel(Val Token, Val Channel, Val User) Export - Return ВыгнатьПользователяИзКанала(Token, Channel, User); -EndFunction - -Function JoinChannel(Val Token, Val Channel) Export - Return ВступитьВКанал(Token, Channel); -EndFunction - -Function LeaveChannel(Val Token, Val Channel) Export - Return ПокинутьКанал(Token, Channel); -EndFunction - -Function SetChannelTopic(Val Token, Val Channel, Val Topic) Export - Return УстановитьТемуКанала(Token, Channel, Topic); -EndFunction - -Function SetChannelGoal(Val Token, Val Channel, Val Purpose) Export - Return УстановитьЦельКанала(Token, Channel, Purpose); -EndFunction - -Function RenameChannel(Val Token, Val Channel, Val Name) Export - Return ПереименоватьКанал(Token, Channel, Name); -EndFunction - -Function OpenDialog(Val Token, Val ArrayOfUsers) Export - Return ОткрытьДиалог(Token, ArrayOfUsers); -EndFunction - -Function CloseDialog(Val Token, Val Dialog) Export - Return ЗакрытьДиалог(Token, Dialog); -EndFunction - -Function GetFilesList(Val Token, Val Channel = "", Val PageNumber = 1) Export - Return ПолучитьСписокФайлов(Token, Channel, PageNumber); -EndFunction - -Function UploadFile(Val Token, Val File, Val FileName, Val Title, Val Channel = "") Export - Return ЗагрузитьФайл(Token, File, FileName, Title, Channel); -EndFunction - -Function GetFileData(Val Token, Val FileID) Export - Return ПолучитьДанныеФайла(Token, FileID); -EndFunction - -Function DeleteFile(Val Token, Val FileID) Export - Return УдалитьФайл(Token, FileID); -EndFunction - -Function MakeFilePublic(Val Token, Val FileID) Export - Return СделатьФайлПубличным(Token, FileID); -EndFunction - -Function MakeFilePrivate(Val Token, Val FileID) Export - Return СделатьФайлПриватным(Token, FileID); -EndFunction - -Function GetExternalFileList(Val Token, Val Channel = "", Val Cursor = "") Export - Return ПолучитьСписокВнешнихФайлов(Token, Channel, Cursor); -EndFunction - -Function GetExternalFile(Val Token, Val FileID) Export - Return ПолучитьВнешнийФайл(Token, FileID); -EndFunction - -Function AddExternalFile(Val Token, Val URL, Val Title) Export - Return ДобавитьВнешнийФайл(Token, URL, Title); -EndFunction - -Function SendExternalFile(Val Token, Val FileID, Val ChannelArray) Export - Return ОтправитьВнешнийФайл(Token, FileID, ChannelArray); -EndFunction - -Function DeleteExternalFile(Val Token, Val FileID) Export - Return УдалитьВнешнийФайл(Token, FileID); -EndFunction - -Function GenerateImageBlock(Val URL, Val AlternateText = "") Export - Return СформироватьБлокКартинку(URL, AlternateText); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_TCP.os b/src/ru/OInt/core/Modules/OPI_TCP.os index 6bcc18617c..7256e84c10 100644 --- a/src/ru/OInt/core/Modules/OPI_TCP.os +++ b/src/ru/OInt/core/Modules/OPI_TCP.os @@ -1,351 +1,310 @@ -// OneScript: ./OInt/core/Modules/OPI_TCP.os -// Lib: TCP -// CLI: tcp -// Keywords: tcp - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область МетодыКлиента - -// Открыть соединение !NOCLI -// Создает TCP соединение -// -// Параметры: -// Адрес - Строка - Адрес и порт для подключения - address -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение, Произвольный - Возвращает объект TCP клиента при успешном подключении или информацию об ошибке -Функция ОткрытьСоединение(Знач Адрес, Знач Tls = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес); - OPI_Инструменты.ВернутьУправляющиеПоследовательности(Адрес); - - Домен = OPI_Инструменты.ПолучитьДомен(Адрес); - - TCPКлиент = OPI_Компоненты.ПолучитьКомпоненту("TCPClient"); - Успех = TCPКлиент.SetAddress(Адрес, Домен); - - Если Не Успех Тогда - Возврат ПолучитьПоследнююОшибку(TCPКлиент); - КонецЕсли; - - Tls = OPI_Компоненты.УстановитьTls(TCPКлиент, Tls); - - Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда - Возврат Tls; - КонецЕсли; - - Успех = TCPКлиент.Connect(); - - Если Не Успех Тогда - Возврат ПолучитьПоследнююОшибку(TCPКлиент); - КонецЕсли; - - Возврат TCPКлиент; - -КонецФункции - -// Закрыть соединение !NOCLI -// Явно закрывает созданное ранее соединение -// -// Параметры: -// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp -// -// Возвращаемое значение: -// Булево - всегда возвращает Истина -Функция ЗакрытьСоединение(Знач Соединение) Экспорт - - Возврат Соединение.Disconnect(); - -КонецФункции - -// Прочитать двоичные данные !NOCLI -// Читает данные из указанного соединения -// -// Примечание: -// При работе с бесконечным потоком входящих данных обязательно указание параметра МаксимальныйРазмер, так как^^ -// бесконечное получение данных может привести к зависанию -// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае -// -// Параметры: -// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp -// МаксимальныйРазмер - Число - Максимальный размер данных (байт). 0 > без ограничений - size -// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker -// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout -// -// Возвращаемое значение: -// ДвоичныеДанные - Полученные данные -Функция ПрочитатьДвоичныеДанные(Знач Соединение - , Знач МаксимальныйРазмер = 0 - , Знач Маркер = "" - , Знач Таймаут = 5000) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут); - OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер); - - Если ТипЗнч(Маркер) = Тип("Строка") Тогда - Маркер = ПолучитьДвоичныеДанныеИзСтроки(Маркер); - Иначе - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Маркер); - КонецЕсли; - - Данные = Соединение.Read(МаксимальныйРазмер, Маркер, Таймаут); - - Возврат Данные; - -КонецФункции - -// Прочитать строку !NOCLI -// Читает данные из указанного соединения в виде строки -// -// Примечание: -// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае -// -// Параметры: -// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp -// Кодировка - Строка - Кодировка преобразования данных в строку - enc -// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker -// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout -// -// Возвращаемое значение: -// Строка - Полученные данные в виде строки -Функция ПрочитатьСтроку(Знач Соединение - , Знач Кодировка = "UTF-8" - , Знач Маркер = "" - , Знач Таймаут = 5000) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка); - - Данные = ПрочитатьДвоичныеДанные(Соединение, , Маркер, Таймаут); - Данные = ПолучитьСтрокуИзДвоичныхДанных(Данные, Кодировка); - - Возврат Данные; - -КонецФункции - -// Отправить двоичные данные !NOCLI -// Отправляет двоичные данные через указанное соединение -// -// Параметры: -// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp -// Данные - ДвоичныеДанные - Данные для отправки - data -// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout -// -// Возвращаемое значение: -// Булево - Признак успешного выполнения -Функция ОтправитьДвоичныеДанные(Знач Соединение, Знач Данные, Знач Таймаут = 5000) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные); - OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут); - - Результат = Соединение.Send(Данные, Таймаут); - - Возврат Результат; - -КонецФункции - -// Отправить строку !NOCLI -// Отправляет данные в виде строки через указанное соединение -// -// Параметры: -// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp -// Данные - Строка - Данные для отправки в виде строки - data -// Кодировка - Строка - Кодировка для записи исходящей строки в поток - enc -// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout -// -// Возвращаемое значение: -// Булево - Признак успешного выполнения -Функция ОтправитьСтроку(Знач Соединение, Знач Данные, Знач Кодировка = "UTF-8", Знач Таймаут = 5000) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Данные); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка); - - ДанныеДД = ПолучитьДвоичныеДанныеИзСтроки(Данные, Кодировка); - - Результат = ОтправитьДвоичныеДанные(Соединение, ДанныеДД, Таймаут); - - Возврат Результат; - -КонецФункции - -// Обработать запрос -// Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки -// -// Параметры: -// Адрес - Строка - Адрес и порт для подключения - address -// Данные - Строка, ДвоичныеДанные - Данные или текст для отправки - data -// ОтветСтрокой - Булево - Признак получения ответа как строки - string -// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls -// -// Возвращаемое значение: -// ДвоичныеДанные, Строка - Ответ на запрос или информация об ошибке -Функция ОбработатьЗапрос(Знач Адрес, Знач Данные = "", Знач ОтветСтрокой = Истина, Знач Tls = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь); - OPI_ПреобразованиеТипов.ПолучитьБулево(ОтветСтрокой); - - Соединение = ОткрытьСоединение(Адрес, Tls); - - Если Не OPI_Компоненты.ЭтоКомпонента(Соединение) Тогда - Возврат Соединение; - КонецЕсли; - - Результат = ОтправитьДвоичныеДанные(Соединение, Данные); - - Если Результат Тогда - - Ответ = ПрочитатьДвоичныеДанные(Соединение, , Символы.ПС); - - Если Не ЗначениеЗаполнено(Ответ) Тогда - - Ошибка = ПолучитьПоследнююОшибку(Соединение); - - Если ЗначениеЗаполнено(Ошибка) Тогда - Ответ = OPI_Инструменты.JSONСтрокой(Ошибка); - Ответ = ПолучитьДвоичныеДанныеИзСтроки(Ответ); - КонецЕсли; - - КонецЕсли; - - Ответ = ?(ОтветСтрокой, ПолучитьСтрокуИзДвоичныхДанных(Ответ), Ответ); - - Иначе - - Ответ = ПолучитьПоследнююОшибку(Соединение); - Ответ = ?(ЗначениеЗаполнено(Ответ), OPI_Инструменты.JSONСтрокой(Ответ), "OPI: Не удалось отправить сообщение"); - - Ответ = ?(ОтветСтрокой, Ответ, ПолучитьДвоичныеДанныеИзСтроки(Ответ)); - - КонецЕсли; - - ЗакрытьСоединение(Соединение); - - Возврат Ответ; - -КонецФункции - -// Получить последнюю ошибку !NOCLI -// Получает информацию о последней ошибке в соединении -// -// Параметры: -// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение, Неопределено - Информация об ошибке или неопределено, если ошибки нет -Функция ПолучитьПоследнююОшибку(Знач Соединение) Экспорт - - Результат = Соединение.GetLastError(); - - Если ЗначениеЗаполнено(Результат) Тогда - Результат = OPI_Инструменты.JsonВСтруктуру(Результат); - Иначе - Результат = Неопределено; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// Получить настройки TLS -// Формирует настройки для использования TLS при выполнении запросов -// -// Примечание: -// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^ -// или неявного, при передаче строки подключения в метод `ОбработатьЗапрос` -// -// Параметры: -// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust -// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура настроек TLS соединения -Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт - - Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - - -#Region Alternate - -Function CreateConnection(Val Address, Val Tls = "") Export - Return ОткрытьСоединение(Address, Tls); -EndFunction - -Function CloseConnection(Val Connection) Export - Return ЗакрытьСоединение(Connection); -EndFunction - -Function ReadBinaryData(Val Connection, Val MaxSize = 0, Val Marker = "", Val Timeout = 5000) Export - Return ПрочитатьДвоичныеДанные(Connection, MaxSize, Marker, Timeout); -EndFunction - -Function ReadLine(Val Connection, Val Encoding = "UTF-8", Val Marker = "", Val Timeout = 5000) Export - Return ПрочитатьСтроку(Connection, Encoding, Marker, Timeout); -EndFunction - -Function SendBinaryData(Val Connection, Val Data, Val Timeout = 5000) Export - Return ОтправитьДвоичныеДанные(Connection, Data, Timeout); -EndFunction - -Function SendLine(Val Connection, Val Data, Val Encoding = "UTF-8", Val Timeout = 5000) Export - Return ОтправитьСтроку(Connection, Data, Encoding, Timeout); -EndFunction - -Function ProcessRequest(Val Address, Val Data = "", Val ResponseString = True, Val Tls = "") Export - Return ОбработатьЗапрос(Address, Data, ResponseString, Tls); -EndFunction - -Function GetLastError(Val Connection) Export - Return ПолучитьПоследнююОшибку(Connection); -EndFunction - -Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export - Return ПолучитьНастройкиTls(DisableCertVerification, CertFilepath); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_TCP.os +// Lib: TCP +// CLI: tcp +// Keywords: tcp + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область МетодыКлиента + +// Открыть соединение !NOCLI +// Создает TCP соединение +// +// Параметры: +// Адрес - Строка - Адрес и порт для подключения - address +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение, Произвольный - Возвращает объект TCP клиента при успешном подключении или информацию об ошибке +Функция ОткрытьСоединение(Знач Адрес, Знач Tls = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес); + OPI_Инструменты.ВернутьУправляющиеПоследовательности(Адрес); + + Домен = OPI_Инструменты.ПолучитьДомен(Адрес); + + TCPКлиент = OPI_Компоненты.ПолучитьКомпоненту("TCPClient"); + Успех = TCPКлиент.SetAddress(Адрес, Домен); + + Если Не Успех Тогда + Возврат ПолучитьПоследнююОшибку(TCPКлиент); + КонецЕсли; + + Tls = OPI_Компоненты.УстановитьTls(TCPКлиент, Tls); + + Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда + Возврат Tls; + КонецЕсли; + + Успех = TCPКлиент.Connect(); + + Если Не Успех Тогда + Возврат ПолучитьПоследнююОшибку(TCPКлиент); + КонецЕсли; + + Возврат TCPКлиент; + +КонецФункции + +// Закрыть соединение !NOCLI +// Явно закрывает созданное ранее соединение +// +// Параметры: +// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp +// +// Возвращаемое значение: +// Булево - всегда возвращает Истина +Функция ЗакрытьСоединение(Знач Соединение) Экспорт + + Возврат Соединение.Disconnect(); + +КонецФункции + +// Прочитать двоичные данные !NOCLI +// Читает данные из указанного соединения +// +// Примечание: +// При работе с бесконечным потоком входящих данных обязательно указание параметра МаксимальныйРазмер, так как^^ +// бесконечное получение данных может привести к зависанию +// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае +// +// Параметры: +// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp +// МаксимальныйРазмер - Число - Максимальный размер данных (байт). 0 > без ограничений - size +// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker +// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout +// +// Возвращаемое значение: +// ДвоичныеДанные - Полученные данные +Функция ПрочитатьДвоичныеДанные(Знач Соединение + , Знач МаксимальныйРазмер = 0 + , Знач Маркер = "" + , Знач Таймаут = 5000) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут); + OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер); + + Если ТипЗнч(Маркер) = Тип("Строка") Тогда + Маркер = ПолучитьДвоичныеДанныеИзСтроки(Маркер); + Иначе + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Маркер); + КонецЕсли; + + Данные = Соединение.Read(МаксимальныйРазмер, Маркер, Таймаут); + + Возврат Данные; + +КонецФункции + +// Прочитать строку !NOCLI +// Читает данные из указанного соединения в виде строки +// +// Примечание: +// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае +// +// Параметры: +// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp +// Кодировка - Строка - Кодировка преобразования данных в строку - enc +// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker +// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout +// +// Возвращаемое значение: +// Строка - Полученные данные в виде строки +Функция ПрочитатьСтроку(Знач Соединение + , Знач Кодировка = "UTF-8" + , Знач Маркер = "" + , Знач Таймаут = 5000) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка); + + Данные = ПрочитатьДвоичныеДанные(Соединение, , Маркер, Таймаут); + Данные = ПолучитьСтрокуИзДвоичныхДанных(Данные, Кодировка); + + Возврат Данные; + +КонецФункции + +// Отправить двоичные данные !NOCLI +// Отправляет двоичные данные через указанное соединение +// +// Параметры: +// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp +// Данные - ДвоичныеДанные - Данные для отправки - data +// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout +// +// Возвращаемое значение: +// Булево - Признак успешного выполнения +Функция ОтправитьДвоичныеДанные(Знач Соединение, Знач Данные, Знач Таймаут = 5000) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные); + OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут); + + Результат = Соединение.Send(Данные, Таймаут); + + Возврат Результат; + +КонецФункции + +// Отправить строку !NOCLI +// Отправляет данные в виде строки через указанное соединение +// +// Параметры: +// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp +// Данные - Строка - Данные для отправки в виде строки - data +// Кодировка - Строка - Кодировка для записи исходящей строки в поток - enc +// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout +// +// Возвращаемое значение: +// Булево - Признак успешного выполнения +Функция ОтправитьСтроку(Знач Соединение, Знач Данные, Знач Кодировка = "UTF-8", Знач Таймаут = 5000) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Данные); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка); + + ДанныеДД = ПолучитьДвоичныеДанныеИзСтроки(Данные, Кодировка); + + Результат = ОтправитьДвоичныеДанные(Соединение, ДанныеДД, Таймаут); + + Возврат Результат; + +КонецФункции + +// Обработать запрос +// Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки +// +// Параметры: +// Адрес - Строка - Адрес и порт для подключения - address +// Данные - Строка, ДвоичныеДанные - Данные или текст для отправки - data +// ОтветСтрокой - Булево - Признак получения ответа как строки - string +// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls +// +// Возвращаемое значение: +// ДвоичныеДанные, Строка - Ответ на запрос или информация об ошибке +Функция ОбработатьЗапрос(Знач Адрес, Знач Данные = "", Знач ОтветСтрокой = Истина, Знач Tls = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь); + OPI_ПреобразованиеТипов.ПолучитьБулево(ОтветСтрокой); + + Соединение = ОткрытьСоединение(Адрес, Tls); + + Если Не OPI_Компоненты.ЭтоКомпонента(Соединение) Тогда + Возврат Соединение; + КонецЕсли; + + Результат = ОтправитьДвоичныеДанные(Соединение, Данные); + + Если Результат Тогда + + Ответ = ПрочитатьДвоичныеДанные(Соединение, , Символы.ПС); + + Если Не ЗначениеЗаполнено(Ответ) Тогда + + Ошибка = ПолучитьПоследнююОшибку(Соединение); + + Если ЗначениеЗаполнено(Ошибка) Тогда + Ответ = OPI_Инструменты.JSONСтрокой(Ошибка); + Ответ = ПолучитьДвоичныеДанныеИзСтроки(Ответ); + КонецЕсли; + + КонецЕсли; + + Ответ = ?(ОтветСтрокой, ПолучитьСтрокуИзДвоичныхДанных(Ответ), Ответ); + + Иначе + + Ответ = ПолучитьПоследнююОшибку(Соединение); + Ответ = ?(ЗначениеЗаполнено(Ответ), OPI_Инструменты.JSONСтрокой(Ответ), "OPI: Не удалось отправить сообщение"); + + Ответ = ?(ОтветСтрокой, Ответ, ПолучитьДвоичныеДанныеИзСтроки(Ответ)); + + КонецЕсли; + + ЗакрытьСоединение(Соединение); + + Возврат Ответ; + +КонецФункции + +// Получить последнюю ошибку !NOCLI +// Получает информацию о последней ошибке в соединении +// +// Параметры: +// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение, Неопределено - Информация об ошибке или неопределено, если ошибки нет +Функция ПолучитьПоследнююОшибку(Знач Соединение) Экспорт + + Результат = Соединение.GetLastError(); + + Если ЗначениеЗаполнено(Результат) Тогда + Результат = OPI_Инструменты.JsonВСтруктуру(Результат); + Иначе + Результат = Неопределено; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Получить настройки TLS +// Формирует настройки для использования TLS при выполнении запросов +// +// Примечание: +// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^ +// или неявного, при передаче строки подключения в метод `ОбработатьЗапрос` +// +// Параметры: +// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust +// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура настроек TLS соединения +Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт + + Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату); + +КонецФункции + +#КонецОбласти + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_Telegram.os b/src/ru/OInt/core/Modules/OPI_Telegram.os index 558c1155bb..f4ffadd3e6 100644 --- a/src/ru/OInt/core/Modules/OPI_Telegram.os +++ b/src/ru/OInt/core/Modules/OPI_Telegram.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_Telegram.os +// OneScript: ./OInt/core/Modules/OPI_Telegram.os // Lib: Telegram // CLI: telegram // Keywords: telegram @@ -1570,160 +1570,3 @@ КонецПроцедуры #КонецОбласти - - -#Region Alternate - -Function GetBotInformation(Val Token) Export - Return ПолучитьИнформациюБота(Token); -EndFunction - -Function GetUpdates(Val Token, Val Timeout = 0, Val Offset = "") Export - Return ПолучитьОбновления(Token, Timeout, Offset); -EndFunction - -Function SetWebhook(Val Token, Val URL) Export - Return УстановитьWebhook(Token, URL); -EndFunction - -Function DeleteWebhook(Val Token) Export - Return УдалитьWebhook(Token); -EndFunction - -Function DownloadFile(Val Token, Val FileID) Export - Return СкачатьФайл(Token, FileID); -EndFunction - -Function ProcessTMAData(Val DataString, Val Token) Export - Return ОбработатьДанныеTMA(DataString, Token); -EndFunction - -Function SendTextMessage(Val Token, Val ChatID, Val Text, Val Keyboard = "", Val Markup = "Markdown", Val RepliedID = 0) Export - Return ОтправитьТекстовоеСообщение(Token, ChatID, Text, Keyboard, Markup, RepliedID); -EndFunction - -Function SendImage(Val Token, Val ChatID, Val Text, Val Image, Val Keyboard = "", Val Markup = "Markdown") Export - Return ОтправитьКартинку(Token, ChatID, Text, Image, Keyboard, Markup); -EndFunction - -Function SendVideo(Val Token, Val ChatID, Val Text, Val Video, Val Keyboard = "", Val Markup = "Markdown") Export - Return ОтправитьВидео(Token, ChatID, Text, Video, Keyboard, Markup); -EndFunction - -Function SendAudio(Val Token, Val ChatID, Val Text, Val Audio, Val Keyboard = "", Val Markup = "Markdown") Export - Return ОтправитьАудио(Token, ChatID, Text, Audio, Keyboard, Markup); -EndFunction - -Function SendDocument(Val Token, Val ChatID, Val Text, Val Document, Val Keyboard = "", Val Markup = "Markdown", Val FileName = "") Export - Return ОтправитьДокумент(Token, ChatID, Text, Document, Keyboard, Markup, FileName); -EndFunction - -Function SendGif(Val Token, Val ChatID, Val Text, Val GIF, Val Keyboard = "", Val Markup = "Markdown") Export - Return ОтправитьГифку(Token, ChatID, Text, GIF, Keyboard, Markup); -EndFunction - -Function SendMediaGroup(Val Token, Val ChatID, Val Text, Val FileMapping, Val Keyboard = "", Val Markup = "Markdown") Export - Return ОтправитьМедиагруппу(Token, ChatID, Text, FileMapping, Keyboard, Markup); -EndFunction - -Function SendLocation(Val Token, Val ChatID, Val Latitude, Val Longitude, Val Keyboard = "") Export - Return ОтправитьМестоположение(Token, ChatID, Latitude, Longitude, Keyboard); -EndFunction - -Function SendContact(Val Token, Val ChatID, Val Name, Val LastName, Val Phone, Val Keyboard = "") Export - Return ОтправитьКонтакт(Token, ChatID, Name, LastName, Phone, Keyboard); -EndFunction - -Function SendPoll(Val Token, Val ChatID, Val Question, Val AnswersArray, Val Anonymous = True) Export - Return ОтправитьОпрос(Token, ChatID, Question, AnswersArray, Anonymous); -EndFunction - -Function ForwardMessage(Val Token, Val OriginalID, Val FromID, Val ToID) Export - Return ПереслатьСообщение(Token, OriginalID, FromID, ToID); -EndFunction - -Function DeleteMessage(Val Token, Val ChatID, Val MessageID) Export - Return УдалитьСообщение(Token, ChatID, MessageID); -EndFunction - -Function ReplaceMessageKeyboard(Val Token, Val ChatID, Val MessageID, Val Keyboard) Export - Return ЗаменитьКлавиатуруСообщения(Token, ChatID, MessageID, Keyboard); -EndFunction - -Function ReplaceMessageText(Val Token, Val ChatID, Val MessageID, Val Text, Val Markup = "") Export - Return ЗаменитьТекстСообщения(Token, ChatID, MessageID, Text, Markup); -EndFunction - -Function ReplaceMessageCaption(Val Token, Val ChatID, Val MessageID, Val Description, Val Markup = "") Export - Return ЗаменитьОписаниеСообщения(Token, ChatID, MessageID, Description, Markup); -EndFunction - -Function FormKeyboardFromButtonArray(Val ButtonArray, Val UnderMessage = False, Val OneByOne = True) Export - Return СформироватьКлавиатуруПоМассивуКнопок(ButtonArray, UnderMessage, OneByOne); -EndFunction - -Function Ban(Val Token, Val ChatID, Val UserID) Export - Return Бан(Token, ChatID, UserID); -EndFunction - -Function Unban(Val Token, Val ChatID, Val UserID) Export - Return Разбан(Token, ChatID, UserID); -EndFunction - -Function CreateInvitationLink(Val Token, Val ChatID, Val Title = "", Val ExpirationDate = "", Val UserLimit = 0) Export - Return СоздатьСсылкуПриглашение(Token, ChatID, Title, ExpirationDate, UserLimit); -EndFunction - -Function PinMessage(Val Token, Val ChatID, Val MessageID) Export - Return ЗакрепитьСообщение(Token, ChatID, MessageID); -EndFunction - -Function UnpinMessage(Val Token, Val ChatID, Val MessageID) Export - Return ОткрепитьСообщение(Token, ChatID, MessageID); -EndFunction - -Function GetParticipantCount(Val Token, Val ChatID) Export - Return ПолучитьЧислоУчастников(Token, ChatID); -EndFunction - -Function GetAvatarIconList(Val Token) Export - Return ПолучитьСписокИконокАватаров(Token); -EndFunction - -Function CreateForumThread(Val Token, Val ChatID, Val Title, Val IconID = "") Export - Return СоздатьТемуФорума(Token, ChatID, Title, IconID); -EndFunction - -Function EditForumTopic(Val Token, Val ChatID, Val ThreadID, Val Title = Undefined, Val IconID = Undefined) Export - Return ИзменитьТемуФорума(Token, ChatID, ThreadID, Title, IconID); -EndFunction - -Function CloseForumThread(Val Token, Val ChatID, Val ThreadID = "") Export - Return ЗакрытьТемуФорума(Token, ChatID, ThreadID); -EndFunction - -Function OpenForumThread(Val Token, Val ChatID, Val ThreadID = "") Export - Return ОткрытьТемуФорума(Token, ChatID, ThreadID); -EndFunction - -Function DeleteForumTopic(Val Token, Val ChatID, Val ThreadID) Export - Return УдалитьТемуФорума(Token, ChatID, ThreadID); -EndFunction - -Function HideMainForumTopic(Val Token, Val ChatID) Export - Return СкрытьГлавнуюТемуФорума(Token, ChatID); -EndFunction - -Function ShowMainForumTopic(Val Token, Val ChatID) Export - Return ПоказатьГлавнуюТемуФорума(Token, ChatID); -EndFunction - -Function EditMainForumTopicName(Val Token, Val ChatID, Val Title) Export - Return ИзменитьИмяГлавнойТемыФорума(Token, ChatID, Title); -EndFunction - -Function ClearThreadPinnedMessagesList(Val Token, Val ChatID, Val ThreadID = "") Export - Return ОчиститьСписокЗакрепленныхСообщенийТемы(Token, ChatID, ThreadID); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_Twitter.os b/src/ru/OInt/core/Modules/OPI_Twitter.os index 14f572a65b..443ef38949 100644 --- a/src/ru/OInt/core/Modules/OPI_Twitter.os +++ b/src/ru/OInt/core/Modules/OPI_Twitter.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_Twitter.os +// OneScript: ./OInt/core/Modules/OPI_Twitter.os // Lib: Twitter // CLI: twitter // Keywords: twitter, x @@ -660,52 +660,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function GetAuthorizationLink(Parameters = "") Export - Return ПолучитьСсылкуАвторизации(Parameters); -EndFunction - -Function GetToken(Val Code, Val Parameters = "") Export - Return ПолучитьТокен(Code, Parameters); -EndFunction - -Function RefreshToken(Val Parameters = "") Export - Return ОбновитьТокен(Parameters); -EndFunction - -Function HandleIncomingRequestAfterAuthorization(Request) Export - Return ОбработкаВходящегоЗапросаПослеАвторизации(Request); -EndFunction - -Function CreateCustomTweet(Val Text = "", Val MediaArray = "", Val PollOptionsArray = "", Val PollDuration = "", Val Parameters = "") Export - Return СоздатьПроизвольныйТвит(Text, MediaArray, PollOptionsArray, PollDuration, Parameters); -EndFunction - -Function CreateTextTweet(Val Text, Val Parameters = "") Export - Return СоздатьТекстовыйТвит(Text, Parameters); -EndFunction - -Function CreateImageTweet(Val Text, Val ImageArray, Val Parameters = "") Export - Return СоздатьТвитКартинки(Text, ImageArray, Parameters); -EndFunction - -Function CreateGifTweet(Val Text, Val GifsArray, Val Parameters = "") Export - Return СоздатьТвитГифки(Text, GifsArray, Parameters); -EndFunction - -Function CreateVideoTweet(Val Text, Val VideosArray, Val Parameters = "") Export - Return СоздатьТвитВидео(Text, VideosArray, Parameters); -EndFunction - -Function CreatePollTweet(Val Text, Val OptionArray, Val Duration, Val Parameters = "") Export - Return СоздатьТвитОпрос(Text, OptionArray, Duration, Parameters); -EndFunction - -Function UploadAttachmentsArray(Val ArrayOfFiles, Val AttachmentsType, Val Parameters = "") Export - Return ЗагрузитьМассивВложений(ArrayOfFiles, AttachmentsType, Parameters); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_VK.os b/src/ru/OInt/core/Modules/OPI_VK.os index a79231730d..e0806fb08c 100644 --- a/src/ru/OInt/core/Modules/OPI_VK.os +++ b/src/ru/OInt/core/Modules/OPI_VK.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_VK.os +// OneScript: ./OInt/core/Modules/OPI_VK.os // Lib: VK // CLI: vk // Keywords: vk, vkontakte @@ -2185,212 +2185,3 @@ КонецПроцедуры #КонецОбласти - - -#Region Alternate - -Function CreateTokenRetrievalLink(Val App_id) Export - Return СоздатьСсылкуПолученияТокена(App_id); -EndFunction - -Function CreatePost(Val Text, Val ImageArray, Val Advertisement = False, Val LinkUnderPost = "", Val Parameters = "") Export - Return СоздатьПост(Text, ImageArray, Advertisement, LinkUnderPost, Parameters); -EndFunction - -Function CreateCompositePost(Val Text, Val Objects, Val Advertisement = False, Val LinkUnderPost = "", Val Parameters = "") Export - Return СоздатьСоставнойПост(Text, Objects, Advertisement, LinkUnderPost, Parameters); -EndFunction - -Function DeletePost(Val PostID, Val Parameters = "") Export - Return УдалитьПост(PostID, Parameters); -EndFunction - -Function CreatePoll(Val Question, Val AnswersArray, Val Image = "", Val Parameters = "") Export - Return СоздатьОпрос(Question, AnswersArray, Image, Parameters); -EndFunction - -Function CreateAlbum(Val Name, Val Description = "", Val Parameters = "") Export - Return СоздатьАльбом(Name, Description, Parameters); -EndFunction - -Function DeleteAlbum(Val AlbumID, Val Parameters = "") Export - Return УдалитьАльбом(AlbumID, Parameters); -EndFunction - -Function CreateStory(Val Image, Val URL = "", Val Parameters = "") Export - Return СоздатьИсторию(Image, URL, Parameters); -EndFunction - -Function SaveImageToAlbum(Val AlbumID, Val Image, Val Description = "", Val Parameters = "") Export - Return СохранитьКартинкуВАльбом(AlbumID, Image, Description, Parameters); -EndFunction - -Function DeleteImage(Val ImageID, Val Parameters = "") Export - Return УдалитьКартинку(ImageID, Parameters); -EndFunction - -Function UploadVideoToServer(Val Video, Val Name, Val Description = "", Val Album = "", Val Parameters = "") Export - Return ЗагрузитьВидеоНаСервер(Video, Name, Description, Album, Parameters); -EndFunction - -Function UploadPhotoToServer(Val Image, Val Parameters = "", Val View = "Post") Export - Return ЗагрузитьФотоНаСервер(Image, Parameters, View); -EndFunction - -Function CreateDiscussion(Val Name, Val FirstMessageText, Val Parameters = "") Export - Return СоздатьОбсуждение(Name, FirstMessageText, Parameters); -EndFunction - -Function CloseDiscussion(Val DiscussionID, Val DeleteCompletely = False, Val Parameters = "") Export - Return ЗакрытьОбсуждение(DiscussionID, DeleteCompletely, Parameters); -EndFunction - -Function OpenDiscussion(Val DiscussionID, Val Parameters = "") Export - Return ОткрытьОбсуждение(DiscussionID, Parameters); -EndFunction - -Function WriteInDiscussion(Val DiscussionID, Val Text, Val Parameters = "") Export - Return НаписатьВОбсуждение(DiscussionID, Text, Parameters); -EndFunction - -Function LikePost(Val PostID, Val WallID = "", Val Parameters = "") Export - Return ПоставитьЛайк(PostID, WallID, Parameters); -EndFunction - -Function MakeRepost(Val PostID, Val WallID = "", Val TargetWall = "", Val Advertising = False, Val Parameters = "") Export - Return СделатьРепост(PostID, WallID, TargetWall, Advertising, Parameters); -EndFunction - -Function WriteMessage(Val Text, Val UserID, Val Communitytoken, Val Keyboard = "", Val Parameters = "") Export - Return НаписатьСообщение(Text, UserID, Communitytoken, Keyboard, Parameters); -EndFunction - -Function WriteComment(Val PostID, Val WallID, Val Text, Val Parameters = "") Export - Return НаписатьКомментарий(PostID, WallID, Text, Parameters); -EndFunction - -Function ShortenLink(Val URL, Val Parameters = "") Export - Return СократитьСсылку(URL, Parameters); -EndFunction - -Function GetStatistics(Val StartDate, Val EndDate, Val Parameters = "") Export - Return ПолучитьСтатистику(StartDate, EndDate, Parameters); -EndFunction - -Function GetPostStatistics(Val PostIDsArray, Val Parameters = "") Export - Return ПолучитьСтатистикуПостов(PostIDsArray, Parameters); -EndFunction - -Function CreateAdvertisingCampaign(Val AccountID, Val Name, Val Parameters = "") Export - Return СоздатьРекламнуюКампанию(AccountID, Name, Parameters); -EndFunction - -Function CreateAd(Val CampaignNumber, Val DailyLimit, Val CategoryNumber, Val PostID, Val AccountID, Val Parameters = "") Export - Return СоздатьРекламноеОбъявление(CampaignNumber, DailyLimit, CategoryNumber, PostID, AccountID, Parameters); -EndFunction - -Function PauseAdvertising(Val AccountID, Val AdID, Val Parameters = "") Export - Return ПриостановитьРекламноеОбъявление(AccountID, AdID, Parameters); -EndFunction - -Function GetAdvertisingCategoryList(Val Parameters = "") Export - Return ПолучитьСписокРекламныхКатегорий(Parameters); -EndFunction - -Function GetProductCategoryList(Val Parameters = "") Export - Return ПолучитьСписокКатегорийТоваров(Parameters); -EndFunction - -Function GetProductList(Val Selection = "", Val Parameters = "") Export - Return ПолучитьСписокТоваров(Selection, Parameters); -EndFunction - -Function GetProductsByID(Val Products, Val Parameters = "") Export - Return ПолучитьТоварыПоИД(Products, Parameters); -EndFunction - -Function AddProduct(Val ProductDescription, Val Selection = "", Val Parameters = "") Export - Return ДобавитьТовар(ProductDescription, Selection, Parameters); -EndFunction - -Function EditProduct(Val Product, Val ProductDescription, Val Selection = "", Val Parameters = "") Export - Return ИзменитьТовар(Product, ProductDescription, Selection, Parameters); -EndFunction - -Function DeleteProduct(Val Product, Val Parameters = "") Export - Return УдалитьТовар(Product, Parameters); -EndFunction - -Function GroupProducts(Val ProductsArray, Val ExistingGroup = "", Val Parameters = "") Export - Return СгруппироватьТовары(ProductsArray, ExistingGroup, Parameters); -EndFunction - -Function GetProductDescription(Val Clear = False) Export - Return ПолучитьОписаниеТовара(Clear); -EndFunction - -Function GetSelectionList(Val Parameters = "") Export - Return ПолучитьСписокПодборок(Parameters); -EndFunction - -Function GetSelectionsByID(Val Selections, Val Parameters = "") Export - Return ПолучитьПодборкиПоИД(Selections, Parameters); -EndFunction - -Function CreateProductCollection(Val Name, Val Image, Val Main = False, Val Hidden = False, Val Parameters = "") Export - Return СоздатьПодборкуТоваров(Name, Image, Main, Hidden, Parameters); -EndFunction - -Function EditProductCollection(Val Name, Val Selection, Val Image = "", Val Main = False, Val Hidden = False, Val Parameters = "") Export - Return ИзменитьПодборкуТоваров(Name, Selection, Image, Main, Hidden, Parameters); -EndFunction - -Function AddProductToCollection(Val ProductsArray, Val Selection, Val Parameters = "") Export - Return ДобавитьТоварВПодборку(ProductsArray, Selection, Parameters); -EndFunction - -Function RemoveProductFromSelection(Val Product, Val Selection, Val Parameters = "") Export - Return УдалитьТоварИзПодборки(Product, Selection, Parameters); -EndFunction - -Function DeleteSelection(Val Selection, Val Parameters = "") Export - Return УдалитьПодборку(Selection, Parameters); -EndFunction - -Function GetPropertyList(Val Parameters = "") Export - Return ПолучитьСписокСвойств(Parameters); -EndFunction - -Function CreateProductProperty(Val Name, Val Parameters = "") Export - Return СоздатьСвойствоТовара(Name, Parameters); -EndFunction - -Function EditProductProperty(Val Name, Val Property, Val Parameters = "") Export - Return ИзменитьСвойствоТовара(Name, Property, Parameters); -EndFunction - -Function DeleteProductProperty(Val Property, Val Parameters = "") Export - Return УдалитьСвойствоТовара(Property, Parameters); -EndFunction - -Function AddProductPropertyVariant(Val Value, Val Property, Val Parameters = "") Export - Return ДобавитьВариантСвойстваТовара(Value, Property, Parameters); -EndFunction - -Function EditProductPropertyVariant(Val Value, Val Property, Val Option, Val Parameters = "") Export - Return ИзменитьВариантСвойстваТовара(Value, Property, Option, Parameters); -EndFunction - -Function DeleteProductPropertyVariant(Val Option, Val Parameters = "") Export - Return УдалитьВариантСвойстваТовара(Option, Parameters); -EndFunction - -Function GetOrderList(Val Parameters = "") Export - Return ПолучитьСписокЗаказов(Parameters); -EndFunction - -Function FormKeyboard(Val ButtonArray) Export - Return СформироватьКлавиатуру(ButtonArray); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_VKTeams.os b/src/ru/OInt/core/Modules/OPI_VKTeams.os index 38c3ee1fb3..ba36c6f4c4 100644 --- a/src/ru/OInt/core/Modules/OPI_VKTeams.os +++ b/src/ru/OInt/core/Modules/OPI_VKTeams.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_VKTeams.os +// OneScript: ./OInt/core/Modules/OPI_VKTeams.os // Lib: VKTeams // CLI: vkteams // Keywords: vkteams, vk teams @@ -971,124 +971,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function CheckToken(Val Token) Export - Return ПроверитьТокен(Token); -EndFunction - -Function GetEvents(Val Token, Val LastID, Val Timeout = 0) Export - Return ПолучитьСобытия(Token, LastID, Timeout); -EndFunction - -Function GetFileInformation(Val Token, Val FileID) Export - Return ПолучитьИнформациюОФайле(Token, FileID); -EndFunction - -Function SendTextMessage(Val Token, Val ChatID, Val Text, Val ReplyID = 0, Val Keyboard = "", Val Markup = "MarkdownV2") Export - Return ОтправитьТекстовоеСообщение(Token, ChatID, Text, ReplyID, Keyboard, Markup); -EndFunction - -Function SendFile(Val Token, Val ChatID, Val File, Val Text = "", Val FileName = "", Val Markup = "MarkdownV2") Export - Return ОтправитьФайл(Token, ChatID, File, Text, FileName, Markup); -EndFunction - -Function SendVoice(Val Token, Val ChatID, Val File, Val FileType = "m4a", Val ReplyID = 0, Val Keyboard = "") Export - Return ОтправитьГолосовоеСообщение(Token, ChatID, File, FileType, ReplyID, Keyboard); -EndFunction - -Function EditMessageText(Val Token, Val ChatID, Val MessageID, Val Text, Val Markup = "MarkdownV2") Export - Return ИзменитьТекстСообщения(Token, ChatID, MessageID, Text, Markup); -EndFunction - -Function DeleteMessage(Val Token, Val ChatID, Val MessageID) Export - Return УдалитьСообщение(Token, ChatID, MessageID); -EndFunction - -Function ResendFile(Val Token, Val ChatID, Val FileID, Val Text = "", Val Markup = "MarkdownV2") Export - Return ПереслатьФайл(Token, ChatID, FileID, Text, Markup); -EndFunction - -Function ResendVoice(Val Token, Val ChatID, Val FileID) Export - Return ПереслатьГолосовоеСообщение(Token, ChatID, FileID); -EndFunction - -Function ForwardMessage(Val Token, Val MessageID, Val FromChatID, Val ChatID, Val Text = "") Export - Return ПереслатьСообщение(Token, MessageID, FromChatID, ChatID, Text); -EndFunction - -Function PinMessage(Val Token, Val ChatID, Val MessageID) Export - Return ЗакрепитьСообщение(Token, ChatID, MessageID); -EndFunction - -Function UnpinMessage(Val Token, Val ChatID, Val MessageID) Export - Return ОткрепитьСообщение(Token, ChatID, MessageID); -EndFunction - -Function AnswerButtonEvent(Val Token, Val EventID, Val Text = "", Val URL = "", Val AsAlert = False) Export - Return ОтветитьНаСобытиеКлавиатуры(Token, EventID, Text, URL, AsAlert); -EndFunction - -Function MakeActionButton(Val Text, Val Value = "", Val URL = "", Val Style = "base") Export - Return СформироватьКнопкуДействия(Text, Value, URL, Style); -EndFunction - -Function RemoveChatMembers(Val Token, Val ChatID, Val Users) Export - Return ИсключитьПользователейЧата(Token, ChatID, Users); -EndFunction - -Function ChangeChatPicture(Val Token, Val ChatID, Val File) Export - Return ИзменитьАватарЧата(Token, ChatID, File); -EndFunction - -Function GetChatInfo(Val Token, Val ChatID) Export - Return ПолучитьИнформациюОЧате(Token, ChatID); -EndFunction - -Function GetChatAdmins(Val Token, Val ChatID) Export - Return ПолучитьАдминистраторовЧата(Token, ChatID); -EndFunction - -Function GetChatMembers(Val Token, Val ChatID, Val Cursor = "") Export - Return ПолучитьПользователейЧата(Token, ChatID, Cursor); -EndFunction - -Function GetChatBlockedUsers(Val Token, Val ChatID) Export - Return ПолучитьЗаблокированныхПользователейЧата(Token, ChatID); -EndFunction - -Function GetChatJoinRequests(Val Token, Val ChatID) Export - Return ПолучитьЗапросыВступленияЧата(Token, ChatID); -EndFunction - -Function BlockChatUser(Val Token, Val ChatID, Val UserID, Val DeleteLastMessages = False) Export - Return ЗаблокироватьПользователяЧата(Token, ChatID, UserID, DeleteLastMessages); -EndFunction - -Function UnblockChatUser(Val Token, Val ChatID, Val UserID) Export - Return РазблокироватьПользователяЧата(Token, ChatID, UserID); -EndFunction - -Function ApprovePending(Val Token, Val ChatID, Val UserID = "") Export - Return ОдобритьЗаявкуНаВступление(Token, ChatID, UserID); -EndFunction - -Function DisapprovePending(Val Token, Val ChatID, Val UserID = "") Export - Return ОтклонитьЗаявкуНаВступление(Token, ChatID, UserID); -EndFunction - -Function SetChatTitle(Val Token, Val ChatID, Val Text) Export - Return УстановитьЗаголовокЧата(Token, ChatID, Text); -EndFunction - -Function SetChatDescription(Val Token, Val ChatID, Val Text) Export - Return УстановитьОписаниеЧата(Token, ChatID, Text); -EndFunction - -Function SetChatRules(Val Token, Val ChatID, Val Text) Export - Return УстановитьПравилаЧата(Token, ChatID, Text); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_Viber.os b/src/ru/OInt/core/Modules/OPI_Viber.os index 25ebe7bb48..38b5d022c4 100644 --- a/src/ru/OInt/core/Modules/OPI_Viber.os +++ b/src/ru/OInt/core/Modules/OPI_Viber.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_Viber.os +// OneScript: ./OInt/core/Modules/OPI_Viber.os // Lib: Viber // CLI: viber // Keywords: viber @@ -404,52 +404,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function SetWebhook(Val Token, Val URL) Export - Return УстановитьWebhook(Token, URL); -EndFunction - -Function GetChannelInformation(Val Token) Export - Return ПолучитьИнформациюОКанале(Token); -EndFunction - -Function GetUserData(Val Token, Val UserID) Export - Return ПолучитьДанныеПользователя(Token, UserID); -EndFunction - -Function GetOnlineUsers(Val Token, Val UserIDs) Export - Return ПолучитьОнлайнПользователей(Token, UserIDs); -EndFunction - -Function SendTextMessage(Val Token, Val Text, Val UserID, Val SendingToChannel, Val Keyboard = "") Export - Return ОтправитьТекстовоеСообщение(Token, Text, UserID, SendingToChannel, Keyboard); -EndFunction - -Function SendImage(Val Token, Val URL, Val UserID, Val SendingToChannel, Val Description = "") Export - Return ОтправитьКартинку(Token, URL, UserID, SendingToChannel, Description); -EndFunction - -Function SendFile(Val Token, Val URL, Val UserID, Val SendingToChannel, Val Extension, Val Size = "") Export - Return ОтправитьФайл(Token, URL, UserID, SendingToChannel, Extension, Size); -EndFunction - -Function SendContact(Val Token, Val ContactName, Val PhoneNumber, Val UserID, Val SendingToChannel) Export - Return ОтправитьКонтакт(Token, ContactName, PhoneNumber, UserID, SendingToChannel); -EndFunction - -Function SendLocation(Val Token, Val Latitude, Val Longitude, Val UserID, Val SendingToChannel) Export - Return ОтправитьЛокацию(Token, Latitude, Longitude, UserID, SendingToChannel); -EndFunction - -Function SendLink(Val Token, Val URL, Val UserID, Val SendingToChannel) Export - Return ОтправитьСсылку(Token, URL, UserID, SendingToChannel); -EndFunction - -Function CreateKeyboardFromArrayButton(Val ButtonArray, Val ButtonColor = "#2db9b9") Export - Return СформироватьКлавиатуруИзМассиваКнопок(ButtonArray, ButtonColor); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_YandexDisk.os b/src/ru/OInt/core/Modules/OPI_YandexDisk.os index 896dd5ffbc..7d75f60632 100644 --- a/src/ru/OInt/core/Modules/OPI_YandexDisk.os +++ b/src/ru/OInt/core/Modules/OPI_YandexDisk.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_YandexDisk.os +// OneScript: ./OInt/core/Modules/OPI_YandexDisk.os // Lib: Yandex Disk // CLI: yadisk // Keywords: yandexdisk, yandex.disk, yandex disk, yandex drive, yadisk, ya disk @@ -607,76 +607,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function GetDiskInformation(Val Token) Export - Return ПолучитьИнформациюОДиске(Token); -EndFunction - -Function CreateFolder(Val Token, Val Path) Export - Return СоздатьПапку(Token, Path); -EndFunction - -Function GetObject(Val Token, Val Path) Export - Return ПолучитьОбъект(Token, Path); -EndFunction - -Function DeleteObject(Val Token, Val Path, Val ToCart = True) Export - Return УдалитьОбъект(Token, Path, ToCart); -EndFunction - -Function CreateObjectCopy(Val Token, Val Original, Val Path, Val Overwrite = False) Export - Return СоздатьКопиюОбъекта(Token, Original, Path, Overwrite); -EndFunction - -Function GetDownloadLink(Val Token, Val Path) Export - Return ПолучитьСсылкуДляСкачивания(Token, Path); -EndFunction - -Function DownloadFile(Val Token, Val Path, Val SavePath = "") Export - Return СкачатьФайл(Token, Path, SavePath); -EndFunction - -Function GetFilesList(Val Token, Val Count = 0, Val OffsetFromStart = 0, Val FilterByType = "", Val SortByDate = False) Export - Return ПолучитьСписокФайлов(Token, Count, OffsetFromStart, FilterByType, SortByDate); -EndFunction - -Function MoveObject(Val Token, Val Original, Val Path, Val Overwrite = False) Export - Return ПереместитьОбъект(Token, Original, Path, Overwrite); -EndFunction - -Function UploadFile(Val Token, Val Path, Val File, Val Overwrite = False) Export - Return ЗагрузитьФайл(Token, Path, File, Overwrite); -EndFunction - -Function UploadFileByURL(Val Token, Val Path, Val Address) Export - Return ЗагрузитьФайлПоURL(Token, Path, Address); -EndFunction - -Function PublishObject(Val Token, Val Path) Export - Return ОпубликоватьОбъект(Token, Path); -EndFunction - -Function CancelObjectPublication(Val Token, Val Path) Export - Return ОтменитьПубликациюОбъекта(Token, Path); -EndFunction - -Function GetPublishedObjectsList(Val Token, Val Count = 0, Val OffsetFromStart = 0) Export - Return ПолучитьСписокОпубликованныхОбъектов(Token, Count, OffsetFromStart); -EndFunction - -Function GetPublicObject(Val Token, Val URL, Val Count = 0, Val OffsetFromStart = 0) Export - Return ПолучитьПубличныйОбъект(Token, URL, Count, OffsetFromStart); -EndFunction - -Function GetDownloadLinkForPublicObject(Val Token, Val URL, Val Path = "") Export - Return ПолучитьСсылкуСкачиванияПубличногоОбъекта(Token, URL, Path); -EndFunction - -Function SavePublicObjectToDisk(Val Token, Val URL, From = "", Target = "") Export - Return СохранитьПубличныйОбъектНаДиск(Token, URL, From, Target); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_YandexID.os b/src/ru/OInt/core/Modules/OPI_YandexID.os index ba6706740f..8bceb03918 100644 --- a/src/ru/OInt/core/Modules/OPI_YandexID.os +++ b/src/ru/OInt/core/Modules/OPI_YandexID.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_YandexID.os +// OneScript: ./OInt/core/Modules/OPI_YandexID.os // Lib: Yandex ID // CLI: yandex @@ -130,24 +130,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function GetConfirmationCode(Val ClientId) Export - Return ПолучитьКодПодтверждения(ClientId); -EndFunction - -Function ConvertCodeToToken(Val ClientId, Val ClientSecret, Val DeviceCode) Export - Return ПреобразоватьКодВТокен(ClientId, ClientSecret, DeviceCode); -EndFunction - -Function RefreshToken(Val ClientId, Val ClientSecret, Val RefreshToken) Export - Return ОбновитьТокен(ClientId, ClientSecret, RefreshToken); -EndFunction - -Function GetAuthorizationHeader(Val Token) Export - Return ПолучитьЗаголовокАвторизации(Token); -EndFunction - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/core/Modules/OPI_YandexMarket.os b/src/ru/OInt/core/Modules/OPI_YandexMarket.os index f7892d7fa2..cd19107c2d 100644 --- a/src/ru/OInt/core/Modules/OPI_YandexMarket.os +++ b/src/ru/OInt/core/Modules/OPI_YandexMarket.os @@ -1,466 +1,429 @@ -// OneScript: ./OInt/core/Modules/OPI_YandexMarket.os -// Lib: Yandex Market -// CLI: yamarket - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область КабинетыИМагазины - -// Получить список магазинов -// Получает список магазинов в кабинете по токену -// -// Примечание: -// Метод в документации API: [Список магазинов пользователя](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns) -// -// Параметры: -// Токен - Строка - Токен авторизации (Api-Key) - token -// Страница - Число - Номер страницы выдачи списка - page -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market -Функция ПолучитьСписокМагазинов(Знач Токен, Знач Страница = 1) Экспорт - - URL = "https://api.partner.market.yandex.ru/campaigns"; - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - РазмерСтраницы = 100; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("page" , Страница , "Число", Параметры); - OPI_Инструменты.ДобавитьПоле("pageSize", РазмерСтраницы, "Число", Параметры); - - Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить магазин -// Получает информацию о магазине (кампании) по ID -// -// Примечание: -// Метод в документации API: [Информация о магазине](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign) -// -// Параметры: -// Токен - Строка - Токен авторизации (Api-Key) - token -// IDМагазина - Строка, Число - ID магазина (кампании) - campaign -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market -Функция ПолучитьМагазин(Знач Токен, Знач IDМагазина) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина); - - URL = "https://api.partner.market.yandex.ru/campaigns/" + IDМагазина; - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить настройки кабинета -// Получает значения настроек кабинета по ID -// -// Примечание: -// Метод в документации API: [Настройки кабинета](@yandex.ru/dev/market/partner-api/doc/ru/reference/businesses/getBusinessSettings) -// -// Параметры: -// Токен - Строка - Токен авторизации (Api-Key) - token -// IDКабинета - Строка, Число - ID кабинета - business -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market -Функция ПолучитьНастройкиКабинета(Знач Токен, Знач IDКабинета) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); - - URL = "https://api.partner.market.yandex.ru/businesses/%1/settings"; - URL = СтрШаблон(URL, IDКабинета); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить настройки магазина -// Получает настройки магазина по ID -// -// Примечание: -// Метод в документации API: [Настройки магазина](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings) -// -// Параметры: -// Токен - Строка - Токен авторизации (Api-Key) - token -// IDМагазина - Строка, Число - ID магазина (кампании) - campaign -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market -Функция ПолучитьНастройкиМагазина(Знач Токен, Знач IDМагазина) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина); - - URL = "https://api.partner.market.yandex.ru/campaigns/%1/settings"; - URL = СтрШаблон(URL, IDМагазина); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область РаботаСТоварами - -// Добавить обновить товары -// Добавляет или обновляет информацию о товарах в каталоге -// -// Примечание: -// Метод в документации API: [Добавление товаров в каталог и изменение информации о них](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings) -// -// Параметры: -// Токен - Строка - Токен авторизации (Api-Key) - token -// IDКабинета - Строка, Число - ID кабинета - business -// МассивТоваров - Структура, Массив Из Структура - Массив описаний товаров - offers -// СвоиИзображения - Булево - Признак использования только своих изображений товаров - pmedia -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market -Функция ДобавитьОбновитьТовары(Знач Токен, Знач IDКабинета, Знач МассивТоваров, Знач СвоиИзображения = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); - - URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings/update"; - URL = СтрШаблон(URL, IDКабинета); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("offerMappings" , МассивТоваров , "Массив", Параметры); - OPI_Инструменты.ДобавитьПоле("onlyPartnerMediaContent", СвоиИзображения, "Булево", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить товары магазина -// Получает список товаров выбранного магазина -// -// Примечание: -// Метод в документации API: [Информация о товарах, которые размещены в заданном магазине](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/assortment/getCampaignOffers) -// -// Параметры: -// Токен - Строка - Токен авторизации (Api-Key) - token -// IDМагазина - Строка, Число - ID магазина - business -// Фильтры - Структура Из КлючИЗначение - Фильтры для отбора товаров - filters -// ТокенСтраницы - Строка - Токен следующей страницы при большой выборке - page -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market -Функция ПолучитьТоварыМагазина(Знач Токен, Знач IDМагазина, Знач Фильтры = "", Знач ТокенСтраницы = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина); - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТокенСтраницы); - - URL = "https://api.partner.market.yandex.ru/campaigns/%1/offers"; - URL = СтрШаблон(URL, IDМагазина); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Если ЗначениеЗаполнено(ТокенСтраницы) Тогда - URL = URL + "?page_token=" + ТокенСтраницы; - КонецЕсли; - - Если ЗначениеЗаполнено(Фильтры) Тогда - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтры); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Фильтры, Заголовки); - Иначе - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); - КонецЕсли; - - Возврат Ответ; - -КонецФункции - -// Получить товары кабинета -// Получает список товаров выбранного кабинета -// -// Параметры: -// Токен - Строка - Токен авторизации (Api-Key) - token -// IDКабинета - Строка, Число - ID кабинета - business -// Фильтры - Структура Из КлючИЗначение - Фильтры для отбора товаров - filters -// ТокенСтраницы - Строка - Токен следующей страницы при большой выборке - page -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market -Функция ПолучитьТоварыКабинета(Знач Токен, Знач IDКабинета, Знач Фильтры = "", Знач ТокенСтраницы = "") Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТокенСтраницы); - - URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings"; - URL = СтрШаблон(URL, IDКабинета); - Заголовки = СоздатьЗаголовкиЗапроса(Токен); - - Если ЗначениеЗаполнено(ТокенСтраницы) Тогда - URL = URL + "?page_token=" + ТокенСтраницы; - КонецЕсли; - - Если ЗначениеЗаполнено(Фильтры) Тогда - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтры); - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Фильтры, Заголовки); - Иначе - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); - КонецЕсли; - - Возврат Ответ; - -КонецФункции - -// Получить структуру товара -// Получает структуру стандартных полей товара -// -// Примечание: -// Описание в документации API: [UpdateOfferDTO](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings#updateofferdto) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей товара -Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - // BSLLS:DuplicateStringLiteral-off - - СтруктураТовара = Новый Структура; - СтруктураТовара.Вставить("offerId", "<идентификатор товара в вашей системе>"); - - СтруктураРасходов = Новый Структура; - СтруктураРасходов.Вставить("currencyId" , "<код валюты>"); - СтруктураРасходов.Вставить("value" , "<доп. расходы>"); - - СтруктураТовара.Вставить("additionalExpenses", СтруктураРасходов); - СтруктураТовара.Вставить("adult" , "<параметр включает для товара пометку 18+>"); - - СтруктураВозраста = Новый Структура; - СтруктураВозраста.Вставить("ageUnit", "<единица измерения: YEAR, MONTH>"); - СтруктураВозраста.Вставить("value" , "<возрастное ограничение>"); - - СтруктураТовара.Вставить("age", СтруктураВозраста); - - МассивШтрихкодов = Новый Массив; - МассивШтрихкодов.Добавить("<штрихкод>"); - - СтруктураТовара.Вставить("barcodes", МассивШтрихкодов); - - СтруктураБазовойЦены = Новый Структура; - СтруктураБазовойЦены.Вставить("currencyId" , "<код валюты>"); - СтруктураБазовойЦены.Вставить("value" , "<цена>"); - СтруктураБазовойЦены.Вставить("discountBase", "<цена до скидки>"); - - СтруктураТовара.Вставить("basicPrice", СтруктураБазовойЦены); - СтруктураТовара.Вставить("boxCount" , "<количество грузовых мест>"); - СтруктураТовара.Вставить("category" , "<категория товара в вашем магазине>"); - - МассивСертификатов = Новый Массив; - МассивСертификатов.Добавить("<номер документа на товар>"); - - СтруктураТовара.Вставить("certificates", МассивСертификатов); - - СтруктураЦеныДляСкидок = Новый Структура; - СтруктураЦеныДляСкидок.Вставить("currencyId" , "<код валюты>"); - СтруктураЦеныДляСкидок.Вставить("value" , "<цена>"); - - СтруктураТовара.Вставить("cofinancePrice", СтруктураЦеныДляСкидок); - - СтруктураСостояния = Новый Структура; - СтруктураСостояния.Вставить("quality", "<внешний вид товара>"); - СтруктураСостояния.Вставить("reason" , "<описание дефектов>"); - СтруктураСостояния.Вставить("type" , "<тип уценки>"); - - СтруктураТовара.Вставить("condition", СтруктураСостояния); - - СтруктураТовара.Вставить("customsCommodityCode", "<код товара ТН ВЭД>"); - СтруктураТовара.Вставить("description" , "<подробное описание товара>"); - СтруктураТовара.Вставить("downloadable" , "<признак цифрового товара>"); - - СтруктураПериода = Новый Структура; - СтруктураПериода.Вставить("timePeriod", "<значение продолжительности>"); - СтруктураПериода.Вставить("timeUnit" , "<единица измерения>"); - СтруктураПериода.Вставить("comment" , "<комментарий>"); - - СтруктураТовара.Вставить("guaranteePeriod", СтруктураПериода); - СтруктураТовара.Вставить("lifeTime" , СтруктураПериода); - - МассивРуководств = Новый Массив; - - СтруктураРуководства = Новый Структура; - СтруктураРуководства.Вставить("url" , "<сслыка на руководство>"); - СтруктураРуководства.Вставить("title", "<заголовок руководства>"); - - МассивРуководств.Добавить(СтруктураРуководства); - - СтруктураТовара.Вставить("manuals", МассивРуководств); - - МассивСтран = Новый Массив; - МассивСтран.Добавить("<страна производства>"); - - СтруктураТовара.Вставить("manufacturerCountries", МассивСтран); - СтруктураТовара.Вставить("marketCategoryId" , "<идентификатор категории на Маркете>"); - СтруктураТовара.Вставить("name" , "<имя товара>"); - - МассивХарактеристик = Новый Массив; - - СтруктураХарактеристики = Новый Структура; - СтруктураХарактеристики.Вставить("parameterId", "<идентификатор характеристики>"); - СтруктураХарактеристики.Вставить("unitId" , "<идентификатор единицы измерения>"); - СтруктураХарактеристики.Вставить("value" , "<значение>"); - СтруктураХарактеристики.Вставить("valueId" , "<идентификатор значения для перечислений>"); - - МассивХарактеристик.Добавить(СтруктураХарактеристики); - - СтруктураТовара.Вставить("parameterValues", МассивХарактеристик); - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить("<ссылка на картинку товара>"); - - СтруктураТовара.Вставить("pictures" , МассивКартинок); - - СтруктураЦеныЗакупки = Новый Структура; - СтруктураЦеныЗакупки.Вставить("currencyId" , "<код валюты>"); - СтруктураЦеныЗакупки.Вставить("value" , "<цена>"); - - СтруктураТовара.Вставить("purchasePrice", СтруктураЦеныЗакупки); - СтруктураТовара.Вставить("shelfLife" , СтруктураПериода); - - МассивТэгов = Новый Массив; - МассивТэгов.Добавить("<метка>"); - - СтруктураТовара.Вставить("tags" , МассивТэгов); - СтруктураТовара.Вставить("type" , "<особый тип товара>"); - СтруктураТовара.Вставить("vendor" , "<название бренда или производителя>"); - СтруктураТовара.Вставить("vendorCode", "<артикул товара от производителя>"); - - МассивВидео = Новый Массив; - МассивВидео.Добавить("<ссылка на видео>"); - - СтруктураТовара.Вставить("videos" , МассивВидео); - - СтруктураРазмеров = Новый Структура; - СтруктураРазмеров.Вставить("height", "<высота в см.>"); - СтруктураРазмеров.Вставить("length", "<длина в см.>"); - СтруктураРазмеров.Вставить("weight", "<вес в кг. (брутто)>"); - СтруктураРазмеров.Вставить("width" , "<ширина в см.>"); - - СтруктураТовара.Вставить("weightDimensions", "<габариты и вес товара>"); - - // BSLLS:DuplicateStringLiteral-on - - Если Пустая Тогда - СтруктураТовара = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураТовара); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураТовара; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция СоздатьЗаголовкиЗапроса(Знач Токен) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - - Заголовки = Новый Соответствие; - Заголовки.Вставить("Api-Key", Токен); - Возврат Заголовки; - -КонецФункции - -#КонецОбласти - - -#Region Alternate - -Function GetMarketsList(Val Token, Val Page = 1) Export - Return ПолучитьСписокМагазинов(Token, Page); -EndFunction - -Function GetMarket(Val Token, Val CampaignID) Export - Return ПолучитьМагазин(Token, CampaignID); -EndFunction - -Function GetBusinessSettings(Val Token, Val AccountID) Export - Return ПолучитьНастройкиКабинета(Token, AccountID); -EndFunction - -Function GetCampaignSettings(Val Token, Val CampaignID) Export - Return ПолучитьНастройкиМагазина(Token, CampaignID); -EndFunction - -Function AddUpdateProducts(Val Token, Val AccountID, Val ProductsArray, Val OwnImages = False) Export - Return ДобавитьОбновитьТовары(Token, AccountID, ProductsArray, OwnImages); -EndFunction - -Function GetCampaignProducts(Val Token, Val CampaignID, Val Filters = "", Val PageToken = "") Export - Return ПолучитьТоварыМагазина(Token, CampaignID, Filters, PageToken); -EndFunction - -Function GetBusinessProducts(Val Token, Val AccountID, Val Filters = "", Val PageToken = "") Export - Return ПолучитьТоварыКабинета(Token, AccountID, Filters, PageToken); -EndFunction - -Function GetProductStructure(Val Clear = False) Export - Return ПолучитьСтруктуруТовара(Clear); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_YandexMarket.os +// Lib: Yandex Market +// CLI: yamarket + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область КабинетыИМагазины + +// Получить список магазинов +// Получает список магазинов в кабинете по токену +// +// Примечание: +// Метод в документации API: [Список магазинов пользователя](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns) +// +// Параметры: +// Токен - Строка - Токен авторизации (Api-Key) - token +// Страница - Число - Номер страницы выдачи списка - page +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market +Функция ПолучитьСписокМагазинов(Знач Токен, Знач Страница = 1) Экспорт + + URL = "https://api.partner.market.yandex.ru/campaigns"; + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + РазмерСтраницы = 100; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("page" , Страница , "Число", Параметры); + OPI_Инструменты.ДобавитьПоле("pageSize", РазмерСтраницы, "Число", Параметры); + + Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить магазин +// Получает информацию о магазине (кампании) по ID +// +// Примечание: +// Метод в документации API: [Информация о магазине](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign) +// +// Параметры: +// Токен - Строка - Токен авторизации (Api-Key) - token +// IDМагазина - Строка, Число - ID магазина (кампании) - campaign +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market +Функция ПолучитьМагазин(Знач Токен, Знач IDМагазина) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина); + + URL = "https://api.partner.market.yandex.ru/campaigns/" + IDМагазина; + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить настройки кабинета +// Получает значения настроек кабинета по ID +// +// Примечание: +// Метод в документации API: [Настройки кабинета](@yandex.ru/dev/market/partner-api/doc/ru/reference/businesses/getBusinessSettings) +// +// Параметры: +// Токен - Строка - Токен авторизации (Api-Key) - token +// IDКабинета - Строка, Число - ID кабинета - business +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market +Функция ПолучитьНастройкиКабинета(Знач Токен, Знач IDКабинета) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); + + URL = "https://api.partner.market.yandex.ru/businesses/%1/settings"; + URL = СтрШаблон(URL, IDКабинета); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить настройки магазина +// Получает настройки магазина по ID +// +// Примечание: +// Метод в документации API: [Настройки магазина](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings) +// +// Параметры: +// Токен - Строка - Токен авторизации (Api-Key) - token +// IDМагазина - Строка, Число - ID магазина (кампании) - campaign +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market +Функция ПолучитьНастройкиМагазина(Знач Токен, Знач IDМагазина) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина); + + URL = "https://api.partner.market.yandex.ru/campaigns/%1/settings"; + URL = СтрШаблон(URL, IDМагазина); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область РаботаСТоварами + +// Добавить обновить товары +// Добавляет или обновляет информацию о товарах в каталоге +// +// Примечание: +// Метод в документации API: [Добавление товаров в каталог и изменение информации о них](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings) +// +// Параметры: +// Токен - Строка - Токен авторизации (Api-Key) - token +// IDКабинета - Строка, Число - ID кабинета - business +// МассивТоваров - Структура, Массив Из Структура - Массив описаний товаров - offers +// СвоиИзображения - Булево - Признак использования только своих изображений товаров - pmedia +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market +Функция ДобавитьОбновитьТовары(Знач Токен, Знач IDКабинета, Знач МассивТоваров, Знач СвоиИзображения = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); + + URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings/update"; + URL = СтрШаблон(URL, IDКабинета); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("offerMappings" , МассивТоваров , "Массив", Параметры); + OPI_Инструменты.ДобавитьПоле("onlyPartnerMediaContent", СвоиИзображения, "Булево", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить товары магазина +// Получает список товаров выбранного магазина +// +// Примечание: +// Метод в документации API: [Информация о товарах, которые размещены в заданном магазине](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/assortment/getCampaignOffers) +// +// Параметры: +// Токен - Строка - Токен авторизации (Api-Key) - token +// IDМагазина - Строка, Число - ID магазина - business +// Фильтры - Структура Из КлючИЗначение - Фильтры для отбора товаров - filters +// ТокенСтраницы - Строка - Токен следующей страницы при большой выборке - page +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market +Функция ПолучитьТоварыМагазина(Знач Токен, Знач IDМагазина, Знач Фильтры = "", Знач ТокенСтраницы = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТокенСтраницы); + + URL = "https://api.partner.market.yandex.ru/campaigns/%1/offers"; + URL = СтрШаблон(URL, IDМагазина); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Если ЗначениеЗаполнено(ТокенСтраницы) Тогда + URL = URL + "?page_token=" + ТокенСтраницы; + КонецЕсли; + + Если ЗначениеЗаполнено(Фильтры) Тогда + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтры); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Фильтры, Заголовки); + Иначе + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); + КонецЕсли; + + Возврат Ответ; + +КонецФункции + +// Получить товары кабинета +// Получает список товаров выбранного кабинета +// +// Параметры: +// Токен - Строка - Токен авторизации (Api-Key) - token +// IDКабинета - Строка, Число - ID кабинета - business +// Фильтры - Структура Из КлючИЗначение - Фильтры для отбора товаров - filters +// ТокенСтраницы - Строка - Токен следующей страницы при большой выборке - page +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market +Функция ПолучитьТоварыКабинета(Знач Токен, Знач IDКабинета, Знач Фильтры = "", Знач ТокенСтраницы = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТокенСтраницы); + + URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings"; + URL = СтрШаблон(URL, IDКабинета); + Заголовки = СоздатьЗаголовкиЗапроса(Токен); + + Если ЗначениеЗаполнено(ТокенСтраницы) Тогда + URL = URL + "?page_token=" + ТокенСтраницы; + КонецЕсли; + + Если ЗначениеЗаполнено(Фильтры) Тогда + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтры); + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Фильтры, Заголовки); + Иначе + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); + КонецЕсли; + + Возврат Ответ; + +КонецФункции + +// Получить структуру товара +// Получает структуру стандартных полей товара +// +// Примечание: +// Описание в документации API: [UpdateOfferDTO](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings#updateofferdto) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей товара +Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + // BSLLS:DuplicateStringLiteral-off + + СтруктураТовара = Новый Структура; + СтруктураТовара.Вставить("offerId", "<идентификатор товара в вашей системе>"); + + СтруктураРасходов = Новый Структура; + СтруктураРасходов.Вставить("currencyId" , "<код валюты>"); + СтруктураРасходов.Вставить("value" , "<доп. расходы>"); + + СтруктураТовара.Вставить("additionalExpenses", СтруктураРасходов); + СтруктураТовара.Вставить("adult" , "<параметр включает для товара пометку 18+>"); + + СтруктураВозраста = Новый Структура; + СтруктураВозраста.Вставить("ageUnit", "<единица измерения: YEAR, MONTH>"); + СтруктураВозраста.Вставить("value" , "<возрастное ограничение>"); + + СтруктураТовара.Вставить("age", СтруктураВозраста); + + МассивШтрихкодов = Новый Массив; + МассивШтрихкодов.Добавить("<штрихкод>"); + + СтруктураТовара.Вставить("barcodes", МассивШтрихкодов); + + СтруктураБазовойЦены = Новый Структура; + СтруктураБазовойЦены.Вставить("currencyId" , "<код валюты>"); + СтруктураБазовойЦены.Вставить("value" , "<цена>"); + СтруктураБазовойЦены.Вставить("discountBase", "<цена до скидки>"); + + СтруктураТовара.Вставить("basicPrice", СтруктураБазовойЦены); + СтруктураТовара.Вставить("boxCount" , "<количество грузовых мест>"); + СтруктураТовара.Вставить("category" , "<категория товара в вашем магазине>"); + + МассивСертификатов = Новый Массив; + МассивСертификатов.Добавить("<номер документа на товар>"); + + СтруктураТовара.Вставить("certificates", МассивСертификатов); + + СтруктураЦеныДляСкидок = Новый Структура; + СтруктураЦеныДляСкидок.Вставить("currencyId" , "<код валюты>"); + СтруктураЦеныДляСкидок.Вставить("value" , "<цена>"); + + СтруктураТовара.Вставить("cofinancePrice", СтруктураЦеныДляСкидок); + + СтруктураСостояния = Новый Структура; + СтруктураСостояния.Вставить("quality", "<внешний вид товара>"); + СтруктураСостояния.Вставить("reason" , "<описание дефектов>"); + СтруктураСостояния.Вставить("type" , "<тип уценки>"); + + СтруктураТовара.Вставить("condition", СтруктураСостояния); + + СтруктураТовара.Вставить("customsCommodityCode", "<код товара ТН ВЭД>"); + СтруктураТовара.Вставить("description" , "<подробное описание товара>"); + СтруктураТовара.Вставить("downloadable" , "<признак цифрового товара>"); + + СтруктураПериода = Новый Структура; + СтруктураПериода.Вставить("timePeriod", "<значение продолжительности>"); + СтруктураПериода.Вставить("timeUnit" , "<единица измерения>"); + СтруктураПериода.Вставить("comment" , "<комментарий>"); + + СтруктураТовара.Вставить("guaranteePeriod", СтруктураПериода); + СтруктураТовара.Вставить("lifeTime" , СтруктураПериода); + + МассивРуководств = Новый Массив; + + СтруктураРуководства = Новый Структура; + СтруктураРуководства.Вставить("url" , "<сслыка на руководство>"); + СтруктураРуководства.Вставить("title", "<заголовок руководства>"); + + МассивРуководств.Добавить(СтруктураРуководства); + + СтруктураТовара.Вставить("manuals", МассивРуководств); + + МассивСтран = Новый Массив; + МассивСтран.Добавить("<страна производства>"); + + СтруктураТовара.Вставить("manufacturerCountries", МассивСтран); + СтруктураТовара.Вставить("marketCategoryId" , "<идентификатор категории на Маркете>"); + СтруктураТовара.Вставить("name" , "<имя товара>"); + + МассивХарактеристик = Новый Массив; + + СтруктураХарактеристики = Новый Структура; + СтруктураХарактеристики.Вставить("parameterId", "<идентификатор характеристики>"); + СтруктураХарактеристики.Вставить("unitId" , "<идентификатор единицы измерения>"); + СтруктураХарактеристики.Вставить("value" , "<значение>"); + СтруктураХарактеристики.Вставить("valueId" , "<идентификатор значения для перечислений>"); + + МассивХарактеристик.Добавить(СтруктураХарактеристики); + + СтруктураТовара.Вставить("parameterValues", МассивХарактеристик); + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить("<ссылка на картинку товара>"); + + СтруктураТовара.Вставить("pictures" , МассивКартинок); + + СтруктураЦеныЗакупки = Новый Структура; + СтруктураЦеныЗакупки.Вставить("currencyId" , "<код валюты>"); + СтруктураЦеныЗакупки.Вставить("value" , "<цена>"); + + СтруктураТовара.Вставить("purchasePrice", СтруктураЦеныЗакупки); + СтруктураТовара.Вставить("shelfLife" , СтруктураПериода); + + МассивТэгов = Новый Массив; + МассивТэгов.Добавить("<метка>"); + + СтруктураТовара.Вставить("tags" , МассивТэгов); + СтруктураТовара.Вставить("type" , "<особый тип товара>"); + СтруктураТовара.Вставить("vendor" , "<название бренда или производителя>"); + СтруктураТовара.Вставить("vendorCode", "<артикул товара от производителя>"); + + МассивВидео = Новый Массив; + МассивВидео.Добавить("<ссылка на видео>"); + + СтруктураТовара.Вставить("videos" , МассивВидео); + + СтруктураРазмеров = Новый Структура; + СтруктураРазмеров.Вставить("height", "<высота в см.>"); + СтруктураРазмеров.Вставить("length", "<длина в см.>"); + СтруктураРазмеров.Вставить("weight", "<вес в кг. (брутто)>"); + СтруктураРазмеров.Вставить("width" , "<ширина в см.>"); + + СтруктураТовара.Вставить("weightDimensions", "<габариты и вес товара>"); + + // BSLLS:DuplicateStringLiteral-on + + Если Пустая Тогда + СтруктураТовара = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураТовара); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураТовара; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СоздатьЗаголовкиЗапроса(Знач Токен) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + + Заголовки = Новый Соответствие; + Заголовки.Вставить("Api-Key", Токен); + Возврат Заголовки; + +КонецФункции + +#КонецОбласти diff --git a/src/ru/OInt/core/Modules/OPI_YandexMetrika.os b/src/ru/OInt/core/Modules/OPI_YandexMetrika.os index 6140a69d57..fb06d418eb 100644 --- a/src/ru/OInt/core/Modules/OPI_YandexMetrika.os +++ b/src/ru/OInt/core/Modules/OPI_YandexMetrika.os @@ -1,650 +1,589 @@ -// OneScript: ./OInt/core/Modules/OPI_YandexMetrika.os -// Lib: Yandex Metrika -// CLI: metrika - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params - -// Раскомментировать, если выполняется OneScript -#Использовать "../../tools" - -#Область ПрограммныйИнтерфейс - -#Область УправлениеМетками - -// Создать метку -// Создает метку с указанным именем -// -// Примечание: -// Метод в документации API: [Создание метки](@yandex.ru/dev/metrika/ru/management/openapi/label/createLabel) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Наименование - Строка - Наименование метки - title -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция СоздатьМетку(Знач Токен, Знач Наименование) Экспорт - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/labels"; - - Метка = Новый Структура; - OPI_Инструменты.ДобавитьПоле("name", Наименование, "Строка", Метка); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Новый Структура("label", Метка), Заголовки); - - Возврат Ответ; - -КонецФункции - -// Изменить метку -// Изменяет имя метки по ID -// -// Примечание: -// Метод в документации API: [Изменение метки](@yandex.ru/dev/metrika/ru/management/openapi/label/updateLabel) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// IDМетки - Строка - ID метки для изменения - label -// Наименование - Строка - Новое наименование - title -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция ИзменитьМетку(Знач Токен, Знач IDМетки, Знач Наименование) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМетки); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/label/" + IDМетки; - - Метка = Новый Структура; - OPI_Инструменты.ДобавитьПоле("name", Наименование, "Строка", Метка); - - Ответ = OPI_ЗапросыHTTP.PutСТелом(URL, Новый Структура("label", Метка), Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить метку -// Получает метку по ID -// -// Примечание: -// Метод в документации API: [Информация о метке](@yandex.ru/dev/metrika/ru/management/openapi/label/getLabel) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// IDМетки - Строка - ID метки - label -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция ПолучитьМетку(Знач Токен, Знач IDМетки) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМетки); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/label/" + IDМетки; - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Удалить метку -// Удаляет метку по ID -// -// Примечание: -// Метод в документации API: [Удаление метки](@yandex.ru/dev/metrika/ru/management/openapi/label/deleteLabel) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// IDМетки - Строка - ID метки для удаления - label -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция УдалитьМетку(Знач Токен, Знач IDМетки) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМетки); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/label/" + IDМетки; - - Ответ = OPI_ЗапросыHTTP.Delete(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список меток -// Получает список меток пользователя -// -// Примечание: -// Метод в документации API: [Список меток пользователя](@yandex.ru/dev/metrika/ru/management/openapi/label/getLabels) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция ПолучитьСписокМеток(Знач Токен) Экспорт - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/labels"; - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#Область УправлениеСчетчиками - -// Создать счетчик -// Создает счетчик по описанию полей -// -// Примечание: -// Метод в документации API: [Создание счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/addCounter) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// СтруктураСчетчика - Структура Из КлючИЗначение - Структура счетчика. См. ПолучитьСтруктуруСчетчика - fields -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция СоздатьСчетчик(Знач Токен, Знач СтруктураСчетчика) Экспорт - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/counters"; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("counter", СтруктураСчетчика, "Коллекция", Параметры); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Изменить счетчик -// Изменяет значения полей счетчика по ID -// -// Примечание: -// Метод в документации API: [Изменение счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/editCounter) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// IDСчетчика - Строка, Число - ID счетчика для изменения - counter -// СтруктураСчетчика - Структура Из КлючИЗначение - Структура изменяемых полей. См. ПолучитьСтруктуруСчетчика - fields -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция ИзменитьСчетчик(Знач Токен, Знач IDСчетчика, Знач СтруктураСчетчика) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/counter/" + IDСчетчика; - - Параметры = Новый Структура; - OPI_Инструменты.ДобавитьПоле("counter", СтруктураСчетчика, "Коллекция", Параметры); - - Ответ = OPI_ЗапросыHTTP.PutСТелом(URL, Параметры, Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить счетчик -// Получает информацию о счетчике по ID -// -// Примечание: -// Метод в документации API: [Информация о счетчике](@yandex.ru/dev/metrika/ru/management/openapi/counter/counter) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// IDСчетчика - Строка, Число - ID счетчика - counter -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция ПолучитьСчетчик(Знач Токен, Знач IDСчетчика) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/counter/" + IDСчетчика; - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Удалить счетчик -// Удаляет счетчик по ID -// -// Примечание: -// Метод в документации API: [Удаление счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/deleteCounter) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// IDСчетчика - Число, Строка - ID счетчика для удаления - counter -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция УдалитьСчетчик(Знач Токен, Знач IDСчетчика) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/counter/" + IDСчетчика; - - Ответ = OPI_ЗапросыHTTP.Delete(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Восстановить счетчик -// Восстанавливает ранее удаленный счетчик по ID -// -// Примечание: -// Метод в документации API: [Восстановление счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/undeleteCounter) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// IDСчетчика - Строка, Число - ID счетчика для восстановления - counter -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция ВосстановитьСчетчик(Знач Токен, Знач IDСчетчика) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/counter/%1/undelete"; - URL = СтрШаблон(URL, IDСчетчика); - - Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить список счетчиков -// Получает список доступных счетчиков с фильтром или без -// -// Примечание: -// Метод в документации API: [Список доступных счетчиков](@yandex.ru/dev/metrika/ru/management/openapi/counter/counters) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// Фильтр - Структура Из КлючИЗначение - Фильтр списка. См. ПолучитьСтруктуруФильтраСчетчиков - filter -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция ПолучитьСписокСчетчиков(Знач Токен, Знач Фильтр = Неопределено) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтр); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/counters"; - - Если ТипЗнч(Фильтр) <> Тип("Массив") И ЗначениеЗаполнено(Фильтр) Тогда - - URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(Фильтр, Истина); - - КонецЕсли; - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -// Получить структуру счетчика -// Получает структуру стандартных полей для создания счетчика -// -// Примечание: -// Описание в документации API: [Создание счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/addCounter) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей счетчика -Функция ПолучитьСтруктуруСчетчика(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - // BSLLS:DuplicateStringLiteral-off - - СтруктураСчетчика = Новый Структура; - СтруктураСчетчика.Вставить("autogoals_enabled", "<включение автоматических целей>"); - - СтруктураНастроекКода = Новый Структура; - СтруктураНастроекКода.Вставить("async" , "<асинхронный код счетчика>"); - СтруктураНастроекКода.Вставить("clickmap" , "<сбор статистики для работы Карты кликов>"); - СтруктураНастроекКода.Вставить("ecommerce" , "<сбор данных по электронной коммерции>"); - СтруктураНастроекКода.Вставить("in_one_line" , "<выводить код счетчика в одну строку>"); - СтруктураНастроекКода.Вставить("track_hash" , "<отслеживание хеша в адресной строке браузера>"); - СтруктураНастроекКода.Вставить("visor" , "<запись и анализ поведения посетителей сайта>"); - СтруктураНастроекКода.Вставить("xml_site" , "<для XML-сайтов>"); - СтруктураНастроекКода.Вставить("ytm" , "<использование системы управления тегами>"); - СтруктураНастроекКода.Вставить("alternative_cdn" - , "<учитывать посещения из регионов без доступ к ресурсам Яндекса>"); - - СтруктураИнформера = Новый Структура; - СтруктураИнформера.Вставить("color_arrow", "<цвет стрелки на информере>"); - СтруктураИнформера.Вставить("color_end" , "<конечный (нижний) цвет информера в формате RRGGBBAA>"); - СтруктураИнформера.Вставить("color_start", "<начальный (верхний) цвет информера в формате RRGGBBAA>"); - СтруктураИнформера.Вставить("color_text" , "<цвет текста на информере>"); - СтруктураИнформера.Вставить("enabled" , "<разрешение отображения информера>"); - СтруктураИнформера.Вставить("indicator" , "<показатель информера>"); - СтруктураИнформера.Вставить("size" , "<размер информера>"); - СтруктураИнформера.Вставить("type" , "<тип информера>"); - - СтруктураНастроекКода.Вставить("informer", СтруктураИнформера); - - СтруктураСчетчика.Вставить("code_options", СтруктураНастроекКода); - - СтруктураФлагов = Новый Структура; - СтруктураФлагов.Вставить("collect_first_party_data" , "<использовать доп. настройки отслеживания>"); - СтруктураФлагов.Вставить("measurement_enabled" , "<включить опцию Measurement Protocol>"); - СтруктураФлагов.Вставить("use_in_benchmarks" , "<получать доступ к отчетам по рынку>"); - СтруктураФлагов.Вставить("direct_allow_use_goals_without_access" - , "<разрешить в рекламных кампаниях оптимизацию по целям без доступа к счетчику>"); - - СтруктураСчетчика.Вставить("counter_flags", СтруктураФлагов); - СтруктураСчетчика.Вставить("favorite" , "<избранное>"); - СтруктураСчетчика.Вставить("filter_robots", "<фильтрация роботов>"); - - МассивФильтров = Новый Массив; - - СтруктураФильтра = Новый Структура; - СтруктураФильтра.Вставить("action" , "<тип фильтра>"); - СтруктураФильтра.Вставить("attr" , "<тип данных, к которым применяется фильтр>"); - СтруктураФильтра.Вставить("status" , "<статус фильтра>"); - СтруктураФильтра.Вставить("type" , "<отношение или действие для фильтра>"); - СтруктураФильтра.Вставить("end_ip" , "<последний IP-адрес диапазона>"); - СтруктураФильтра.Вставить("id" , "<идентификатор фильтра для изменения>"); - СтруктураФильтра.Вставить("start_ip" , "<первый IP-адрес диапазона>"); - СтруктураФильтра.Вставить("value" , "<значение>"); - СтруктураФильтра.Вставить("with_subdomains", "<фильтровать по поддоменам>"); - - МассивФильтров.Добавить(СтруктураФильтра); - - СтруктураСчетчика.Вставить("filters" , МассивФильтров); - СтруктураСчетчика.Вставить("gdpr_agreement_accepted", "<согласие с Договором об обработке данных>"); - - МассивЦелей = Новый Массив; - - СтруктураЦели = Новый Структура; - СтруктураЦели.Вставить("name" , "<наименование цели>"); - СтруктураЦели.Вставить("type" , "<тип цели>"); - СтруктураЦели.Вставить("default_price", "<цена цели по умолчанию>"); - СтруктураЦели.Вставить("id" , ""); - СтруктураЦели.Вставить("is_favorite" , "<избранное>"); - - МассивЦелей.Добавить(СтруктураЦели); - - СтруктураСчетчика.Вставить("goals", МассивЦелей); - - МассивПрав = Новый Массив; - - СтруктураПрав = Новый Структура; - СтруктураПрав.Вставить("perm" , "<уровень доступа>"); - СтруктураПрав.Вставить("comment" , "<произвольный комментарий>"); - СтруктураПрав.Вставить("partner_data_access", "<доступ к группе отчетов Монетизация>"); - СтруктураПрав.Вставить("user_login" , "<логин пользователя, которому выдано разрешение>"); - СтруктураПрав.Вставить("user_uid" , ""); - - МассивПрав.Добавить(СтруктураПрав); - - СтруктураСчетчика.Вставить("grants", МассивПрав); - - МассивЯрлыков = Новый Массив; - - СтруктураЯрлыка = Новый Структура; - СтруктураЯрлыка.Вставить("name", "<имя метки>"); - - МассивЯрлыков.Добавить(СтруктураЯрлыка); - - СтруктураСчетчика.Вставить("labels" , МассивЯрлыков); - СтруктураСчетчика.Вставить("measurement_tokens", "<список активных токенов>"); - - МассивЗеркал = Новый Массив; - - СтруктураЗеркала = Новый Структура; - СтруктураЗеркала.Вставить("site", "<полный домен сайта>"); - - МассивЗеркал.Добавить(СтруктураЗеркала); - - СтруктураСчетчика.Вставить("mirrors2", МассивЗеркал); - СтруктураСчетчика.Вставить("name" , "<наименование счетчика>"); - - СтруктураОффлайнОпций = Новый Структура; - СтруктураОффлайнОпций.Вставить("offline_calls_extended_threshold" , "<расширенный период учета звонков>"); - СтруктураОффлайнОпций.Вставить("offline_conversion_extended_threshold" - , "<расширенный период учета офлайн-конверсий>"); - СтруктураОффлайнОпций.Вставить("offline_visits_extended_threshold" - , "<расширенный период учета оффлайн-заходов>"); - - СтруктураСчетчика.Вставить("offline_options", СтруктураОффлайнОпций); - - МассивОпераций = Новый Массив; - - СтруктураОперации = Новый Структура; - СтруктураОперации.Вставить("action", "<тип операции>"); - СтруктураОперации.Вставить("attr" , "<поле фильтрации>"); - СтруктураОперации.Вставить("status", "<статус операции>"); - СтруктураОперации.Вставить("id" , "<операции для изменения>"); - СтруктураОперации.Вставить("value" , "<значение для замены>"); - - МассивОпераций.Добавить(СтруктураОперации); - - СтруктураСчетчика.Вставить("operations" , МассивОпераций); - СтруктураСчетчика.Вставить("owner_login", "<логин владельца>"); - СтруктураСчетчика.Вставить("permission" , "<уровень доступа к счетчику>"); - - СтруктураАналитики = Новый Структура; - СтруктураАналитики.Вставить("enabled" , "<сбор данных контентной аналитики>"); - СтруктураАналитики.Вставить("schema" , "<используемый на сайте тип разметки>"); - СтруктураАналитики.Вставить("schema_options", "<доступные варианты разметки сайта>"); - - СтруктураСчетчика.Вставить("publisher_options", СтруктураАналитики); - СтруктураСчетчика.Вставить("site2" , МассивЗеркал); - СтруктураСчетчика.Вставить("source" , "<тип счетчика>"); - СтруктураСчетчика.Вставить("time_zone_name" , "<часовой пояс>"); - СтруктураСчетчика.Вставить("visit_threshold" , "<таймаут визита в секундах>"); - - СтруктураВебвизора = Новый Структура; - СтруктураВебвизора.Вставить("arch_enabled" , "<сохранение страниц сайта>"); - СтруктураВебвизора.Вставить("arch_type" , "<запись содержимого страниц>"); - СтруктураВебвизора.Вставить("load_player_type", "<загрузка страниц в плеер>"); - СтруктураВебвизора.Вставить("urls" , "<список страниц для сохранения>"); - СтруктураВебвизора.Вставить("wv_forms" , "<запись содержимого полей и форм>"); - СтруктураВебвизора.Вставить("wv_version" , "<версия вебвизора>"); - - СтруктураСчетчика.Вставить("webvisor", СтруктураВебвизора); - - // BSLLS:DuplicateStringLiteral-on - - Если Пустая Тогда - СтруктураСчетчика = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураСчетчика); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураСчетчика; - -КонецФункции - -// Получить структуру фильтра счетчиков -// Получает структуру полей фильтра для получения списка счетчиков -// -// Примечание: -// Описание в документации API: [Список доступных счетчиков](@yandex.ru/dev/metrika/ru/management/openapi/counter/counters) -// -// Параметры: -// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty -// -// Возвращаемое значение: -// Структура Из КлючИЗначение - Структура полей счетчика -Функция ПолучитьСтруктуруФильтраСчетчиков(Знач Пустая = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); - - СтруктураФильтра = Новый Структура; - - МассивID = Новый Массив; - МассивID.Добавить(""); - - СтруктураФильтра.Вставить("counter_ids" , МассивID); - СтруктураФильтра.Вставить("label_id" , "<фмльтр по метке>"); - СтруктураФильтра.Вставить("offset" , "<порядковый номер первого счетчика в списке>"); - СтруктураФильтра.Вставить("per_page" , "<максимальное количество счетчиков в выдаче>"); - СтруктураФильтра.Вставить("permission" , "<фильтр по уровню доступа>"); - СтруктураФильтра.Вставить("search_string", "<фильтр по содержанию подстроки в полях>"); - СтруктураФильтра.Вставить("status" , "<фильтр по статусу>"); - СтруктураФильтра.Вставить("type" , "<фильтр по типу>"); - СтруктураФильтра.Вставить("sort" , "<сортировка>"); - - Если Пустая Тогда - СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураФильтра; - -КонецФункции - -#КонецОбласти - -#Область УправлениеОперациями - -// Получить список операций -// Получает список операций выбранного счетчика -// -// Примечание: -// Метод в документации API: [Список операций](@yandex.ru/dev/metrika/ru/management/openapi/operation/operations) -// -// Параметры: -// Токен - Строка - Токен авторизации - token -// IDСчетчика - Строка, Число - ID счетчика - counter -// -// Возвращаемое значение: -// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex -Функция ПолучитьСписокОпераций(Знач Токен, Знач IDСчетчика) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); - - Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://api-metrika.yandex.net/management/v1/counter/%1/operations"; - URL = СтрШаблон(URL, IDСчетчика); - - Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - - -#Region Alternate - -Function CreateTag(Val Token, Val Name) Export - Return СоздатьМетку(Token, Name); -EndFunction - -Function UpdateTag(Val Token, Val TagID, Val Name) Export - Return ИзменитьМетку(Token, TagID, Name); -EndFunction - -Function GetTag(Val Token, Val TagID) Export - Return ПолучитьМетку(Token, TagID); -EndFunction - -Function DeleteTag(Val Token, Val TagID) Export - Return УдалитьМетку(Token, TagID); -EndFunction - -Function GetTagsList(Val Token) Export - Return ПолучитьСписокМеток(Token); -EndFunction - -Function CreateCounter(Val Token, Val CounterStructure) Export - Return СоздатьСчетчик(Token, CounterStructure); -EndFunction - -Function UpdateCounter(Val Token, Val CounterID, Val CounterStructure) Export - Return ИзменитьСчетчик(Token, CounterID, CounterStructure); -EndFunction - -Function GetCounter(Val Token, Val CounterID) Export - Return ПолучитьСчетчик(Token, CounterID); -EndFunction - -Function DeleteCounter(Val Token, Val CounterID) Export - Return УдалитьСчетчик(Token, CounterID); -EndFunction - -Function RestoreCounter(Val Token, Val CounterID) Export - Return ВосстановитьСчетчик(Token, CounterID); -EndFunction - -Function GetCountersList(Val Token, Val Filter = Undefined) Export - Return ПолучитьСписокСчетчиков(Token, Filter); -EndFunction - -Function GetCounterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруСчетчика(Clear); -EndFunction - -Function GetCounterFilterStructure(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраСчетчиков(Clear); -EndFunction - -Function GetActionsList(Val Token, Val CounterID) Export - Return ПолучитьСписокОпераций(Token, CounterID); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/core/Modules/OPI_YandexMetrika.os +// Lib: Yandex Metrika +// CLI: metrika + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params + +// Раскомментировать, если выполняется OneScript +#Использовать "../../tools" + +#Область ПрограммныйИнтерфейс + +#Область УправлениеМетками + +// Создать метку +// Создает метку с указанным именем +// +// Примечание: +// Метод в документации API: [Создание метки](@yandex.ru/dev/metrika/ru/management/openapi/label/createLabel) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Наименование - Строка - Наименование метки - title +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция СоздатьМетку(Знач Токен, Знач Наименование) Экспорт + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/labels"; + + Метка = Новый Структура; + OPI_Инструменты.ДобавитьПоле("name", Наименование, "Строка", Метка); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Новый Структура("label", Метка), Заголовки); + + Возврат Ответ; + +КонецФункции + +// Изменить метку +// Изменяет имя метки по ID +// +// Примечание: +// Метод в документации API: [Изменение метки](@yandex.ru/dev/metrika/ru/management/openapi/label/updateLabel) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// IDМетки - Строка - ID метки для изменения - label +// Наименование - Строка - Новое наименование - title +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция ИзменитьМетку(Знач Токен, Знач IDМетки, Знач Наименование) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМетки); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/label/" + IDМетки; + + Метка = Новый Структура; + OPI_Инструменты.ДобавитьПоле("name", Наименование, "Строка", Метка); + + Ответ = OPI_ЗапросыHTTP.PutСТелом(URL, Новый Структура("label", Метка), Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить метку +// Получает метку по ID +// +// Примечание: +// Метод в документации API: [Информация о метке](@yandex.ru/dev/metrika/ru/management/openapi/label/getLabel) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// IDМетки - Строка - ID метки - label +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция ПолучитьМетку(Знач Токен, Знач IDМетки) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМетки); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/label/" + IDМетки; + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить метку +// Удаляет метку по ID +// +// Примечание: +// Метод в документации API: [Удаление метки](@yandex.ru/dev/metrika/ru/management/openapi/label/deleteLabel) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// IDМетки - Строка - ID метки для удаления - label +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция УдалитьМетку(Знач Токен, Знач IDМетки) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМетки); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/label/" + IDМетки; + + Ответ = OPI_ЗапросыHTTP.Delete(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список меток +// Получает список меток пользователя +// +// Примечание: +// Метод в документации API: [Список меток пользователя](@yandex.ru/dev/metrika/ru/management/openapi/label/getLabels) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция ПолучитьСписокМеток(Знач Токен) Экспорт + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/labels"; + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#Область УправлениеСчетчиками + +// Создать счетчик +// Создает счетчик по описанию полей +// +// Примечание: +// Метод в документации API: [Создание счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/addCounter) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// СтруктураСчетчика - Структура Из КлючИЗначение - Структура счетчика. См. ПолучитьСтруктуруСчетчика - fields +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция СоздатьСчетчик(Знач Токен, Знач СтруктураСчетчика) Экспорт + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/counters"; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("counter", СтруктураСчетчика, "Коллекция", Параметры); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Изменить счетчик +// Изменяет значения полей счетчика по ID +// +// Примечание: +// Метод в документации API: [Изменение счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/editCounter) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// IDСчетчика - Строка, Число - ID счетчика для изменения - counter +// СтруктураСчетчика - Структура Из КлючИЗначение - Структура изменяемых полей. См. ПолучитьСтруктуруСчетчика - fields +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция ИзменитьСчетчик(Знач Токен, Знач IDСчетчика, Знач СтруктураСчетчика) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/counter/" + IDСчетчика; + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("counter", СтруктураСчетчика, "Коллекция", Параметры); + + Ответ = OPI_ЗапросыHTTP.PutСТелом(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить счетчик +// Получает информацию о счетчике по ID +// +// Примечание: +// Метод в документации API: [Информация о счетчике](@yandex.ru/dev/metrika/ru/management/openapi/counter/counter) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// IDСчетчика - Строка, Число - ID счетчика - counter +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция ПолучитьСчетчик(Знач Токен, Знач IDСчетчика) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/counter/" + IDСчетчика; + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить счетчик +// Удаляет счетчик по ID +// +// Примечание: +// Метод в документации API: [Удаление счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/deleteCounter) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// IDСчетчика - Число, Строка - ID счетчика для удаления - counter +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция УдалитьСчетчик(Знач Токен, Знач IDСчетчика) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/counter/" + IDСчетчика; + + Ответ = OPI_ЗапросыHTTP.Delete(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Восстановить счетчик +// Восстанавливает ранее удаленный счетчик по ID +// +// Примечание: +// Метод в документации API: [Восстановление счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/undeleteCounter) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// IDСчетчика - Строка, Число - ID счетчика для восстановления - counter +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция ВосстановитьСчетчик(Знач Токен, Знач IDСчетчика) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/counter/%1/undelete"; + URL = СтрШаблон(URL, IDСчетчика); + + Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список счетчиков +// Получает список доступных счетчиков с фильтром или без +// +// Примечание: +// Метод в документации API: [Список доступных счетчиков](@yandex.ru/dev/metrika/ru/management/openapi/counter/counters) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// Фильтр - Структура Из КлючИЗначение - Фильтр списка. См. ПолучитьСтруктуруФильтраСчетчиков - filter +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция ПолучитьСписокСчетчиков(Знач Токен, Знач Фильтр = Неопределено) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтр); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/counters"; + + Если ТипЗнч(Фильтр) <> Тип("Массив") И ЗначениеЗаполнено(Фильтр) Тогда + + URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(Фильтр, Истина); + + КонецЕсли; + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить структуру счетчика +// Получает структуру стандартных полей для создания счетчика +// +// Примечание: +// Описание в документации API: [Создание счетчика](@yandex.ru/dev/metrika/ru/management/openapi/counter/addCounter) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей счетчика +Функция ПолучитьСтруктуруСчетчика(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + // BSLLS:DuplicateStringLiteral-off + + СтруктураСчетчика = Новый Структура; + СтруктураСчетчика.Вставить("autogoals_enabled", "<включение автоматических целей>"); + + СтруктураНастроекКода = Новый Структура; + СтруктураНастроекКода.Вставить("async" , "<асинхронный код счетчика>"); + СтруктураНастроекКода.Вставить("clickmap" , "<сбор статистики для работы Карты кликов>"); + СтруктураНастроекКода.Вставить("ecommerce" , "<сбор данных по электронной коммерции>"); + СтруктураНастроекКода.Вставить("in_one_line" , "<выводить код счетчика в одну строку>"); + СтруктураНастроекКода.Вставить("track_hash" , "<отслеживание хеша в адресной строке браузера>"); + СтруктураНастроекКода.Вставить("visor" , "<запись и анализ поведения посетителей сайта>"); + СтруктураНастроекКода.Вставить("xml_site" , "<для XML-сайтов>"); + СтруктураНастроекКода.Вставить("ytm" , "<использование системы управления тегами>"); + СтруктураНастроекКода.Вставить("alternative_cdn" + , "<учитывать посещения из регионов без доступ к ресурсам Яндекса>"); + + СтруктураИнформера = Новый Структура; + СтруктураИнформера.Вставить("color_arrow", "<цвет стрелки на информере>"); + СтруктураИнформера.Вставить("color_end" , "<конечный (нижний) цвет информера в формате RRGGBBAA>"); + СтруктураИнформера.Вставить("color_start", "<начальный (верхний) цвет информера в формате RRGGBBAA>"); + СтруктураИнформера.Вставить("color_text" , "<цвет текста на информере>"); + СтруктураИнформера.Вставить("enabled" , "<разрешение отображения информера>"); + СтруктураИнформера.Вставить("indicator" , "<показатель информера>"); + СтруктураИнформера.Вставить("size" , "<размер информера>"); + СтруктураИнформера.Вставить("type" , "<тип информера>"); + + СтруктураНастроекКода.Вставить("informer", СтруктураИнформера); + + СтруктураСчетчика.Вставить("code_options", СтруктураНастроекКода); + + СтруктураФлагов = Новый Структура; + СтруктураФлагов.Вставить("collect_first_party_data" , "<использовать доп. настройки отслеживания>"); + СтруктураФлагов.Вставить("measurement_enabled" , "<включить опцию Measurement Protocol>"); + СтруктураФлагов.Вставить("use_in_benchmarks" , "<получать доступ к отчетам по рынку>"); + СтруктураФлагов.Вставить("direct_allow_use_goals_without_access" + , "<разрешить в рекламных кампаниях оптимизацию по целям без доступа к счетчику>"); + + СтруктураСчетчика.Вставить("counter_flags", СтруктураФлагов); + СтруктураСчетчика.Вставить("favorite" , "<избранное>"); + СтруктураСчетчика.Вставить("filter_robots", "<фильтрация роботов>"); + + МассивФильтров = Новый Массив; + + СтруктураФильтра = Новый Структура; + СтруктураФильтра.Вставить("action" , "<тип фильтра>"); + СтруктураФильтра.Вставить("attr" , "<тип данных, к которым применяется фильтр>"); + СтруктураФильтра.Вставить("status" , "<статус фильтра>"); + СтруктураФильтра.Вставить("type" , "<отношение или действие для фильтра>"); + СтруктураФильтра.Вставить("end_ip" , "<последний IP-адрес диапазона>"); + СтруктураФильтра.Вставить("id" , "<идентификатор фильтра для изменения>"); + СтруктураФильтра.Вставить("start_ip" , "<первый IP-адрес диапазона>"); + СтруктураФильтра.Вставить("value" , "<значение>"); + СтруктураФильтра.Вставить("with_subdomains", "<фильтровать по поддоменам>"); + + МассивФильтров.Добавить(СтруктураФильтра); + + СтруктураСчетчика.Вставить("filters" , МассивФильтров); + СтруктураСчетчика.Вставить("gdpr_agreement_accepted", "<согласие с Договором об обработке данных>"); + + МассивЦелей = Новый Массив; + + СтруктураЦели = Новый Структура; + СтруктураЦели.Вставить("name" , "<наименование цели>"); + СтруктураЦели.Вставить("type" , "<тип цели>"); + СтруктураЦели.Вставить("default_price", "<цена цели по умолчанию>"); + СтруктураЦели.Вставить("id" , ""); + СтруктураЦели.Вставить("is_favorite" , "<избранное>"); + + МассивЦелей.Добавить(СтруктураЦели); + + СтруктураСчетчика.Вставить("goals", МассивЦелей); + + МассивПрав = Новый Массив; + + СтруктураПрав = Новый Структура; + СтруктураПрав.Вставить("perm" , "<уровень доступа>"); + СтруктураПрав.Вставить("comment" , "<произвольный комментарий>"); + СтруктураПрав.Вставить("partner_data_access", "<доступ к группе отчетов Монетизация>"); + СтруктураПрав.Вставить("user_login" , "<логин пользователя, которому выдано разрешение>"); + СтруктураПрав.Вставить("user_uid" , ""); + + МассивПрав.Добавить(СтруктураПрав); + + СтруктураСчетчика.Вставить("grants", МассивПрав); + + МассивЯрлыков = Новый Массив; + + СтруктураЯрлыка = Новый Структура; + СтруктураЯрлыка.Вставить("name", "<имя метки>"); + + МассивЯрлыков.Добавить(СтруктураЯрлыка); + + СтруктураСчетчика.Вставить("labels" , МассивЯрлыков); + СтруктураСчетчика.Вставить("measurement_tokens", "<список активных токенов>"); + + МассивЗеркал = Новый Массив; + + СтруктураЗеркала = Новый Структура; + СтруктураЗеркала.Вставить("site", "<полный домен сайта>"); + + МассивЗеркал.Добавить(СтруктураЗеркала); + + СтруктураСчетчика.Вставить("mirrors2", МассивЗеркал); + СтруктураСчетчика.Вставить("name" , "<наименование счетчика>"); + + СтруктураОффлайнОпций = Новый Структура; + СтруктураОффлайнОпций.Вставить("offline_calls_extended_threshold" , "<расширенный период учета звонков>"); + СтруктураОффлайнОпций.Вставить("offline_conversion_extended_threshold" + , "<расширенный период учета офлайн-конверсий>"); + СтруктураОффлайнОпций.Вставить("offline_visits_extended_threshold" + , "<расширенный период учета оффлайн-заходов>"); + + СтруктураСчетчика.Вставить("offline_options", СтруктураОффлайнОпций); + + МассивОпераций = Новый Массив; + + СтруктураОперации = Новый Структура; + СтруктураОперации.Вставить("action", "<тип операции>"); + СтруктураОперации.Вставить("attr" , "<поле фильтрации>"); + СтруктураОперации.Вставить("status", "<статус операции>"); + СтруктураОперации.Вставить("id" , "<операции для изменения>"); + СтруктураОперации.Вставить("value" , "<значение для замены>"); + + МассивОпераций.Добавить(СтруктураОперации); + + СтруктураСчетчика.Вставить("operations" , МассивОпераций); + СтруктураСчетчика.Вставить("owner_login", "<логин владельца>"); + СтруктураСчетчика.Вставить("permission" , "<уровень доступа к счетчику>"); + + СтруктураАналитики = Новый Структура; + СтруктураАналитики.Вставить("enabled" , "<сбор данных контентной аналитики>"); + СтруктураАналитики.Вставить("schema" , "<используемый на сайте тип разметки>"); + СтруктураАналитики.Вставить("schema_options", "<доступные варианты разметки сайта>"); + + СтруктураСчетчика.Вставить("publisher_options", СтруктураАналитики); + СтруктураСчетчика.Вставить("site2" , МассивЗеркал); + СтруктураСчетчика.Вставить("source" , "<тип счетчика>"); + СтруктураСчетчика.Вставить("time_zone_name" , "<часовой пояс>"); + СтруктураСчетчика.Вставить("visit_threshold" , "<таймаут визита в секундах>"); + + СтруктураВебвизора = Новый Структура; + СтруктураВебвизора.Вставить("arch_enabled" , "<сохранение страниц сайта>"); + СтруктураВебвизора.Вставить("arch_type" , "<запись содержимого страниц>"); + СтруктураВебвизора.Вставить("load_player_type", "<загрузка страниц в плеер>"); + СтруктураВебвизора.Вставить("urls" , "<список страниц для сохранения>"); + СтруктураВебвизора.Вставить("wv_forms" , "<запись содержимого полей и форм>"); + СтруктураВебвизора.Вставить("wv_version" , "<версия вебвизора>"); + + СтруктураСчетчика.Вставить("webvisor", СтруктураВебвизора); + + // BSLLS:DuplicateStringLiteral-on + + Если Пустая Тогда + СтруктураСчетчика = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураСчетчика); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураСчетчика; + +КонецФункции + +// Получить структуру фильтра счетчиков +// Получает структуру полей фильтра для получения списка счетчиков +// +// Примечание: +// Описание в документации API: [Список доступных счетчиков](@yandex.ru/dev/metrika/ru/management/openapi/counter/counters) +// +// Параметры: +// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty +// +// Возвращаемое значение: +// Структура Из КлючИЗначение - Структура полей счетчика +Функция ПолучитьСтруктуруФильтраСчетчиков(Знач Пустая = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая); + + СтруктураФильтра = Новый Структура; + + МассивID = Новый Массив; + МассивID.Добавить(""); + + СтруктураФильтра.Вставить("counter_ids" , МассивID); + СтруктураФильтра.Вставить("label_id" , "<фмльтр по метке>"); + СтруктураФильтра.Вставить("offset" , "<порядковый номер первого счетчика в списке>"); + СтруктураФильтра.Вставить("per_page" , "<максимальное количество счетчиков в выдаче>"); + СтруктураФильтра.Вставить("permission" , "<фильтр по уровню доступа>"); + СтруктураФильтра.Вставить("search_string", "<фильтр по содержанию подстроки в полях>"); + СтруктураФильтра.Вставить("status" , "<фильтр по статусу>"); + СтруктураФильтра.Вставить("type" , "<фильтр по типу>"); + СтруктураФильтра.Вставить("sort" , "<сортировка>"); + + Если Пустая Тогда + СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураФильтра; + +КонецФункции + +#КонецОбласти + +#Область УправлениеОперациями + +// Получить список операций +// Получает список операций выбранного счетчика +// +// Примечание: +// Метод в документации API: [Список операций](@yandex.ru/dev/metrika/ru/management/openapi/operation/operations) +// +// Параметры: +// Токен - Строка - Токен авторизации - token +// IDСчетчика - Строка, Число - ID счетчика - counter +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex +Функция ПолучитьСписокОпераций(Знач Токен, Знач IDСчетчика) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСчетчика); + + Заголовки = OPI_YandexID.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://api-metrika.yandex.net/management/v1/counter/%1/operations"; + URL = СтрШаблон(URL, IDСчетчика); + + Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + +#КонецОбласти diff --git a/src/ru/OInt/lib.config b/src/ru/OInt/lib.config index baa03abc3c..065631dddc 100644 --- a/src/ru/OInt/lib.config +++ b/src/ru/OInt/lib.config @@ -12,6 +12,7 @@ + diff --git a/src/ru/OInt/tests/Modules/internal/OPI_Тесты.os b/src/ru/OInt/tests/Modules/internal/OPI_Тесты.os index 67d81b5638..b9486c6799 100644 --- a/src/ru/OInt/tests/Modules/internal/OPI_Тесты.os +++ b/src/ru/OInt/tests/Modules/internal/OPI_Тесты.os @@ -2728,6 +2728,21 @@ #КонецОбласти +#Область OpenAI + +Процедура OAI_ОбработкаЗапросов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + + OpenAI_ПолучитьОтвет(ПараметрыТеста); + OpenAI_ПолучитьПредставления(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + #КонецОбласти #КонецОбласти @@ -22770,6 +22785,48 @@ #КонецОбласти +#Область OpenAI + +Процедура OpenAI_ПолучитьОтвет(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Сообщения = Новый Массив; + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "What is 1C:Enterprise?")); + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("assistant", "1C:Enterprise is a full-stack, low-code platform")); + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "When the first version was released?")); + + Модель = "openai/gpt-4o-mini"; + + Результат = OPI_OpenAI.ПолучитьОтвет(URL, Токен, Модель, Сообщения); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьОтвет", "OpenAI"); + OPI_ПолучениеДанныхТестов.Проверка_OpenAIОтвет(Результат); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьПредставления(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Текст = "What is 1C:Enterprise?"; + Модель = "text-embedding-ada-002"; + + Результат = OPI_OpenAI.ПолучитьПредставления(URL, Токен, Модель, Текст); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьПредставления", "OpenAI"); + OPI_ПолучениеДанныхТестов.Проверка_OpenAIПредставления(Результат); + +КонецПроцедуры + +#КонецОбласти + #КонецОбласти #КонецОбласти diff --git a/src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os b/src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os index 7c5442fcb9..d0386b272f 100644 --- a/src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os +++ b/src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os @@ -1,23692 +1,23692 @@ -// OneScript: ./OInt/tests/Modules/internal/OPI_ТестыCLI.os - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// Набор тестов для YAxUnit - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:UsingServiceTag-off -// BSLLS:UnusedParameters-off -// BSLLS:DuplicateStringLiteral-off -// BSLLS:UsingHardcodePath-off -// BSLLS:UnusedLocalVariable-off -// BSLLS:DeprecatedMessage-off -// BSLLS:LineLength-off -// BSLLS:MagicNumber-off -// BSLLS:CommentedCode-off -// BSLLS:AssignAliasFieldsInQuery-off -// BSLLS:UsingHardcodeNetworkAddress-off -// BSLLS:UnreachableCode-off -// BSLLS:UnusedLocalMethod-off -// BSLLS:NestedFunctionInParameters-off - -//@skip-check undefined-variable -//@skip-check wrong-string-literal-content -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check undefined-function-or-procedure -//@skip-check wrong-string-literal-content -//@skip-check module-unused-local-variable - -// Раскомментировать, если выполняется OneScript -#Использовать "../../../tools" -#Использовать "../../../core" -#Использовать asserts - -#Область СлужебныйПрограммныйИнтерфейс - -Процедура ИсполняемыеСценарии() Экспорт - - OPI_ПолучениеДанныхТестов.СформироватьТестыЯксCLI(); - -КонецПроцедуры - -// Для Asserts - -Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт - - Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертсCLI(); - -КонецФункции - -#Область ЗапускаемыеТесты - -#Область Telegram - -Процедура CLI_Телеграм_ПолучитьИнформациюБота() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); - - CLI_Telegram_ПолучитьИнформациюБота(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ПолучитьОбновления() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); - - CLI_Telegram_УдалитьWebhook(ПараметрыТеста); - CLI_Telegram_ПолучитьОбновления(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_УстановитьWebhook() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_URL" , ПараметрыТеста); - - CLI_Telegram_УстановитьWebhook(ПараметрыТеста); - CLI_Telegram_УдалитьWebhook(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьТекстовоеСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - - CLI_Telegram_ОтправитьТекстовоеСообщение(ПараметрыТеста); - CLI_Telegram_ЗаменитьТекстСообщения(ПараметрыТеста); - CLI_Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыТеста); - CLI_Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьКартинку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_Telegram_ОтправитьКартинку(ПараметрыТеста); - CLI_Telegram_ЗаменитьОписаниеСообщения(ПараметрыТеста); - CLI_Telegram_СкачатьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьВидео() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - CLI_Telegram_ОтправитьВидео(ПараметрыТеста); - CLI_Telegram_СкачатьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьАудио() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); - - CLI_Telegram_ОтправитьАудио(ПараметрыТеста); - CLI_Telegram_СкачатьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьДокумент() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - CLI_Telegram_ОтправитьДокумент(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьГифку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); - - CLI_Telegram_ОтправитьГифку(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьМедиагруппу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - CLI_Telegram_ОтправитьМедиагруппу(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьМестоположение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Long" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Lat" , ПараметрыТеста); - - CLI_Telegram_ОтправитьМестоположение(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьКонтакт() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Name" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Surname" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Phone" , ПараметрыТеста); - - CLI_Telegram_ОтправитьКонтакт(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ОтправитьОпрос() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - - CLI_Telegram_ОтправитьОпрос(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ПереслатьСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); - - CLI_Telegram_ПереслатьСообщение(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_БанРазбан() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); - - CLI_Telegram_Бан(ПараметрыТеста); - CLI_Telegram_Разбан(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_СоздатьСсылкуПриглашение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - - CLI_Telegram_СоздатьСсылкуПриглашение(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ЗакрепитьОткрепитьСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); - - CLI_Telegram_ЗакрепитьСообщение(ПараметрыТеста); - CLI_Telegram_ОткрепитьСообщение(ПараметрыТеста); - CLI_Telegram_УдалитьСообщение(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ПолучитьЧислоУчастников() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - - CLI_Telegram_ПолучитьЧислоУчастников(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ПолучитьСписокАватаровФорума() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); - - CLI_Telegram_ПолучитьСписокИконокАватаров(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_СоздатьУдалитьТемуФорума() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - - CLI_Telegram_СоздатьТемуФорума(ПараметрыТеста); - CLI_Telegram_ИзменитьТемуФорума(ПараметрыТеста); - CLI_Telegram_ЗакрытьТемуФорума(ПараметрыТеста); - CLI_Telegram_ОткрытьТемуФорума(ПараметрыТеста); - CLI_Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыТеста); - CLI_Telegram_УдалитьТемуФорума(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_СкрытьПоказатьГлавнуюТему() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); - - CLI_Telegram_СкрытьГлавнуюТемуФорума(ПараметрыТеста); - CLI_Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Телеграм_ИзменитьИмяГлавнойТемы() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); - - CLI_Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область VK - -Процедура CLI_ВК_СоздатьСсылкуТокена() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AppID", ПараметрыТеста); - - CLI_VK_СоздатьСсылкуПолученияТокена(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_СоздатьУдалитьПост() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - - CLI_VK_СоздатьПост(ПараметрыТеста); - CLI_VK_УдалитьПост(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_СоздатьСоставнойПост() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - CLI_VK_СоздатьСоставнойПост(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_СоздатьОпрос() Экспорт - - CLI_VK_СоздатьОпрос(); - -КонецПроцедуры - -Процедура CLI_ВК_СохранитьУдалитьКартинку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_VK_СоздатьАльбом(ПараметрыТеста); - CLI_VK_СохранитьКартинкуВАльбом(ПараметрыТеста); - CLI_VK_УдалитьКартинку(ПараметрыТеста); - CLI_VK_УдалитьАльбом(ПараметрыТеста); - CLI_VK_ЗагрузитьФотоНаСервер(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_СоздатьИсторию() Экспорт - - ПараметрыТеста = Новый Соответствие; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_VK_СоздатьИсторию(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_МетодыОбсуждений() Экспорт - - ПараметрыТеста = Новый Структура; - Параметры = ПолучитьПараметрыВК(); - - CLI_VK_СоздатьОбсуждение(ПараметрыТеста); - CLI_VK_ЗакрытьОбсуждение(ПараметрыТеста); - CLI_VK_ОткрытьОбсуждение(ПараметрыТеста); - CLI_VK_НаписатьВОбсуждение(ПараметрыТеста); - - OPI_VK.ЗакрытьОбсуждение(ПараметрыТеста["VK_ConvID"], Истина, Параметры); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ВК_ЛайкРепостКоммент() Экспорт - - ПараметрыТеста = Новый Структура(); - Параметры = ПолучитьПараметрыВК(); - Текст = "Пост из автотеста"; - - Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); - ИДПоста = Результат["response"]["post_id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID", ПараметрыТеста); - - CLI_VK_ПоставитьЛайк(ПараметрыТеста); - CLI_VK_СделатьРепост(ПараметрыТеста); - CLI_VK_НаписатьКомментарий(ПараметрыТеста); - CLI_VK_СократитьСсылку(ПараметрыТеста); - - OPI_VK.УдалитьПост(ИДПоста , Параметры); - OPI_VK.УдалитьПост(ПараметрыТеста["Repost"], Параметры); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ВК_ПолучитьСтатистику() Экспорт - - ПараметрыТеста = Новый Структура(); - - CLI_VK_ПолучитьСтатистику(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ВК_ПолучитьСтатистикуПостов() Экспорт - - ПараметрыТеста = Новый Структура(); - - CLI_VK_ПолучитьСтатистикуПостов(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ВК_СоздатьРекламнуюКампанию() Экспорт - - Параметры = ПолучитьПараметрыВК(); - Текст = "Пост из автотеста"; - - Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); - ИДПоста = Результат["response"]["post_id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); - - ПараметрыТеста = Новый Структура(); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AdsCabinetID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID" , ПараметрыТеста); - - CLI_VK_СоздатьРекламнуюКампанию(ПараметрыТеста); - CLI_VK_СоздатьРекламноеОбъявление(ПараметрыТеста); - CLI_VK_ПриостановитьРекламноеОбъявление(ПараметрыТеста); - CLI_VK_ПолучитьСписокРекламныхКатегорий(ПараметрыТеста); - - OPI_VK.УдалитьПост(ИДПоста, Параметры); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ВК_ОтправитьСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_UserID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_CommunityToken", ПараметрыТеста); - - CLI_VK_СформироватьКлавиатуру(ПараметрыТеста); - CLI_VK_НаписатьСообщение(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ВК_ПолучитьКатегорииТоваров() Экспорт - - ПараметрыТеста = Новый Структура; - - CLI_VK_ПолучитьСписокКатегорийТоваров(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ВК_СоздатьТоварПодборку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - - CLI_VK_СоздатьПодборкуТоваров(ПараметрыТеста); - CLI_VK_ИзменитьПодборкуТоваров(ПараметрыТеста); - CLI_VK_ПолучитьПодборкиПоИД(ПараметрыТеста); - CLI_VK_ДобавитьТовар(ПараметрыТеста); - CLI_VK_ИзменитьТовар(ПараметрыТеста); - CLI_VK_ДобавитьТоварВПодборку(ПараметрыТеста); - CLI_VK_УдалитьТоварИзПодборки(ПараметрыТеста); - CLI_VK_УдалитьТовар(ПараметрыТеста); - CLI_VK_УдалитьПодборку(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ВК_СоздатьТоварСоСвойствами() Экспорт - - Параметры = ПолучитьПараметрыВК(); - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - - CLI_VK_ПолучитьОписаниеТовара(ПараметрыТеста); - CLI_VK_СоздатьСвойствоТовара(ПараметрыТеста); - CLI_VK_ИзменитьСвойствоТовара(ПараметрыТеста); - CLI_VK_ДобавитьВариантСвойстваТовара(ПараметрыТеста); - CLI_VK_ИзменитьВариантСвойстваТовара(ПараметрыТеста); - CLI_VK_СоздатьТоварСоСвойством(ПараметрыТеста); - CLI_VK_ПолучитьТоварыПоИД(ПараметрыТеста); - CLI_VK_СгруппироватьТовары(ПараметрыТеста); - - OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID2"], Параметры); - OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID3"], Параметры); - - CLI_VK_УдалитьВариантСвойстваТовара(ПараметрыТеста); - CLI_VK_УдалитьСвойствоТовара(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_ПолучитьСписокТоваров() Экспорт - - ПараметрыТеста = Новый Структура; - - CLI_VK_ПолучитьСписокТоваров(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_ПолучитьСписокПодборок() Экспорт - - ПараметрыТеста = Новый Структура; - - CLI_VK_ПолучитьСписокПодборок(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_ПолучитьСписокСвойств() Экспорт - - ПараметрыТеста = Новый Структура; - - CLI_VK_ПолучитьСписокСвойств(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_ПолучитьСписокЗаказов() Экспорт - - ПараметрыТеста = Новый Структура; - - CLI_VK_ПолучитьСписокЗаказов(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВК_ЗагрузитьВидео() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video", ПараметрыТеста); - - CLI_VK_ЗагрузитьВидеоНаСервер(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область YandexDisk - -Процедура CLI_ЯДиск_ПолучитьИнформациюОДиске() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - - CLI_YandexDisk_ПолучитьИнформациюОДиске(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ЯДиск_СоздатьПапку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - - CLI_YandexDisk_СоздатьПапку(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_YandexDisk_ЗагрузитьФайлПоURL(ПараметрыТеста); - CLI_YandexDisk_ПолучитьОбъект(ПараметрыТеста); - CLI_YandexDisk_УдалитьОбъект(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ЯДиск_ЗагрузитьУдалитьФайл() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_YandexDisk_ЗагрузитьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ЯДиск_СоздатьКопиюОбъекта() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Токен = ПараметрыТеста["YandexDisk_Token"]; - URL = ПараметрыТеста["Picture"]; - - ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); - OPI_Инструменты.Пауза(35); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); - ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); - - CLI_YandexDisk_СоздатьКопиюОбъекта(ПараметрыТеста); - - ПутьКопии = ПараметрыТеста["YandexDisk_CopyFilePath"]; - - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьКопии , Ложь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ЯДиск_ПолучитьСсылкуНаСкачивание() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Токен = ПараметрыТеста["YandexDisk_Token"]; - URL = ПараметрыТеста["Picture"]; - - Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, Путь, URL); - OPI_Инструменты.Пауза(35); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_PathForLink", Путь); - ПараметрыТеста.Вставить("YandexDisk_PathForLink", Путь); - - CLI_YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыТеста); - CLI_YandexDisk_СкачатьФайл(ПараметрыТеста); - - OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); - -КонецПроцедуры - -Процедура CLI_ЯДиск_ПолучитьСписокФайлов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - - CLI_YandexDisk_ПолучитьСписокФайлов(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ЯДиск_ПереместитьОбъект() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Токен = ПараметрыТеста["YandexDisk_Token"]; - URL = ПараметрыТеста["Picture"]; - - ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); - OPI_Инструменты.Пауза(35); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); - ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); - - CLI_YandexDisk_ПереместитьОбъект(ПараметрыТеста); - - ПутьНового = ПараметрыТеста["YandexDisk_NewFilePath"]; - - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьНового , Ложь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ЯДиск_ДействияПубличныхОбъектов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Токен = ПараметрыТеста["YandexDisk_Token"]; - URL = ПараметрыТеста["Picture"]; - - ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); - OPI_Инструменты.Пауза(35); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); - ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); - - CLI_YandexDisk_ОпубликоватьОбъект(ПараметрыТеста); - CLI_YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыТеста); - CLI_YandexDisk_ПолучитьПубличныйОбъект(ПараметрыТеста); - CLI_YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыТеста); - CLI_YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыТеста); - - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ЯДиск_ПолучитьСписокОпубликованных() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - - CLI_YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Viber - -Процедура CLI_Вайбер_ПолучениеИнформации() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); - - CLI_Viber_ПолучитьИнформациюОКанале(ПараметрыТеста); - CLI_Viber_ПолучитьДанныеПользователя(ПараметрыТеста); - CLI_Viber_ПолучитьОнлайнПользователей(ПараметрыТеста); - CLI_Viber_УстановитьWebhook(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Вайбер_ОтправкаСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_UserID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - CLI_Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыТеста); - - Возврат; - - //@skip-check unreachable-statement - // BSLLS:UnreachableCode-off - - CLI_Viber_ОтправитьТекстовоеСообщение(ПараметрыТеста); - CLI_Viber_ОтправитьКартинку(ПараметрыТеста); - CLI_Viber_ОтправитьФайл(ПараметрыТеста); - CLI_Viber_ОтправитьКонтакт(ПараметрыТеста); - CLI_Viber_ОтправитьЛокацию(ПараметрыТеста); - CLI_Viber_ОтправитьСсылку(ПараметрыТеста); - - // BSLLS:UnreachableCode-on - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleWorkspace - -Процедура CLI_ГВ_Авторизация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); - - CLI_GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыТеста); - CLI_GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыТеста); - CLI_GoogleWorkspace_ОбновитьТокен(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleCalendar - -Процедура CLI_ГК_ПолучитьСписокКалендарей() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - CLI_GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ГК_СоздатьУдалитьКалендарь() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - CLI_GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); - CLI_GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыТеста); - CLI_GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыТеста); - CLI_GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыТеста); - CLI_GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыТеста); - CLI_GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыТеста); - CLI_GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыТеста); - CLI_GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыТеста); - CLI_GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ГК_СоздатьУдалитьСобытие() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_NewCalendarID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_CalendarID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - CLI_GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); - CLI_GoogleCalendar_СоздатьСобытие(ПараметрыТеста); - CLI_GoogleCalendar_ИзменитьСобытие(ПараметрыТеста); - CLI_GoogleCalendar_ПолучитьСобытие(ПараметрыТеста); - CLI_GoogleCalendar_ПереместитьСобытие(ПараметрыТеста); - CLI_GoogleCalendar_ПолучитьСписокСобытий(ПараметрыТеста); - CLI_GoogleCalendar_УдалитьСобытие(ПараметрыТеста); - CLI_GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); - CLI_GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleDrive - -Процедура CLI_ГД_ПолучитьСписокКаталогов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - CLI_GoogleDrive_ПолучитьСписокКаталогов(ПараметрыТеста); - CLI_GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ГД_ЗагрузитьУдалитьФайл() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); - - CLI_GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); - CLI_GoogleDrive_СкопироватьОбъект(ПараметрыТеста); - CLI_GoogleDrive_СкачатьФайл(ПараметрыТеста); - CLI_GoogleDrive_ОбновитьФайл(ПараметрыТеста); - CLI_GoogleDrive_ПолучитьСписокФайлов(ПараметрыТеста); - CLI_GoogleDrive_УдалитьОбъект(ПараметрыТеста); - CLI_GoogleDrive_ПолучитьОписаниеФайла(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_ГД_СоздатьУдалитьКомментарий() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); - - CLI_GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); - - CLI_GoogleDrive_СоздатьКомментарий(ПараметрыТеста); - CLI_GoogleDrive_ПолучитьКомментарий(ПараметрыТеста); - CLI_GoogleDrive_ПолучитьСписокКомментариев(ПараметрыТеста); - CLI_GoogleDrive_УдалитьКомментарий(ПараметрыТеста); - - CLI_GoogleDrive_УдалитьОбъект(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ГД_СоздатьКаталог() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); - - CLI_GoogleDrive_СоздатьПапку(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleSheets - -Процедура CLI_ГТ_СоздатьТаблицу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - CLI_GoogleSheets_СоздатьКнигу(ПараметрыТеста); - CLI_GoogleSheets_ПолучитьКнигу(ПараметрыТеста); - CLI_GoogleSheets_КопироватьЛист(ПараметрыТеста); - CLI_GoogleSheets_ДобавитьЛист(ПараметрыТеста); - CLI_GoogleSheets_УдалитьЛист(ПараметрыТеста); - CLI_GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыТеста); - CLI_GoogleSheets_ПолучитьТаблицу(ПараметрыТеста); - - OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); - OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); - -КонецПроцедуры - -Процедура CLI_ГТ_ЗаполнитьОчиститьЯчейки() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token" , ПараметрыТеста); - - CLI_GoogleSheets_СоздатьКнигу(ПараметрыТеста); - CLI_GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыТеста); - CLI_GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыТеста); - CLI_GoogleSheets_ОчиститьЯчейки(ПараметрыТеста); - - OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); - OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); - -КонецПроцедуры - -#КонецОбласти - -#Область Twitter - -Процедура CLI_Твиттер_ДанныеАккаунта() Экспорт - - ПараметрыТеста = Новый Структура; - - CLI_Twitter_ПолучитьТокен(ПараметрыТеста); - CLI_Twitter_ПолучитьСсылкуАвторизации(ПараметрыТеста); - CLI_Twitter_ОбновитьТокен(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Твиттер_Твиты() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - CLI_Twitter_СоздатьТекстовыйТвит(ПараметрыТеста); - CLI_Twitter_ЗагрузитьМассивВложений(ПараметрыТеста); - CLI_Twitter_СоздатьТвитВидео(ПараметрыТеста); - CLI_Twitter_СоздатьТвитКартинки(ПараметрыТеста); - CLI_Twitter_СоздатьТвитГифки(ПараметрыТеста); - CLI_Twitter_СоздатьТвитОпрос(ПараметрыТеста); - CLI_Twitter_СоздатьПроизвольныйТвит(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Notion - -Процедура CLI_НоушнАпи_СоздатьСтраницу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - CLI_Notion_СоздатьСтраницу(ПараметрыТеста); - CLI_Notion_ПолучитьСтраницу(ПараметрыТеста); - CLI_Notion_ИзменитьСвойстваСтраницы(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_НоушнАпи_СоздатьИзменитьБазу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_Notion_СоздатьБазуДанных(ПараметрыТеста); - CLI_Notion_ИзменитьСвойстваБазы(ПараметрыТеста); - CLI_Notion_ПолучитьБазуДанных(ПараметрыТеста); - CLI_Notion_СоздатьСтраницуВБазу(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_НоушнАпи_СоздатьУдалитьБлок() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Block" , ПараметрыТеста); - - CLI_Notion_ВернутьБлок(ПараметрыТеста); - CLI_Notion_СоздатьБлок(ПараметрыТеста); - CLI_Notion_ВернутьДочерниеБлоки(ПараметрыТеста); - CLI_Notion_УдалитьБлок(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_НоушнАпи_ПолучитьПользователей() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_User" , ПараметрыТеста); - - CLI_Notion_СписокПользователей(ПараметрыТеста); - CLI_Notion_ПолучитьДанныеПользователя(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Slack - -Процедура CLI_Слак_ПолучитьИнформацию() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); - - CLI_Slack_ПолучитьИнформациюОБоте(ПараметрыТеста); - CLI_Slack_ПолучитьСписокПользователей(ПараметрыТеста); - CLI_Slack_ПолучитьСписокРабочихОбластей(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Слак_ОтправитьУдалитьСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); - - CLI_Slack_ОтправитьСообщение(ПараметрыТеста); - CLI_Slack_ИзменитьСообщение(ПараметрыТеста); - CLI_Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыТеста); - CLI_Slack_ПолучитьСсылкуНаСообщение(ПараметрыТеста); - CLI_Slack_УдалитьСообщение(ПараметрыТеста); - CLI_Slack_ОтправитьЭфемерноеСообщение(ПараметрыТеста); - CLI_Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыТеста); - CLI_Slack_СформироватьБлокКартинку(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Слак_СоздатьАрхивироватьКанал() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); - - CLI_Slack_СоздатьКанал(ПараметрыТеста); - CLI_Slack_УстановитьТемуКанала(ПараметрыТеста); - CLI_Slack_УстановитьЦельКанала(ПараметрыТеста); - CLI_Slack_ПолучитьКанал(ПараметрыТеста); - CLI_Slack_ПригласитьПользователейВКанал(ПараметрыТеста); - CLI_Slack_ВыгнатьПользователяИзКанала(ПараметрыТеста); - CLI_Slack_ПолучитьИсториюКанала(ПараметрыТеста); - CLI_Slack_ПолучитьСписокПользователейКанала(ПараметрыТеста); - CLI_Slack_ПокинутьКанал(ПараметрыТеста); - CLI_Slack_ВступитьВКанал(ПараметрыТеста); - CLI_Slack_ПереименоватьКанал(ПараметрыТеста); - CLI_Slack_АрхивироватьКанал(ПараметрыТеста); - CLI_Slack_ПолучитьСписокКаналов(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Слак_ОткрытьЗакрытьДиалог() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); - - CLI_Slack_ОткрытьДиалог(ПараметрыТеста); - CLI_Slack_ЗакрытьДиалог(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Слак_ЗагрузитьУдалитьФайл() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - CLI_Slack_ПолучитьСписокФайлов(ПараметрыТеста); - CLI_Slack_ЗагрузитьФайл(ПараметрыТеста); - CLI_Slack_СделатьФайлПубличным(ПараметрыТеста); - CLI_Slack_СделатьФайлПриватным(ПараметрыТеста); - CLI_Slack_ПолучитьДанныеФайла(ПараметрыТеста); - CLI_Slack_УдалитьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Слак_ЗагрузитьУдалитьВФ() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - CLI_Slack_ПолучитьСписокВнешнихФайлов(ПараметрыТеста); - CLI_Slack_ДобавитьВнешнийФайл(ПараметрыТеста); - CLI_Slack_ПолучитьВнешнийФайл(ПараметрыТеста); - CLI_Slack_ОтправитьВнешнийФайл(ПараметрыТеста); - CLI_Slack_УдалитьВнешнийФайл(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Airtable - -Процедура CLI_АТ_СоздатьБазу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Workspace", ПараметрыТеста); - - CLI_Airtable_СоздатьБазу(ПараметрыТеста); - CLI_Airtable_ПолучитьТаблицыБазы(ПараметрыТеста); - CLI_Airtable_ПолучитьСписокБаз(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_АТ_СоздатьТаблицу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); - - CLI_Airtable_ПолучитьПолеНомера(ПараметрыТеста); - CLI_Airtable_ПолучитьПолеСтроковое(ПараметрыТеста); - CLI_Airtable_ПолучитьПолеВложения(ПараметрыТеста); - CLI_Airtable_ПолучитьПолеФлажка(ПараметрыТеста); - CLI_Airtable_ПолучитьПолеДаты(ПараметрыТеста); - CLI_Airtable_ПолучитьПолеТелефона(ПараметрыТеста); - CLI_Airtable_ПолучитьПолеПочты(ПараметрыТеста); - CLI_Airtable_ПолучитьПолеСсылки(ПараметрыТеста); - CLI_Airtable_СоздатьТаблицу(ПараметрыТеста); - CLI_Airtable_ИзменитьТаблицу(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_АТ_СоздатьПоле() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); - - CLI_Airtable_СоздатьПоле(ПараметрыТеста); - CLI_Airtable_ИзменитьПоле(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_АТ_СоздатьУдалитьЗаписи() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); - - CLI_Airtable_СоздатьЗаписи(ПараметрыТеста); - CLI_Airtable_ПолучитьЗапись(ПараметрыТеста); - CLI_Airtable_СоздатьКомментарий(ПараметрыТеста); - CLI_Airtable_ИзменитьКомментарий(ПараметрыТеста); - CLI_Airtable_ПолучитьКомментарии(ПараметрыТеста); - CLI_Airtable_УдалитьКомментарий(ПараметрыТеста); - CLI_Airtable_ПолучитьСписокЗаписей(ПараметрыТеста); - CLI_Airtable_УдалитьЗаписи(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Dropbox - -Процедура CLI_ДропБокс_ПолучитьОбновитьТокен() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appkey" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appsecret", ПараметрыТеста); - - CLI_Dropbox_ПолучитьСсылкуАвторизации(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Code", ПараметрыТеста); - - CLI_Dropbox_ПолучитьТокен(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Refresh", ПараметрыТеста); - - CLI_Dropbox_ОбновитьТокен(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ДропБокс_ЗагрузитьФайл() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_Dropbox_ЗагрузитьФайл(ПараметрыТеста); - CLI_Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); - CLI_Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыТеста); - CLI_Dropbox_ВосстановитьОбъектКВерсии(ПараметрыТеста); - CLI_Dropbox_ПолучитьПревью(ПараметрыТеста); - CLI_Dropbox_СкачатьФайл(ПараметрыТеста); - CLI_Dropbox_ПереместитьОбъект(ПараметрыТеста); - CLI_Dropbox_КопироватьОбъект(ПараметрыТеста); - CLI_Dropbox_УдалитьОбъект(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ДропБокс_СоздатьКаталог() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - - CLI_Dropbox_СоздатьПапку(ПараметрыТеста); - CLI_Dropbox_СкачатьПапку(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ДропБокс_ПолучитьСписокФайловПапки() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - - CLI_Dropbox_ПолучитьСписокФайловПапки(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ДропБокс_ЗагрузитьФайлПоURL() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - CLI_Dropbox_ЗагрузитьФайлПоURL(ПараметрыТеста); - CLI_Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ДропБокс_СоздатьУдалитьТег() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - - CLI_Dropbox_ДобавитьТег(ПараметрыТеста); - CLI_Dropbox_ПолучитьСписокТегов(ПараметрыТеста); - CLI_Dropbox_УдалитьТег(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ДропБокс_ПолучитьАккаунт() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - - CLI_Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); - CLI_Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ДропБокс_РаботаСДоступами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_OtherUser", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_FileID" , ПараметрыТеста); - - CLI_Dropbox_ДобавитьПользователейКФайлу(ПараметрыТеста); - CLI_Dropbox_ОпубликоватьПапку(ПараметрыТеста); - CLI_Dropbox_ДобавитьПользователейКПапке(ПараметрыТеста); - CLI_Dropbox_ОтменитьПубликациюПапки(ПараметрыТеста); - CLI_Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыТеста); - CLI_Dropbox_ОтменитьПубликациюФайла(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область VkTeams - -Процедура CLI_ВКТ_ОбщиеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_FileID", ПараметрыТеста); - - CLI_VkTeams_ПроверитьТокен(ПараметрыТеста); - CLI_VkTeams_ПолучитьСобытия(ПараметрыТеста); - CLI_VKTeams_ПолучитьИнформациюОФайле(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВКТ_ОтправкаСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_MessageID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio2" , ПараметрыТеста); - - CLI_VkTeams_ОтправитьТекстовоеСообщение(ПараметрыТеста); - OPI_Инструменты.Пауза(60); - - CLI_VKTeams_ПереслатьСообщение(ПараметрыТеста); - CLI_VKTeams_ОтправитьФайл(ПараметрыТеста); - CLI_VKTeams_ПереслатьФайл(ПараметрыТеста); - CLI_VKTeams_ИзменитьТекстСообщения(ПараметрыТеста); - CLI_VKTeams_ЗакрепитьСообщение(ПараметрыТеста); - CLI_VKTeams_ОткрепитьСообщение(ПараметрыТеста); - CLI_VKTeams_УдалитьСообщение(ПараметрыТеста); - CLI_VKTeams_ОтправитьГолосовоеСообщение(ПараметрыТеста); - CLI_VKTeams_ПереслатьГолосовоеСообщение(ПараметрыТеста); - CLI_VKTeams_СформироватьКнопкуДействия(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ВКТ_УправлениеЧатами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture3" , ПараметрыТеста); - - CLI_VKTeams_ИсключитьПользователейЧата(ПараметрыТеста); - CLI_VKTeams_ИзменитьАватарЧата(ПараметрыТеста); - CLI_VKTeams_ПолучитьИнформациюОЧате(ПараметрыТеста); - CLI_VKTeams_ПолучитьАдминистраторовЧата(ПараметрыТеста); - CLI_VKTeams_ПолучитьПользователейЧата(ПараметрыТеста); - CLI_VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыТеста); - CLI_VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыТеста); - CLI_VKTeams_ЗаблокироватьПользователяЧата(ПараметрыТеста); - CLI_VKTeams_РазблокироватьПользователяЧата(ПараметрыТеста); - CLI_VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыТеста); - CLI_VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыТеста); - CLI_VKTeams_УстановитьЗаголовокЧата(ПараметрыТеста); - CLI_VKTeams_УстановитьОписаниеЧата(ПараметрыТеста); - CLI_VKTeams_УстановитьПравилаЧата(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область OzonSeller - -Процедура CLI_ОзонАПИ_АтрибутыИХарактеристики() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); - - CLI_Ozon_ПолучитьДеревоКатегорийИТиповТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьХарактеристикиКатегории(ПараметрыТеста); - CLI_Ozon_ПолучитьЗначенияХарактеристики(ПараметрыТеста); - CLI_Ozon_НайтиЗначенияХарактеристики(ПараметрыТеста); - CLI_Ozon_ПолучитьЛимитыРаботыСТоварами(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ОзонАПИ_ЗагрузкаИОбновлениеТоваров() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - CLI_Ozon_ПолучитьСтруктуруТовара(ПараметрыТеста); - - // TODO: Вернуть позже - Возврат; - - CLI_Ozon_СоздатьОбновитьТовары(ПараметрыТеста); - CLI_Ozon_ПолучитьСтатусДобавленияТовара(ПараметрыТеста); - CLI_Ozon_ДобавитьВидеоТовара(ПараметрыТеста); - CLI_Ozon_ДобавитьВидеообложкуТовара(ПараметрыТеста); - CLI_Ozon_ДополнитьКомплексныйАтрибут(ПараметрыТеста); - CLI_Ozon_СоздатьТоварыПоOzonID(ПараметрыТеста); - CLI_Ozon_ПолучитьСокращеннуюСтруктуруТовара(ПараметрыТеста); - CLI_Ozon_ПолучитьСтруктуруОбновленияХарактеристик(ПараметрыТеста); - CLI_Ozon_ОбновитьХарактеристикиТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьСтруктуруФильтраТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьСписокТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьОписанияХарактеристикТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьИнформациюОТоварах(ПараметрыТеста); - CLI_Ozon_ПолучитьКонтентРейтингТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьОписаниеТовара(ПараметрыТеста); - CLI_Ozon_ОбновитьИзображенияТовара(ПараметрыТеста); - CLI_Ozon_ПроверитьЗагрузкуИзображенийТоваров(ПараметрыТеста); - CLI_Ozon_ИзменитьАртикулыТоваров(ПараметрыТеста); - CLI_Ozon_АрхивироватьТовары(ПараметрыТеста); - CLI_Ozon_РазархивироватьТовары(ПараметрыТеста); - CLI_Ozon_ЗагрузитьКодыАктивацииТовара(ПараметрыТеста); - CLI_Ozon_ПолучитьСтатусДобавленияКодов(ПараметрыТеста); - CLI_Ozon_ПолучитьКоличествоПодписчиковТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьСвязанныеSKU(ПараметрыТеста); - CLI_Ozon_УдалитьТоварыБезSKU(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ОзонАПИ_Штрихкоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ProductID", ПараметрыТеста); - - // TODO: Вернуть позже - Возврат; - - CLI_Ozon_ПривязатьШтрихкоды(ПараметрыТеста); - CLI_Ozon_СоздатьШтрихкоды(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ОзонАПИ_ЦеныИОстаткиТоваров() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ProductID", ПараметрыТеста); - - CLI_Ozon_ПолучитьКоличествоТоваров(ПараметрыТеста); - CLI_Ozon_ОбновитьЦеныТоваров(ПараметрыТеста); - CLI_Ozon_ОбновитьКоличествоТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьЦеныТоваров(ПараметрыТеста); - CLI_Ozon_ПолучитьИнформациюОбУценке(ПараметрыТеста); - CLI_Ozon_УстановитьСкидкуНаУцененныйТовар(ПараметрыТеста); - CLI_Ozon_ПолучитьСтруктуруОстатковТовара(ПараметрыТеста); - CLI_Ozon_ПолучитьСтруктуруЦеныТовара(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ОзонАПИ_РаботаСоСкладами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); - - CLI_Ozon_ПолучитьСписокСкладов(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ОзонАПИ_РаботаСАкциями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); - - CLI_Ozon_ПолучитьСписокАкций(ПараметрыТеста); - CLI_Ozon_ПолучитьУчаствующиеТоварыАкции(ПараметрыТеста); - CLI_Ozon_ПолучитьДоступныеТоварыАкции(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ОзонАПИ_СхемаFBO() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); - - CLI_Ozon_ПолучитьСписокКластеров(ПараметрыТеста); - CLI_Ozon_ПолучитьСписокСкладовОтгрузки(ПараметрыТеста); - CLI_Ozon_СоздатьЧерновикЗаявкиFBO(ПараметрыТеста); - CLI_Ozon_ПолучитьЧерновикЗаявкиFBO(ПараметрыТеста); - CLI_Ozon_ПолучитьСтруктуруДопПолейОтправления(ПараметрыТеста); - CLI_Ozon_ПолучитьСтруктуруФильтраОтправлений(ПараметрыТеста); - CLI_Ozon_ПолучитьСписокОтправленийFBO(ПараметрыТеста); - CLI_Ozon_ПолучитьТаймслотыFBO(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Neocities - -Процедура CLI_НС_РаботаСФайлами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Gif" , ПараметрыТеста); - - CLI_Neocities_ЗагрузитьФайл(ПараметрыТеста); - CLI_Neocities_ЗагрузитьФайлы(ПараметрыТеста); - CLI_Neocities_ПолучитьСписокФайлов(ПараметрыТеста); - CLI_Neocities_УдалитьВыбранныеФайлы(ПараметрыТеста); - CLI_Neocities_СинхронизироватьКаталоги(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_НС_ПолучениеДанных() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Login" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Password", ПараметрыТеста); - - CLI_Neocities_ПолучитьДанныеОСайте(ПараметрыТеста); - CLI_Neocities_ПолучитьТокен(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Bitrix24 - -Процедура CLI_Б24_РаботаСТокеном() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientSecret", ПараметрыТеста); - - CLI_Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Code", ПараметрыТеста); - - CLI_Bitrix24_ПолучитьТокен(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Refresh", ПараметрыТеста); - - CLI_Bitrix24_ОбновитьТокен(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_СерверноеВремя() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - CLI_Bitrix24_СерверноеВремя(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСНовостями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - CLI_Bitrix24_СоздатьНовость(ПараметрыТеста); - CLI_Bitrix24_ИзменитьНовость(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыТеста); - CLI_Bitrix24_ПолучитьНовости(ПараметрыТеста); - CLI_Bitrix24_ДобавитьКомментарийНовости(ПараметрыТеста); - CLI_Bitrix24_ДобавитьПолучателейКНовости(ПараметрыТеста); - CLI_Bitrix24_УдалитьНовость(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСЗадачами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_UserID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыТеста); - CLI_Bitrix24_СоздатьЗадачу(ПараметрыТеста); - CLI_Bitrix24_СоздатьЗависимостьЗадач(ПараметрыТеста); - CLI_Bitrix24_УдалитьЗависимостьЗадач(ПараметрыТеста); - CLI_Bitrix24_ИзменитьЗадачу(ПараметрыТеста); - CLI_Bitrix24_ПолучитьЗадачу(ПараметрыТеста); - CLI_Bitrix24_ОтключитьЗвукЗадачи(ПараметрыТеста); - CLI_Bitrix24_ВключитьЗвукЗадачи(ПараметрыТеста); - CLI_Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыТеста); - CLI_Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыТеста); - CLI_Bitrix24_ДелегироватьЗадачу(ПараметрыТеста); - CLI_Bitrix24_ОтложитьЗадачу(ПараметрыТеста); - CLI_Bitrix24_ЗавершитьЗадачу(ПараметрыТеста); - CLI_Bitrix24_ОтклонитьЗадачу(ПараметрыТеста); - CLI_Bitrix24_ПринятьЗадачу(ПараметрыТеста); - CLI_Bitrix24_ВозобновитьЗадачу(ПараметрыТеста); - CLI_Bitrix24_НачатьВыполнениеЗадачи(ПараметрыТеста); - CLI_Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыТеста); - CLI_Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыТеста); - CLI_Bitrix24_ПриостановитьЗадачу(ПараметрыТеста); - CLI_Bitrix24_ПолучитьИсториюЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСписокЗадач(ПараметрыТеста); - CLI_Bitrix24_ПроверитьДоступКЗадаче(ПараметрыТеста); - CLI_Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыТеста); - CLI_Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыТеста); - CLI_Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыТеста); - CLI_Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыТеста); - CLI_Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыТеста); - - Наименование = "Картинка задачи.jpg"; - Картинка = ПараметрыТеста["Picture"]; - IDПриемника = 3; - - URL = ПараметрыТеста["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.ЗагрузитьФайлВХранилище(URL, Наименование, Картинка, IDПриемника); - IDФайла = Результат["result"]["ID"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TaskFileID", IDФайла); - ПараметрыТеста.Вставить("Bitrix24_TaskFileID", IDФайла); - - CLI_Bitrix24_ДобавитьФайлВЗадачу(ПараметрыТеста); - - OPI_Bitrix24.УдалитьФайл(URL, IDФайла); - - CLI_Bitrix24_УдалитьЗадачу(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСКомментариями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Час = 3600; - Сутки = 24; - Исполнитель = 1; - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); - СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "2"); - СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); - СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); - - URL = ПараметрыТеста["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); - IDЗадачи = Результат["result"]["task"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentsTaskID", IDЗадачи); - ПараметрыТеста.Вставить("Bitrix24_CommentsTaskID", IDЗадачи); - - CLI_Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыТеста); - CLI_Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыТеста); - CLI_Bitrix24_СоздатьРезультатИзКомментария(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСписокРезультатов(ПараметрыТеста); - CLI_Bitrix24_УдалитьРезультатИзКомментария(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьКомменатрийЗадачи(ПараметрыТеста); - CLI_Bitrix24_УдалитьКомментарийЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыТеста); - - OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСДиском() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - CLI_Bitrix24_ПолучитьСписокХранилищ(ПараметрыТеста); - CLI_Bitrix24_ПолучитьХранилищеПриложения(ПараметрыТеста); - CLI_Bitrix24_ПереименоватьХранилище(ПараметрыТеста); - CLI_Bitrix24_ПолучитьХранилище(ПараметрыТеста); - CLI_Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыТеста); - CLI_Bitrix24_ПолучитьИнформациюОФайле(ПараметрыТеста); - CLI_Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыТеста); - CLI_Bitrix24_ПереименоватьФайл(ПараметрыТеста); - CLI_Bitrix24_ПоместитьФайлВКорзину(ПараметрыТеста); - CLI_Bitrix24_ВосстановитьФайл(ПараметрыТеста); - CLI_Bitrix24_СоздатьКаталогВХранилище(ПараметрыТеста); - CLI_Bitrix24_ПереименоватьКаталог(ПараметрыТеста); - CLI_Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыТеста); - CLI_Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыТеста); - CLI_Bitrix24_СоздатьПодкаталог(ПараметрыТеста); - CLI_Bitrix24_ПереместитьФайлВКаталог(ПараметрыТеста); - CLI_Bitrix24_СкопироватьКаталог(ПараметрыТеста); - CLI_Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыТеста); - CLI_Bitrix24_СкопироватьФайл(ПараметрыТеста); - CLI_Bitrix24_УдалитьФайл(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыТеста); - CLI_Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыТеста); - CLI_Bitrix24_ПереместитьКаталог(ПараметрыТеста); - CLI_Bitrix24_ПоместитьКаталогВКорзину(ПараметрыТеста); - CLI_Bitrix24_ВосстановитьКаталог(ПараметрыТеста); - CLI_Bitrix24_УдалитьКаталог(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_УчетРабочегоВремени() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Час = 3600; - Сутки = 24; - Исполнитель = 1; - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); - СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "2"); - СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); - СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); - - URL = ПараметрыТеста["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); - IDЗадачи = Результат["result"]["task"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ElapsedTaskID", IDЗадачи); - ПараметрыТеста.Вставить("Bitrix24_ElapsedTaskID", IDЗадачи); - - CLI_Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыТеста); - CLI_Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыТеста); - CLI_Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыТеста); - CLI_Bitrix24_НачатьУчетВремени(ПараметрыТеста); - CLI_Bitrix24_ПриостановитьУчетВремени(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыТеста); - CLI_Bitrix24_ЗавершитьУчетВремени(ПараметрыТеста); - CLI_Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыТеста); - - OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); - -КонецПроцедуры - -Процедура CLI_Б24_Канбан() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Час = 3600; - Сутки = 24; - Исполнитель = 1; - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); - СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "2"); - СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); - СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); - - URL = ПараметрыТеста["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); - IDЗадачи = Результат["result"]["task"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_KanbanTaskID", IDЗадачи); - ПараметрыТеста.Вставить("Bitrix24_KanbanTaskID", IDЗадачи); - - CLI_Bitrix24_ДобавитьСтадиюКанбана(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтадииКанбана(ПараметрыТеста); - CLI_Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыТеста); - CLI_Bitrix24_ИзменитьСтадиюКанбана(ПараметрыТеста); - - OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); - - CLI_Bitrix24_УдалитьСтадиюКанбана(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСУведомлениями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - CLI_Bitrix24_СоздатьПерсональноеУведомление(ПараметрыТеста); - CLI_Bitrix24_СоздатьСистемноеУведомление(ПараметрыТеста); - CLI_Bitrix24_УдалитьУведомление(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСПолямиЗадач() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_HookTaskFieldID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_TaskFieldID" , ПараметрыТеста); - - CLI_Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыТеста); - CLI_Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыТеста); - CLI_Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_УправлениеПодразделениями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - CLI_Bitrix24_СоздатьПодразделение(ПараметрыТеста); - CLI_Bitrix24_ПолучитьПодразделения(ПараметрыТеста); - CLI_Bitrix24_ИзменитьПодразделение(ПараметрыТеста); - CLI_Bitrix24_УдалитьПодразделение(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСЧатами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - CLI_Bitrix24_ПолучитьСтатусПользователя(ПараметрыТеста); - CLI_Bitrix24_УстановитьСтатусПользователя(ПараметрыТеста); - CLI_Bitrix24_ПолучитьПользователей(ПараметрыТеста); - CLI_Bitrix24_СоздатьЧат(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - CLI_Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыТеста); - CLI_Bitrix24_ИсключитьПользователяИзЧата(ПараметрыТеста); - CLI_Bitrix24_ДобавитьПользователейВЧат(ПараметрыТеста); - CLI_Bitrix24_ИзменитьЗаголовокЧата(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - CLI_Bitrix24_ИзменитьЦветЧата(ПараметрыТеста); - CLI_Bitrix24_ИзменитьКартинкуЧата(ПараметрыТеста); - CLI_Bitrix24_ОтключитьУведомленияЧата(ПараметрыТеста); - CLI_Bitrix24_ВключитьУведомленияЧата(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - CLI_Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыТеста); - CLI_Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыТеста); - CLI_Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыТеста); - CLI_Bitrix24_ПолучитьДиалог(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - CLI_Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыТеста); - CLI_Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыТеста); - CLI_Bitrix24_ОтправитьСообщение(ПараметрыТеста); - CLI_Bitrix24_ИзменитьСообщение(ПараметрыТеста); - CLI_Bitrix24_ПолучитьБлокКартинки(ПараметрыТеста); - CLI_Bitrix24_ПолучитьБлокФайла(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - CLI_Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыТеста); - CLI_Bitrix24_УдалитьСообщение(ПараметрыТеста); - CLI_Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыТеста); - CLI_Bitrix24_ОтправитьФайл(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - CLI_Bitrix24_ПрочитатьВсе(ПараметрыТеста); - CLI_Bitrix24_СменитьВладельцаЧата(ПараметрыТеста); - CLI_Bitrix24_ПокинутьЧат(ПараметрыТеста); - - CLI_Bitrix24_ПолучитьСтруктуруЧата(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_УправлениеПользователями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - CLI_Bitrix24_ПолучитьТекущегоПользователя(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтурктуруПользователя(ПараметрыТеста); - CLI_Bitrix24_СоздатьПользователя(ПараметрыТеста); - CLI_Bitrix24_НайтиПользователей(ПараметрыТеста); - CLI_Bitrix24_ИзменитьПользователя(ПараметрыТеста); - CLI_Bitrix24_ПолучитьПользователя(ПараметрыТеста); - CLI_Bitrix24_ИзменитьСтатусПользователя(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСЛидами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - CLI_Bitrix24_ПолучитьСписокЛидов(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруЛида(ПараметрыТеста); - CLI_Bitrix24_СоздатьЛид(ПараметрыТеста); - CLI_Bitrix24_ПолучитьЛид(ПараметрыТеста); - CLI_Bitrix24_ИзменитьЛид(ПараметрыТеста); - CLI_Bitrix24_УдалитьЛид(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСоСделками() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - CLI_Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруСделки(ПараметрыТеста); - CLI_Bitrix24_СоздатьСделку(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСделку(ПараметрыТеста); - CLI_Bitrix24_ИзменитьСделку(ПараметрыТеста); - CLI_Bitrix24_УдалитьСделку(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСписокСделок(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Б24_РаботаСКалендарями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - CLI_Bitrix24_СоздатьКалендарь(ПараметрыТеста); - CLI_Bitrix24_ИзменитьКалендарь(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСписокКалендарей(ПараметрыТеста); - CLI_Bitrix24_СоздатьСобытиеКалендаря(ПараметрыТеста); - CLI_Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСобытияКалендарей(ПараметрыТеста); - CLI_Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыТеста); - CLI_Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыТеста); - CLI_Bitrix24_УдалитьСобытиеКалендаря(ПараметрыТеста); - CLI_Bitrix24_УдалитьКалендарь(ПараметрыТеста); - CLI_Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); - CLI_Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКаледнаря(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыТеста); - CLI_Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область CDEK - -Процедура CLI_СдэкАПИ_ОбщиеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Account" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Password" , ПараметрыТеста); - - CLI_CDEK_ПолучитьТокен(ПараметрыТеста); - CLI_CDEK_ПолучитьЧекиНаДату(ПараметрыТеста); - CLI_CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыТеста); - CLI_CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыТеста); - CLI_CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыТеста); - CLI_CDEK_ПолучитьСписокОфисов(ПараметрыТеста); - CLI_CDEK_ПолучитьСписокРегионов(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_СдэкАПИ_РаботаСЗаказами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token" , ПараметрыТеста); - - CLI_CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста); - CLI_CDEK_СоздатьЗаказ(ПараметрыТеста); - - OPI_Инструменты.Пауза(25); - - CLI_CDEK_ПолучитьЗаказ(ПараметрыТеста); - CLI_CDEK_ПолучитьЗаказПоНомеру(ПараметрыТеста); - CLI_CDEK_СформироватьКвитанцию(ПараметрыТеста); - CLI_CDEK_СформироватьШтрихкод(ПараметрыТеста); - CLI_CDEK_СоздатьПреалерт(ПараметрыТеста); - - OPI_Инструменты.Пауза(25); - - CLI_CDEK_ПолучитьКвитанцию(ПараметрыТеста); - CLI_CDEK_ПолучитьШтрихкод(ПараметрыТеста); - CLI_CDEK_ПолучитьПреалерт(ПараметрыТеста); - CLI_CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыТеста); - CLI_CDEK_ПолучитьЧекЗаказа(ПараметрыТеста); - CLI_CDEK_ИзменитьЗаказ(ПараметрыТеста); - CLI_CDEK_ОформитьКлиентскийВозврат(ПараметрыТеста); - CLI_CDEK_СоздатьОтказ(ПараметрыТеста); - CLI_CDEK_УдалитьЗаказ(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token", ПараметрыТеста); - - CLI_CDEK_СоздатьЗаказ(ПараметрыТеста); - - OPI_Инструменты.Пауза(25); - - CLI_CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыТеста); - CLI_CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыТеста); - CLI_CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыТеста); - CLI_CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыТеста); - CLI_CDEK_ПолучитьОписаниеДоговоренности(ПараметрыТеста); - CLI_CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыТеста); - CLI_CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыТеста); - - OPI_Инструменты.Пауза(25); - - CLI_CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыТеста); - CLI_CDEK_УдалитьЗаказ(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область YandexMetrika - -Процедура CLI_ЯМетрика_УправлениеМетками() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); - - CLI_YandexMetrika_СоздатьМетку(ПараметрыТеста); - CLI_YandexMetrika_ПолучитьСписокМеток(ПараметрыТеста); - CLI_YandexMetrika_ИзменитьМетку(ПараметрыТеста); - CLI_YandexMetrika_ПолучитьМетку(ПараметрыТеста); - CLI_YandexMetrika_УдалитьМетку(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ЯМетрика_УправлениеСчетчиками() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); - - CLI_YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыТеста); - CLI_YandexMetrika_СоздатьСчетчик(ПараметрыТеста); - CLI_YandexMetrika_ПолучитьСчетчик(ПараметрыТеста); - CLI_YandexMetrika_ИзменитьСчетчик(ПараметрыТеста); - CLI_YandexMetrika_УдалитьСчетчик(ПараметрыТеста); - CLI_YandexMetrika_ВосстановитьСчетчик(ПараметрыТеста); - CLI_YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыТеста); - CLI_YandexMetrika_УдалитьСчетчик(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_ЯМетрика_УправлениеОперациями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); - - CLI_YandexMetrika_СоздатьСчетчик(ПараметрыТеста); - CLI_YandexMetrika_ПолучитьСписокОпераций(ПараметрыТеста); - CLI_YandexMetrika_УдалитьСчетчик(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область S3 - -Процедура CLI_AWS_ОбщиеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста); - - CLI_S3_ПолучитьСтруктуруДанных(ПараметрыТеста); - CLI_S3_ОтправитьЗапросБезТела(ПараметрыТеста); - CLI_S3_ОтправитьЗапросСТелом(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_AWS_РаботаСБакетами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста); - - CLI_S3_СоздатьБакет(ПараметрыТеста); - CLI_S3_ПолучитьСписокБакетов(ПараметрыТеста); - CLI_S3_ПроверитьДоступностьБакета(ПараметрыТеста); - CLI_S3_УстановитьТегиБакета(ПараметрыТеста); - CLI_S3_ПолучитьТегиБакета(ПараметрыТеста); - CLI_S3_УдалитьТегиБакета(ПараметрыТеста); - CLI_S3_УстановитьШифрованиеБакета(ПараметрыТеста); - CLI_S3_ПолучитьШифрованиеБакета(ПараметрыТеста); - CLI_S3_УдалитьШифрованиеБакета(ПараметрыТеста); - CLI_S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста); - CLI_S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыТеста); - CLI_S3_УдалитьБакет(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_AWS_РаботаСОбъектами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); - - CLI_S3_СоздатьБакет(ПараметрыТеста); - CLI_S3_ЗагрузитьОбъект(ПараметрыТеста); - CLI_S3_ЗагрузитьОбъектЦеликом(ПараметрыТеста); - CLI_S3_ИнициализироватьЗагрузкуЧастями(ПараметрыТеста); - CLI_S3_ОтменитьЗагрузкуЧастями(ПараметрыТеста); - CLI_S3_ПолучитьОписаниеОбъекта(ПараметрыТеста); - CLI_S3_КопироватьОбъект(ПараметрыТеста); - CLI_S3_УстановитьТегиОбъекта(ПараметрыТеста); - CLI_S3_ПолучитьТегиОбъекта(ПараметрыТеста); - CLI_S3_УдалитьТегиОбъекта(ПараметрыТеста); - CLI_S3_ПолучитьСписокОбъектов(ПараметрыТеста); - CLI_S3_ПолучитьСписокВерсийОбъектов(ПараметрыТеста); - CLI_S3_ПолучитьОбъект(ПараметрыТеста); - CLI_S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыТеста); - CLI_S3_УдалитьОбъект(ПараметрыТеста); - CLI_S3_УдалитьБакет(ПараметрыТеста); - CLI_S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область TCP - -Процедура CLI_TC_Клиент() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_Address" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_AddressTls", ПараметрыТеста); - - CLI_TCP_ОбработатьЗапрос(ПараметрыТеста); - CLI_TCP_ПолучитьНастройкиTls(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область SQLite - -Процедура CLI_SQLL_ОсновныеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - - База = ПолучитьИмяВременногоФайла("sqlite"); - ПолучитьДвоичныеДанныеИзСтроки("").Записать(База); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); - OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_Ext", ПараметрыТеста); - - CLI_SQLite_ВыполнитьЗапросSQL(ПараметрыТеста); - - Попытка - УдалитьФайлы(База); - Исключение - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite"); - КонецПопытки; - -КонецПроцедуры - -Процедура CLI_SQLL_ORM() Экспорт - - ПараметрыТеста = Новый Структура; - - База = ПолучитьИмяВременногоФайла("sqlite"); - ПолучитьДвоичныеДанныеИзСтроки("").Записать(База); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); - OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); - - CLI_SQLite_СоздатьТаблицу(ПараметрыТеста); - CLI_SQLite_ДобавитьЗаписи(ПараметрыТеста); - CLI_SQLite_ПолучитьЗаписи(ПараметрыТеста); - CLI_SQLite_ОбновитьЗаписи(ПараметрыТеста); - CLI_SQLite_УдалитьЗаписи(ПараметрыТеста); - CLI_SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); - CLI_SQLite_ОчиститьТаблицу(ПараметрыТеста); - CLI_SQLite_УдалитьТаблицу(ПараметрыТеста); - CLI_SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); - - Попытка - УдалитьФайлы(База); - Исключение - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite"); - КонецПопытки; - -КонецПроцедуры - -#КонецОбласти - -#Область PostgreSQL - -Процедура CLI_Postgres_ОсновныеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL" , ПараметрыТеста); - - CLI_PostgreSQL_СформироватьСтрокуПодключения(ПараметрыТеста); - CLI_PostgreSQL_ВыполнитьЗапросSQL(ПараметрыТеста); - CLI_PostgreSQL_ПолучитьНастройкиTls(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_Postgres_ORM() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_PostgreSQL_СоздатьБазуДанных(ПараметрыТеста); - CLI_PostgreSQL_СоздатьТаблицу(ПараметрыТеста); - CLI_PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); - CLI_PostgreSQL_ДобавитьЗаписи(ПараметрыТеста); - CLI_PostgreSQL_ПолучитьЗаписи(ПараметрыТеста); - CLI_PostgreSQL_ОбновитьЗаписи(ПараметрыТеста); - CLI_PostgreSQL_УдалитьЗаписи(ПараметрыТеста); - CLI_PostgreSQL_ОчиститьТаблицу(ПараметрыТеста); - CLI_PostgreSQL_УдалитьТаблицу(ПараметрыТеста); - CLI_PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыТеста); - CLI_PostgreSQL_УдалитьБазуДанных(ПараметрыТеста); - CLI_PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область MySQL - -Процедура CLI_MYS_ОсновныеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL2" , ПараметрыТеста); - - CLI_MySQL_СформироватьСтрокуПодключения(ПараметрыТеста); - CLI_MySQL_ВыполнитьЗапросSQL(ПараметрыТеста); - CLI_MySQL_ПолучитьНастройкиTls(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_MYS_ORM() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_MySQL_СоздатьБазуДанных(ПараметрыТеста); - CLI_MySQL_СоздатьТаблицу(ПараметрыТеста); - CLI_MySQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); - CLI_MySQL_ДобавитьЗаписи(ПараметрыТеста); - CLI_MySQL_ПолучитьЗаписи(ПараметрыТеста); - CLI_MySQL_ОбновитьЗаписи(ПараметрыТеста); - CLI_MySQL_УдалитьЗаписи(ПараметрыТеста); - CLI_MySQL_ОчиститьТаблицу(ПараметрыТеста); - CLI_MySQL_УдалитьТаблицу(ПараметрыТеста); - CLI_MySQL_УдалитьБазуДанных(ПараметрыТеста); - CLI_MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область GreenAPI - -Процедура CLI_GAPI_Аккаунт() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_GreenAPI_АрхивироватьЧат(ПараметрыТеста); - CLI_GreenAPI_РазархивироватьЧат(ПараметрыТеста); - CLI_GreenAPI_СформироватьПараметрыДоступа(ПараметрыТеста); - CLI_GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыТеста); - CLI_GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); - CLI_GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыТеста); - CLI_GreenAPI_УстановитьНастройкиИнстанса(ПараметрыТеста); - CLI_GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыТеста); - CLI_GreenAPI_УстановитьКартинкуПрофиля(ПараметрыТеста); - CLI_GreenAPI_ПерезапуститьИнстанс(ПараметрыТеста); - // CLI_GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста); - // CLI_GreenAPI_РазлогинитьИнстанс(ПараметрыТеста); - // CLI_GreenAPI_ПолучитьQR(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_GAPI_УправлениеГруппами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_GreenAPI_СоздатьГруппу(ПараметрыТеста); - CLI_GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыТеста); - CLI_GreenAPI_ИзменитьИмяГруппы(ПараметрыТеста); - CLI_GreenAPI_УстановитьКартинкуГруппы(ПараметрыТеста); - CLI_GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыТеста); - CLI_GreenAPI_ИсключитьУчастникаГруппы(ПараметрыТеста); - CLI_GreenAPI_НазначитьПраваАдминистратора(ПараметрыТеста); - CLI_GreenAPI_ОтозватьПраваАдминистратора(ПараметрыТеста); - CLI_GreenAPI_ПокинутьГруппу(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_GAPI_ОтправкаСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - CLI_GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыТеста); - CLI_GreenAPI_ОтправитьФайл(ПараметрыТеста); - CLI_GreenAPI_ОтправитьФайлПоURL(ПараметрыТеста); - CLI_GreenAPI_ОтправитьОпрос(ПараметрыТеста); - CLI_GreenAPI_ПолучитьОписаниеЛокации(ПараметрыТеста); - CLI_GreenAPI_ОтправитьЛокацию(ПараметрыТеста); - CLI_GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыТеста); - CLI_GreenAPI_ОтправитьКонтакт(ПараметрыТеста); - CLI_GreenAPI_ПереслатьСообщения(ПараметрыТеста); - CLI_GreenAPI_ИзменитьТекстСообщения(ПараметрыТеста); - CLI_GreenAPI_УдалитьСообщение(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_GAPI_ПолучениеУведомлений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_FileMessageID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_DownloadMessageID", ПараметрыТеста); - - CLI_GreenAPI_ПолучитьУведомление(ПараметрыТеста); - CLI_GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыТеста); - CLI_GreenAPI_СкачатьФайлСообщения(ПараметрыТеста); - CLI_GreenAPI_УстановитьОтметкуПрочтения(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_GAPI_ОчередьСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - - CLI_GreenAPI_ПолучитьОчередьСообщений(ПараметрыТеста); - CLI_GreenAPI_ОчиститьОчередьСообщений(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_GAPI_ЖурналыСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MessageID" , ПараметрыТеста); - - CLI_GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста); - CLI_GreenAPI_ПолучитьСообщение(ПараметрыТеста); - CLI_GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста); - CLI_GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область RCON - -Процедура CLI_RC_ВыполнениеКоманд() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_Password", ПараметрыТеста); - - CLI_RCON_СформироватьПараметрыСоединения(ПараметрыТеста); - CLI_RCON_ВыполнитьКоманду(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Ollama - -Процедура CLI_OLLM_ОбработкаЗапросов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); - - CLI_Ollama_СкачатьМодель(ПараметрыТеста); - CLI_Ollama_ПолучитьВерсию(ПараметрыТеста); - CLI_Ollama_ПолучитьОтвет(ПараметрыТеста); - CLI_Ollama_ПолучитьОтветВКонтексте(ПараметрыТеста); - CLI_Ollama_ПолучитьПредставления(ПараметрыТеста); - CLI_Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыТеста); - CLI_Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыТеста); - CLI_Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыТеста); - CLI_Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_OLLM_РаботаСМоделями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); - - CLI_Ollama_СкачатьМодель(ПараметрыТеста); - CLI_Ollama_ЗагрузитьМодельВПамять(ПараметрыТеста); - CLI_Ollama_ВыгрузитьМодельИзПамяти(ПараметрыТеста); - CLI_Ollama_СоздатьМодель(ПараметрыТеста); - CLI_Ollama_ПолучитьИнформациюОМодели(ПараметрыТеста); - CLI_Ollama_ПолучитьСписокМоделей(ПараметрыТеста); - CLI_Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыТеста); - CLI_Ollama_КопироватьМодель(ПараметрыТеста); - CLI_Ollama_ОтправитьМодель(ПараметрыТеста); - CLI_Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыТеста); - CLI_Ollama_УдалитьМодель(ПараметрыТеста); - -КонецПроцедуры - -Процедура CLI_OLLM_РаботаСBlob() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Blob" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - CLI_Ollama_ОтправитьBlob(ПараметрыТеста); - CLI_Ollama_ПроверитьBlob(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область HTTP - -Процедура CLI_HTTP_Инициализация() Экспорт - - ПараметрыТеста = Новый Структура; - -КонецПроцедуры - -Процедура CLI_HTTP_УстановкаТела() Экспорт - - ПараметрыТеста = Новый Структура; - -КонецПроцедуры - -Процедура CLI_HTTP_Настройки() Экспорт - - ПараметрыТеста = Новый Структура; - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьПараметрыВК() - - Параметры = Новый Структура; - НомерГруппы = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_GroupID"); - - Параметры.Вставить("access_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_Token")); - Параметры.Вставить("owner_id" , "-" + НомерГруппы); - Параметры.Вставить("app_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_AppID")); - Параметры.Вставить("group_id" , НомерГруппы); - - Возврат Параметры; - -КонецФункции - -Функция ПолучитьПараметрыАвторизацииТвиттер() - - Параметры = Новый Соответствие; - - Параметры.Вставить("redirect_uri" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Redirect")); - Параметры.Вставить("client_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClinetID")); - Параметры.Вставить("client_secret" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClientSecret")); - Параметры.Вставить("access_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Token")); - Параметры.Вставить("refresh_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Refresh")); - Параметры.Вставить("oauth_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthToken")); - Параметры.Вставить("oauth_token_secret" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthSecret")); - - Параметры.Вставить("oauth_consumer_key" - , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthConsumerKey")); - Параметры.Вставить("oauth_consumer_secret" - , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthConsumerSecret")); - - Возврат Параметры; - -КонецФункции - -#Область АтомарныеТесты - -#Область Telegram - -Процедура CLI_Telegram_ПолучитьИнформациюБота(ПараметрыФункции) - - Опции = Новый Структура("token", ПараметрыФункции["Telegram_Token"]); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьИнформациюБота", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюБота", "Telegram"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИнформацияБота(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ПолучитьОбновления(ПараметрыФункции) - - Опции = Новый Структура("token", ПараметрыФункции["Telegram_Token"]); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьОбновления", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбновления", "Telegram"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМассив(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_УстановитьWebhook(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("url" , ПараметрыФункции["Telegram_URL"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УстановитьWebhook", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьWebhook", "Telegram"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмУстановкаВебхук(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_УдалитьWebhook(ПараметрыФункции) - - Опции = Новый Структура("token", ПараметрыФункции["Telegram_Token"]); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьWebhook", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьWebhook", "Telegram"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмУдалениеВебхук(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - Текст = ПараметрыФункции["String"]; - - Опции = Новый Структура; - Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); - - IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_MessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("Telegram_MessageID", IDСообщения, "Строка", ПараметрыФункции); - - Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (канал)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); - - IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_ChannelMessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("Telegram_ChannelMessageID", IDСообщения, "Строка", ПараметрыФункции); - - // Дополнительный тест 1 - Опции.Вставить("text" , "Текст html %%F0%%9F%%93%%9E 10%%"); - Опции.Вставить("parsemode", "HTML"); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (HTML)"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат); - - // Дополнительный тест 2 - Опции.Вставить("text" , "%%F0%%9F%%A4%%BC"); - Опции.Вставить("parsemode", "Markdown"); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (emoji)"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат); - - // Дополнительный тест 3 - Опции.Вставить("text" , "Текст %%F0%%9F%%A5%%9D и emoji \(10%%\)"); - Опции.Вставить("parsemode", "MarkdownV2"); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (текст и emoji)"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыФункции) - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Кнопка1"); - МассивКнопок.Добавить("Кнопка2"); - МассивКнопок.Добавить("Кнопка3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьКлавиатуруПоМассивуКнопок", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьКартинку(ПараметрыФункции) - - Текст = ПараметрыФункции["String"]; - Картинка = ПараметрыФункции["Picture"]; - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("text" , Текст); - Опции.Вставить("picture" , Картинка); - - КартинкаПуть = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, КартинкаПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКартинку", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Текст); - - IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_PicMessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("Telegram_PicMessageID", IDСообщения, "Строка", ПараметрыФункции); - - Опции.Вставить("picture" , КартинкаПуть); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКартинку (Путь)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Текст); - - УдалитьФайлы(КартинкаПуть); - - IDФайла = Результат["result"]["photo"][0]["file_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_FileID", IDФайла); - - ПараметрыФункции.Вставить("Telegram_FileID", IDФайла); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьВидео(ПараметрыФункции) - - Текст = ПараметрыФункции["String"]; - Видео = ПараметрыФункции["Video"]; - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("text" , Текст); - Опции.Вставить("video" , Видео); - - ВидеоПуть = ПолучитьИмяВременногоФайла("mp4"); - КопироватьФайл(Видео, ВидеоПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьВидео", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмВидео(Результат, Текст); - - Опции.Вставить("video" , ВидеоПуть); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьВидео (Путь)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмВидео(Результат, Текст); - - УдалитьФайлы(ВидеоПуть); - - IDФайла = Результат["result"]["video"]["file_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_FileID", IDФайла); - - ПараметрыФункции.Вставить("Telegram_FileID", IDФайла); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьАудио(ПараметрыФункции) - - Текст = ПараметрыФункции["String"]; - Аудио = ПараметрыФункции["Audio"]; - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("text" , Текст); - Опции.Вставить("audio" , Аудио); - - АудиоПуть = ПолучитьИмяВременногоФайла("mp3"); - КопироватьФайл(Аудио, АудиоПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьАудио", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмАудио(Результат, Текст); - - Опции.Вставить("audio" , АудиоПуть); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьАудио (Путь)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмАудио(Результат, Текст); - - УдалитьФайлы(АудиоПуть); - - IDФайла = Результат["result"]["audio"]["file_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_FileID", IDФайла); - - ПараметрыФункции.Вставить("Telegram_FileID", IDФайла); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьДокумент(ПараметрыФункции) - - Текст = ПараметрыФункции["String"]; - Документ = ПараметрыФункции["Document"]; - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("text" , Текст); - Опции.Вставить("doc" , Документ); - - ДокументПуть = ПолучитьИмяВременногоФайла("docx"); - КопироватьФайл(Документ, ДокументПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьДокумент", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмДокумент(Результат, Текст); - - Опции.Вставить("doc" , ДокументПуть); - Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьДокумент (Путь)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмДокумент(Результат, Текст); - - Опции.Вставить("filename", "custom.docx"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьДокумент (Имя)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмДокумент(Результат, Текст); - - УдалитьФайлы(ДокументПуть); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьГифку(ПараметрыФункции) - - Текст = ПараметрыФункции["String"]; - Гифка = ПараметрыФункции["GIF"]; - - Опции = Новый Структура; - Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("text" , Текст); - Опции.Вставить("gif" , Гифка); - - ГифкаПуть = ПолучитьИмяВременногоФайла("gif"); - КопироватьФайл(Гифка, ГифкаПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьГифку", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмГифка(Результат, Текст); - - Опции.Вставить("gif" , ГифкаПуть); - Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьГифку (Путь)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмГифка(Результат, Текст); - - УдалитьФайлы(ГифкаПуть); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьМедиагруппу(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - Видео = ПараметрыФункции["Video"]; - - КартинкаПуть = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, КартинкаПуть); - - Медиагруппа = Новый Соответствие; - Медиагруппа.Вставить(КартинкаПуть, "photo"); - Медиагруппа.Вставить(Видео , "video"); - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("text" , ПараметрыФункции["String"]); - Опции.Вставить("media" , Медиагруппа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМедиагруппу", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМедиагруппа(Результат); - - ДокументURL = ПараметрыФункции["Document"]; - ДокументПуть = ПолучитьИмяВременногоФайла("docx"); - - КопироватьФайл(ДокументURL, ДокументПуть); - - МедиаГруппа = Новый Соответствие; - Медиагруппа.Вставить(ДокументURL , "document"); - Медиагруппа.Вставить(ДокументПуть, "document"); - - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - Опции.Вставить("media" , Медиагруппа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМедиагруппу (доки)", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМедиагруппа(Результат); - - УдалитьФайлы(КартинкаПуть); - УдалитьФайлы(ДокументПуть); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьМестоположение(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("lat" , ПараметрыФункции["Lat"]); - Опции.Вставить("long" , ПараметрыФункции["Long"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМестоположение", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМестоположение(Результат); - - Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМестоположение (канал)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМестоположение(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьКонтакт(ПараметрыФункции) - - Имя = ПараметрыФункции["Name"]; - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("surname", ПараметрыФункции["Surname"]); - Опции.Вставить("phone" , ПараметрыФункции["Phone"]); - Опции.Вставить("name" , Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКонтакт(Результат, Имя); - - Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт (канал)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКонтакт(Результат, Имя); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОтправитьОпрос(ПараметрыФункции) - - Вопрос = "Какой ваш любимый цвет?"; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить("Красный"); - МассивОтветов.Добавить("Желтый"); - МассивОтветов.Добавить("Зеленый"); - МассивОтветов.Добавить("Синий"); - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("question", Вопрос); - Опции.Вставить("options" , МассивОтветов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьОпрос", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОпрос(Результат, Вопрос); - - Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьОпрос (канал)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОпрос(Результат, Вопрос); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_СкачатьФайл(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("fileid" , ПараметрыФункции["Telegram_FileID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкачатьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайл", "Telegram"); - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("ДвоичныеДанные"); - -КонецПроцедуры - -Процедура CLI_Telegram_ПереслатьСообщение(ПараметрыФункции) - - IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("from" , ПараметрыФункции["Telegram_ChannelID"]); - Опции.Вставить("to" , ПараметрыФункции["Telegram_ChatID"]); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПереслатьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьСообщение", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмПереслать(Результат, IDСообщения); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_Бан(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - Опции.Вставить("user" , ПараметрыФункции["Telegram_ChatID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Бан", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "Бан", "Telegram"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмБан(Результат); - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_Разбан(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - Опции.Вставить("user" , ПараметрыФункции["Telegram_ChatID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Разбан", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "Разбан", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмБан(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_СоздатьСсылкуПриглашение(ПараметрыФункции) - - Сутки = 86400; - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - Заголовок = "Ссылка " + Строка(ТекущаяДата); - Истечение = ТекущаяДата + Сутки; - UnixИстечение = OPI_Инструменты.UNIXTime(Истечение); - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - Опции.Вставить("expire", Истечение); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("limit" , 200); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьСсылкуПриглашение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСсылкуПриглашение", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмПриглашение(Результат, Заголовок, UnixИстечение); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ЗакрепитьСообщение(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - Опции.Вставить("message", ПараметрыФункции["Telegram_ChannelMessageID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрепитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрепитьСообщение", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ОткрепитьСообщение(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - Опции.Вставить("message", ПараметрыФункции["Telegram_ChannelMessageID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрепитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрепитьСообщение", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ПолучитьЧислоУчастников(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьЧислоУчастников", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧислоУчастников", "Telegram"); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмЧисло(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ПолучитьСписокИконокАватаров(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьСписокИконокАватаров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокИконокАватаров", "Telegram"); - - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено(); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_СоздатьТемуФорума(ПараметрыФункции) - - Имя = "Тестовая тема " + Строка(Новый УникальныйИдентификатор); - Иконка = "5357419403325481346"; - Чат = ПараметрыФункции["Telegram_ForumID"]; - Токен = ПараметрыФункции["Telegram_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("forum" , Чат); - Опции.Вставить("icon" , Иконка); - Опции.Вставить("title" , Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТемуФорума", "Telegram"); - - Тема = Результат["result"]["message_thread_id"]; - - OPI_Инструменты.ДобавитьПоле("Telegram_TopicID", Тема, "Строка", ПараметрыФункции); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_TopicID", ПараметрыФункции["Telegram_TopicID"]); - - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСозданиеТемы(Результат, Имя, Иконка); - - ЧатТема = Чат + "*" + Тема; - Текст = ПараметрыФункции["String"]; - Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, ЧатТема, Текст); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (форум)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); - -КонецПроцедуры - -Процедура CLI_Telegram_ИзменитьТемуФорума(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); - Опции.Вставить("icon" , "5310132165583840589"); - Опции.Вставить("title" , "Новый тестовый заголовок"); - Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТемуФорума", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ЗакрытьТемуФорума(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("forum" , Чат); - - OPI_Telegram.ОткрытьТемуФорума(Токен, Чат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрытьТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрытьТемуФорума (главная)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрытьТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрытьТемуФорума", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(25); - -КонецПроцедуры - -Процедура CLI_Telegram_ОткрытьТемуФорума(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрытьТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрытьТемуФорума (главная)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрытьТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрытьТемуФорума", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(25); - -КонецПроцедуры - -Процедура CLI_Telegram_УдалитьТемуФорума(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); - Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТемуФорума", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(25); - -КонецПроцедуры - -Процедура CLI_Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьСписокЗакрепленныхСообщенийТемы (главная)"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьСписокЗакрепленныхСообщенийТемы", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_СкрытьГлавнуюТемуФорума(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкрытьГлавнуюТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкрытьГлавнуюТемуФорума", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПоказатьГлавнуюТемуФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоказатьГлавнуюТемуФорума", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); - Опции.Вставить("title" , "Новое имя главной темы " + Строка(Новый УникальныйИдентификатор)); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьИмяГлавнойТемыФорума", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьИмяГлавнойТемыФорума", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_УдалитьСообщение(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); - Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); - Опции.Вставить("message", ПараметрыФункции["Telegram_ChannelMessageID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Telegram_ЗаменитьТекстСообщения(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChannelID"]; - IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; - Текст = "Новый текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьТекстСообщения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗаменитьТекстСообщения", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); - -КонецПроцедуры - -Процедура CLI_Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDСообщения = ПараметрыФункции["Telegram_MessageID"]; - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("1"); - МассивКнопок.Добавить("2"); - МассивКнопок.Добавить("3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - Опции.Вставить("under" , Истина); - Опции.Вставить("column" , Ложь); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message" , IDСообщения); - Опции.Вставить("keyboard", Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьКлавиатуруСообщения", Опции); - - Клавиатура = OPI_Инструменты.JSONСтрокой(Клавиатура); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗаменитьКлавиатуруСообщения", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКлавиатураСообщения(Результат, Клавиатура); - -КонецПроцедуры - -Процедура CLI_Telegram_ЗаменитьОписаниеСообщения(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDСообщения = ПараметрыФункции["Telegram_PicMessageID"]; - - Описание = "Новое описание картинки"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message" , IDСообщения); - Опции.Вставить("caption" , Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьОписаниеСообщения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗаменитьОписаниеСообщения", "Telegram"); - OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Описание); - -КонецПроцедуры - -#КонецОбласти - -#Область VK - -Процедура CLI_VK_СоздатьСсылкуПолученияТокена(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("app" , ПараметрыФункции["VK_AppID"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСсылкуПолученияТокена", Опции); - - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСсылкуПолученияТокена", "VK"); - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Строка").Заполнено(); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьПост(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Текст = "Пост из автотеста"; - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные - - ИВФ = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка2, ИВФ); - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка); - МассивКартинок.Добавить(ИВФ); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", МассивКартинок); - Опции.Вставить("ad" , Истина); - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПост", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); - ИДПоста = Результат["response"]["post_id"]; - Результат = OPI_VK.УдалитьПост(ИДПоста, Параметры); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", Картинка); - Опции.Вставить("ad" , Ложь); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПост (одна картинка)"); - OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); - - ИДПоста = Результат["response"]["post_id"]; - Результат = OPI_VK.УдалитьПост(ИДПоста, Параметры); - - OPI_Инструменты.Пауза(5); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", ИВФ); - Опции.Вставить("ad" , Истина); - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПост (один путь)"); - OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); - - ИДПоста = Результат["response"]["post_id"]; - OPI_Инструменты.ДобавитьПоле("VK_PostID", ИДПоста, "Строка", ПараметрыФункции); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ПараметрыФункции["VK_PostID"]); - - УдалитьФайлы(ИВФ); - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_УдалитьПост(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДПоста = ПараметрыФункции["VK_PostID"]; - - Опции = Новый Структура; - Опции.Вставить("post", ИДПоста); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПост", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьПост", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьСоставнойПост(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Текст = "Пост из автотеста"; - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Видео = ПараметрыФункции["Video"]; // URL, Путь или Двоичные данные - - ИВФ = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, ИВФ); - - ЗагрузкаКартинки = OPI_VK.ЗагрузитьФотоНаСервер(ИВФ, Параметры)["response"][0]; - ЗагрузкаВидео = OPI_VK.ЗагрузитьВидеоНаСервер(Видео, "Новое видео", , , Параметры); - - ВладелецКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["owner_id"]); - ВладелецВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["owner_id"]); - - IDКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["id"]); - IDВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["video_id"]); - - МассивВложений = Новый Массив; - МассивВложений.Добавить("photo" + ВладелецКартинки + "_" + IDКартинки); - МассивВложений.Добавить("video" + ВладелецВидео + "_" + IDВидео); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("objects", МассивВложений); - Опции.Вставить("ad" , Ложь); - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСоставнойПост", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСоставнойПост", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); - УдалитьФайлы(ИВФ); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьОпрос() - - Параметры = ПолучитьПараметрыВК(); - Вопрос = "Какой ваш любимый цвет?"; - - МассивВариантов = Новый Массив; - МассивВариантов.Добавить("Красный"); - МассивВариантов.Добавить("Желтый"); - МассивВариантов.Добавить("Зеленый"); - - Опции = Новый Структура; - Опции.Вставить("question", Вопрос); - Опции.Вставить("options" , МассивВариантов); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОпрос", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьОпрос", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); - - ИДПоста = Результат["response"]["post_id"]; - OPI_VK.УдалитьПост(ИДПоста, Параметры); - - OPI_Инструменты.Пауза(10); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьАльбом(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Имя = "Альбом из автотеста"; - Описание = "Новый альбом из автотеста"; - - Опции = Новый Структура; - Опции.Вставить("title" , Имя); - Опции.Вставить("description" , Описание); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьАльбом", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьАльбом", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКАльбом(Результат, Описание); - - ИДАльбома = Результат["response"]["id"]; - ПараметрыФункции.Вставить("VK_AlbumID", ИДАльбома); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_AlbumID", ИДАльбома); - -КонецПроцедуры - -Процедура CLI_VK_СохранитьКартинкуВАльбом(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ОписаниеКартинки = "Картинка автотест"; - ИДАльбома = ПараметрыФункции["VK_AlbumID"]; - - Картинка = ПараметрыФункции["Picture"]; - - Опции = Новый Структура; - Опции.Вставить("album" , ИДАльбома); - Опции.Вставить("picture" , Картинка); - Опции.Вставить("description" , ОписаниеКартинки); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СохранитьКартинкуВАльбом", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СохранитьКартинкуВАльбом", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВККартинкаАльбома(Результат, ОписаниеКартинки, ИДАльбома); - - ИДКартинки = Результат["response"][0]["id"]; - ПараметрыФункции.Вставить("VK_PictureID", ИДКартинки); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PictureID", ИДКартинки); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_УдалитьКартинку(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДКартинки = ПараметрыФункции["VK_PictureID"]; - - Опции = Новый Структура; - Опции.Вставить("pictureid", ИДКартинки); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьКартинку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКартинку", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_УдалитьАльбом(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДАльбома = ПараметрыФункции["VK_AlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("album", ИДАльбома); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьАльбом", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьАльбом", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ЗагрузитьФотоНаСервер(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - Вид = "Пост"; - - Опции = Новый Структура; - Опции.Вставить("file", Картинка); - Опции.Вставить("type", Вид); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьФотоНаСервер", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьВидеоНаСервер", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВККартинкаАльбома(Результат, ""); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьИсторию(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные - ИВФ = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, ИВФ); - Картинка = Новый ДвоичныеДанные(ИВФ); - - Опции = Новый Структура; - Опции.Вставить("picture", Картинка); - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьИсторию", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстория(Результат); - - Опции = Новый Структура; - Опции.Вставить("picture", ИВФ); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьИсторию (путь)"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстория(Результат); - - УдалитьФайлы(ИВФ); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьОбсуждение(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Название = "Обсуждаем: какой цвет лучше?"; - Сообщение = "Красный, желтый, синий или какой-то другой?"; - - Опции = Новый Структура; - Опции.Вставить("title", Название); - Опции.Вставить("text" , Сообщение); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОбсуждение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьОбсуждение", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКОбсуждение(Результат); - - ИДОбсуждения = Результат["response"]; - ПараметрыФункции.Вставить("VK_ConvID", ИДОбсуждения); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_ConvID", ИДОбсуждения); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ЗакрытьОбсуждение(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДОбсуждения = ПараметрыФункции["VK_ConvID"]; - - Опции = Новый Структура; - Опции.Вставить("topic" , ИДОбсуждения); - Опции.Вставить("remove", Ложь); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗакрытьОбсуждение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрытьОбсуждение", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ОткрытьОбсуждение(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДОбсуждения = ПараметрыФункции["VK_ConvID"]; - - Опции = Новый Структура; - Опции.Вставить("topic" , ИДОбсуждения); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ОткрытьОбсуждение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрытьОбсуждение", "VK"); - - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_НаписатьВОбсуждение(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДОбсуждения = ПараметрыФункции["VK_ConvID"]; - Сообщение = "Мне больше нравится желтый"; - - Опции = Новый Структура; - Опции.Вставить("topic" , ИДОбсуждения); - Опции.Вставить("text" , Сообщение); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьВОбсуждение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НаписатьВОбсуждение", "VK"); - - OPI_ПолучениеДанныхТестов.Проверка_ВКОбсуждение(Результат); - -КонецПроцедуры - -Процедура CLI_VK_ПоставитьЛайк(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - IDПоста = ПараметрыФункции["VK_PostID"]; - - Опции = Новый Структура; - Опции.Вставить("post" , IDПоста); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПоставитьЛайк", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоставитьЛайк", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКЛайк(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_СделатьРепост(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - IDПоста = 2571; - IDСтены = -218704372; - - Опции = Новый Структура; - Опции.Вставить("post" , IDПоста); - Опции.Вставить("from" , IDСтены); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СделатьРепост", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СделатьРепост", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКРепост(Результат); - - ПараметрыФункции.Вставить("Repost", Результат["response"]["post_id"]); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_НаписатьКомментарий(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Текст = "Новый комментарий"; - IDПоста = ПараметрыФункции["VK_PostID"]; - IDСтены = Параметры["owner_id"]; - - Опции = Новый Структура; - Опции.Вставить("post" , IDПоста); - Опции.Вставить("wall" , IDСтены); - Опции.Вставить("text" , Текст); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьКомментарий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НаписатьКомментарий", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВККомментарий(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_СократитьСсылку(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("url" , "https://github.com/Bayselonarrend/OpenIntegrations"); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СократитьСсылку", Опции); - - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СократитьСсылку", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьСтатистику(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - ДатаНачала = НачалоДня(ТекущаяДата); - ДатаОкончания = КонецДня(ДатаНачала); - - Опции = Новый Структура; - Опции.Вставить("datefrom", ДатаНачала); - Опции.Вставить("dateto" , ДатаОкончания); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистику", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатистику", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКСтатистика(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьСтатистикуПостов(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - МассивПостов = Новый Массив; - МассивПостов.Добавить(214); - МассивПостов.Добавить(215); - - Опции = Новый Структура; - Опции.Вставить("posts", МассивПостов); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистикуПостов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатистикуПостов", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКСтатистикаПостов(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьРекламнуюКампанию(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; - Наименование = "Новая кампания"; - - Опции = Новый Структура; - Опции.Вставить("cabinet", IDКабинета); - Опции.Вставить("title" , Наименование); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламнуюКампанию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьРекламнуюКампанию", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - ИДКампании = Результат["response"][0]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_AdsCampaignID", ИДКампании); - ПараметрыФункции.Вставить("VK_AdsCampaignID", ИДКампании); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьРекламноеОбъявление(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - НомерКампании = ПараметрыФункции["VK_AdsCampaignID"]; - ДневнойЛимит = 150; - НомерКатегории = 126; - IDПоста = ПараметрыФункции["VK_PostID"]; - IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; - - Опции = Новый Структура; - Опции.Вставить("campaign", НомерКампании); - Опции.Вставить("limit" , ДневнойЛимит); - Опции.Вставить("category", НомерКатегории); - Опции.Вставить("post" , IDПоста); - Опции.Вставить("cabinet" , IDКабинета); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламноеОбъявление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьРекламноеОбъявление", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - ИДОбъявления = Результат["response"][0]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_AdsPostID", ИДОбъявления); - ПараметрыФункции.Вставить("VK_AdsPostID", ИДОбъявления); - -КонецПроцедуры - -Процедура CLI_VK_ПриостановитьРекламноеОбъявление(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; - IDОбъявления = ПараметрыФункции["VK_AdsPostID"]; - - Опции = Новый Структура; - Опции.Вставить("adv" , IDОбъявления); - Опции.Вставить("cabinet" , IDКабинета); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПриостановитьРекламноеОбъявление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПриостановитьРекламноеОбъявление", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьСписокРекламныхКатегорий(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокРекламныхКатегорий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРекламныхКатегорий", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВККатегории(Результат); - -КонецПроцедуры - -Процедура CLI_VK_СформироватьКлавиатуру(ПараметрыФункции) - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Button 1"); - МассивКнопок.Добавить("Button 2"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); - Клавиатура = OPI_Инструменты.JSONСтрокой(Клавиатура); - - OPI_ПолучениеДанныхТестов.Проверка_Строка(Клавиатура); - -КонецПроцедуры - -Процедура CLI_VK_НаписатьСообщение(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Текст = "Сообщение из автотеста"; - IDПользователя = ПараметрыФункции["VK_UserID"]; - Communitytoken = ПараметрыФункции["VK_CommunityToken"]; - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Button 1"); - МассивКнопок.Добавить("Button 2"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ct" , Communitytoken); - Опции.Вставить("keyboard", Клавиатура); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НаписатьСообщение", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКЧисло(Результат); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьСписокКатегорийТоваров(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокКатегорийТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКатегорийТоваров", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьПодборкуТоваров(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Название = "Тестовая подборка"; - Картинка = ПараметрыФункции["Picture"]; - Основная = Истина; - Скрытая = Ложь; - - Опции = Новый Структура; - Опции.Вставить("title" , Название); - Опции.Вставить("picture", Картинка); - Опции.Вставить("main" , Основная); - Опции.Вставить("hidden" , Скрытая); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПодборкуТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодборкуТоваров", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКПодборка(Результат); - - OPI_Инструменты.Пауза(5); - - ИДПодборки = Результат["response"]["market_album_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_MarketAlbumID", ИДПодборки); - ПараметрыФункции.Вставить("VK_MarketAlbumID", ИДПодборки); - -КонецПроцедуры - -Процедура CLI_VK_ИзменитьПодборкуТоваров(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Название = "Измененная подборка"; - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("title", Название); - Опции.Вставить("sel" , Подборка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьПодборкуТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПодборкуТоваров", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьПодборкиПоИД(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("sels" , Подборка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьПодборкиПоИД", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПодборкиПоИД", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКЭлементы(Результат); - -КонецПроцедуры - -Процедура CLI_VK_ДобавитьТовар(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - ОписаниеТовара = Новый Соответствие(); - ОписаниеТовара.Вставить("Имя" , "Тестовый товар"); - ОписаниеТовара.Вставить("Описание" , "Описание товара"); - ОписаниеТовара.Вставить("Категория" , "20173"); - ОписаниеТовара.Вставить("Цена" , 1); - ОписаниеТовара.Вставить("СтараяЦена" , 15); - ОписаниеТовара.Вставить("ОсновноеФото" , Картинка1); - ОписаниеТовара.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); - ОписаниеТовара.Вставить("ДополнительныеФото" , МассивКартинок); - ОписаниеТовара.Вставить("ГлавныйВГруппе" , Истина); - ОписаниеТовара.Вставить("Ширина" , 20); - ОписаниеТовара.Вставить("Высота" , 30); - ОписаниеТовара.Вставить("Глубина" , 40); - ОписаниеТовара.Вставить("Вес" , 100); - ОписаниеТовара.Вставить("SKU" , "12345"); - ОписаниеТовара.Вставить("ДоступныйОстаток" , "10"); - - Опции = Новый Структура; - Опции.Вставить("product", ОписаниеТовара); - Опции.Вставить("sel" , Подборка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТовар", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТовар(Результат); - - ИДТовара = Результат["response"]["market_item_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_MarketItemID", ИДТовара); - ПараметрыФункции.Вставить("VK_MarketItemID", ИДТовара); - -КонецПроцедуры - -Процедура CLI_VK_ИзменитьТовар(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар = ПараметрыФункции["VK_MarketItemID"]; - - ОписаниеТовара = Новый Соответствие; - ОписаниеТовара.Вставить("Имя", "Тестовый товар измененный"); - - Опции = Новый Структура; - Опции.Вставить("product", ОписаниеТовара); - Опции.Вставить("item" , Товар); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьТовар", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТовар", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VK_ДобавитьТоварВПодборку(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар = ПараметрыФункции["VK_MarketItemID"]; - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("sel" , Подборка); - Опции.Вставить("items", Товар); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТоварВПодборку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТоварВПодборку", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКЧисло(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_УдалитьТоварИзПодборки(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар = ПараметрыФункции["VK_MarketItemID"]; - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("sel" , Подборка); - Опции.Вставить("item", Товар); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТоварИзПодборки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТоварИзПодборки", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_УдалитьТовар(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар = ПараметрыФункции["VK_MarketItemID"]; - - Опции = Новый Структура; - Опции.Вставить("item", Товар); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТовар", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТовар", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_УдалитьПодборку(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("sel" , Подборка); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПодборку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьПодборку", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьСвойствоТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Название = "Цвет"; - - Опции = Новый Структура; - Опции.Вставить("title", Название); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСвойствоТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСвойствоТовара", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКСвойство(Результат); - - OPI_Инструменты.Пауза(5); - - Свойство = Результат["response"]["property_id"]; - Свойство = OPI_Инструменты.ЧислоВСтроку(Свойство); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PropID", Свойство); - ПараметрыФункции.Вставить("VK_PropID", Свойство); - -КонецПроцедуры - -Процедура CLI_VK_ИзменитьСвойствоТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Название = "Цвет (изм.)"; - Свойство = ПараметрыФункции["VK_PropID"]; - - Опции = Новый Структура; - Опции.Вставить("title", Название); - Опции.Вставить("prop" , Свойство); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьСвойствоТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСвойствоТовара", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ДобавитьВариантСвойстваТовара(ПараметрыФункции) - - Счетчик = 1; - Параметры = ПолучитьПараметрыВК(); - - Свойство = ПараметрыФункции["VK_PropID"]; - МассивВариантов = Новый Массив; - МассивВариантов.Добавить("Желтый"); - МассивВариантов.Добавить("Синий"); - МассивВариантов.Добавить("Красный"); - - Для Каждого Значение Из МассивВариантов Цикл - - Опции = Новый Структура; - Опции.Вставить("value", Значение); - Опции.Вставить("prop" , Свойство); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьВариантСвойстваТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьВариантСвойстваТовара", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКВариантСвойства(Результат); - OPI_Инструменты.Пауза(5); - - ИДВарианта = Результат["response"]["variant_id"]; - ИмяПараметра = "VK_PropVarID" + Строка(Счетчик); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр(ИмяПараметра, ИДВарианта); - ПараметрыФункции.Вставить(ИмяПараметра, ИДВарианта); - Счетчик = Счетчик + 1; - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_VK_ИзменитьВариантСвойстваТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Свойство = ПараметрыФункции["VK_PropID"]; - Вариант = ПараметрыФункции["VK_PropVarID1"]; - Значение = "Новое имя варианта"; - - Опции = Новый Структура; - Опции.Вставить("value" , Значение); - Опции.Вставить("prop" , Свойство); - Опции.Вставить("option", Вариант); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьВариантСвойстваТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьВариантСвойстваТовара", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VK_СоздатьТоварСоСвойством(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Картинка1 = ПараметрыФункции["Picture"]; - Картинка2 = ПараметрыФункции["Picture2"]; - ВариантСвойства1 = ПараметрыФункции["VK_PropVarID1"]; - ВариантСвойства2 = ПараметрыФункции["VK_PropVarID2"]; - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - Товар = Новый Соответствие(); - Товар.Вставить("Имя" , "Тестовый товар (со свойством)"); - Товар.Вставить("Описание" , "Описание товара"); - Товар.Вставить("Категория" , "20173"); - Товар.Вставить("Цена" , 1); - Товар.Вставить("СтараяЦена" , 15); - Товар.Вставить("ОсновноеФото" , Картинка1); - Товар.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); - Товар.Вставить("ДополнительныеФото" , МассивКартинок); - Товар.Вставить("ГлавныйВГруппе" , Истина); - Товар.Вставить("НомерГруппы" , Неопределено); - Товар.Вставить("Ширина" , 20); - Товар.Вставить("Высота" , 30); - Товар.Вставить("Глубина" , 40); - Товар.Вставить("Вес" , 100); - Товар.Вставить("SKU" , 12345); - Товар.Вставить("ДоступныйОстаток" , "10"); - Товар.Вставить("ЗначенияСвойств" , ВариантСвойства1); - - Опции = Новый Структура; - Опции.Вставить("product", Товар); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ТоварСоСвойством1"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТовар(Результат); - - ИДТовара = Результат["response"]["market_item_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_MarketItemID2", ИДТовара); - ПараметрыФункции.Вставить("VK_MarketItemID2", ИДТовара); - - Товар.Вставить("Имя" , "Тестовый товар (другой)"); - Товар.Вставить("ЗначенияСвойств", ВариантСвойства2); - - Опции = Новый Структура; - Опции.Вставить("product", Товар); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ТоварСоСвойством2"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТовар(Результат); - - ИДТовара = Результат["response"]["market_item_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_MarketItemID3", ИДТовара); - ПараметрыФункции.Вставить("VK_MarketItemID3", ИДТовара); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьТоварыПоИД(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар1 = ПараметрыФункции["VK_MarketItemID2"]; - Товар2 = ПараметрыФункции["VK_MarketItemID3"]; - - МассивТоваров = Новый Массив; - МассивТоваров.Добавить(Товар1); - МассивТоваров.Добавить(Товар2); - - Опции = Новый Структура; - Опции.Вставить("items", МассивТоваров); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьТоварыПоИД", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТоварыПоИД", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИнформацияОТоварах(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_СгруппироватьТовары(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар1 = ПараметрыФункции["VK_MarketItemID2"]; - Товар2 = ПараметрыФункции["VK_MarketItemID3"]; - - МассивТоваров = Новый Массив; - МассивТоваров.Добавить(Товар1); - МассивТоваров.Добавить(Товар2); - - Опции = Новый Структура; - Опции.Вставить("items", МассивТоваров); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СгруппироватьТовары", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СгруппироватьТовары", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКГруппаТоваров(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_УдалитьВариантСвойстваТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Вариант = ПараметрыФункции["VK_PropVarID1"]; - - Опции = Новый Структура; - Опции.Вставить("option", Вариант); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьВариантСвойстваТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВариантСвойстваТовара", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_УдалитьСвойствоТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Свойство = ПараметрыФункции["VK_PropID"]; - - Опции = Новый Структура; - Опции.Вставить("prop", Свойство); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьСвойствоТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСвойствоТовара"); - OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьОписаниеТовара(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьОписаниеТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеТовара", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьСписокТоваров(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТоваров", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьСписокПодборок(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокПодборок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПодборок", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьСписокСвойств(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокСвойств", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСвойств", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ПолучитьСписокЗаказов(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокЗаказов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗаказов", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VK_ЗагрузитьВидеоНаСервер(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Видео = ПараметрыФункции["Video"]; // URL, Двоичные данные или Путь к файлу - Наименование = "Новое видео"; - Описание = "Описание видео"; - - Опции = Новый Структура; - Опции.Вставить("file" , Видео); - Опции.Вставить("title" , Наименование); - Опции.Вставить("description", Описание); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьВидеоНаСервер", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьВидеоНаСервер", "VK"); - OPI_ПолучениеДанныхТестов.Проверка_ВКВидео(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -#КонецОбласти - -#Область YandexDisk - -Процедура CLI_YandexDisk_ПолучитьИнформациюОДиске(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьИнформациюОДиске", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОДиске", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискДиск(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_СоздатьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = "/" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьПапку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПапку", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискКаталог(Результат, Путь); - - OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ЗагрузитьФайлПоURL(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Адрес = ПараметрыФункции["Picture"]; - Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("url" , Адрес); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайлПоURL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлПоURL", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискПроцедура(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_FileByURLPath", Путь); - ПараметрыФункции.Вставить("YandexDisk_FileByURLPath", Путь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ПолучитьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь); - -КонецПроцедуры - -Процедура CLI_YandexDisk_УдалитьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("can" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ЗагрузитьФайл(ПараметрыФункции) - - Путь1 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - Путь2 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Картинка = ПараметрыФункции["Picture"]; // URL - - ИВФ = ПолучитьИмяВременногоФайла("png"); // Путь - КопироватьФайл(Картинка, ИВФ); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь1); - Опции.Вставить("file" , Картинка); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл (URL)", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - OPI_Инструменты.Пауза(5); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь2); - Опции.Вставить("file" , ИВФ); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл", "YandexDisk"); - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - OPI_Инструменты.Пауза(5); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь1); - Опции.Вставить("can" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект (URL)", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь2); - Опции.Вставить("can" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект (Путь)", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - УдалитьФайлы(ИВФ); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_СоздатьКопиюОбъекта(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; - Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("from" , Оригинал); - Опции.Вставить("to" , Путь); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьКопиюОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКопиюОбъекта", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_CopyFilePath", Путь); - ПараметрыФункции.Вставить("YandexDisk_CopyFilePath", Путь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_PathForLink"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуДляСкачивания", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуДляСкачивания", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискСсылка(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_СкачатьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_PathForLink"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СкачатьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайл", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ПолучитьСписокФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Количество = 2; - СмещениеОтНачала = 1; - ОтборПоТипу = "image"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("amount", Количество); - Опции.Вставить("offset", СмещениеОтНачала); - Опции.Вставить("type" , ОтборПоТипу); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокФайлов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискСписокФайлов(Результат, Количество, СмещениеОтНачала); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ПереместитьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; - Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("from" , Оригинал); - Опции.Вставить("to" , Путь); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПереместитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьОбъект", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_NewFilePath", Путь); - ПараметрыФункции.Вставить("YandexDisk_NewFilePath", Путь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ОпубликоватьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОпубликоватьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОпубликоватьОбъект", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь, Истина); - - URL = Результат["public_url"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_PublicURL", URL); - ПараметрыФункции.Вставить("YandexDisk_PublicURL", URL); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - URL = ПараметрыФункции["YandexDisk_PublicURL"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуСкачиванияПубличногоОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуСкачиванияПубличногоОбъекта", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискСсылка(Результат); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ПолучитьПубличныйОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - URL = ПараметрыФункции["YandexDisk_PublicURL"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьПубличныйОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПубличныйОбъект", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, "", Истина); - -КонецПроцедуры - -Процедура CLI_YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - URL = ПараметрыФункции["YandexDisk_PublicURL"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СохранитьПубличныйОбъектНаДиск", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СохранитьПубличныйОбъектНаДиск", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, "", Ложь); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОтменитьПубликациюОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтменитьПубликациюОбъекта", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь, Ложь); - -КонецПроцедуры - -Процедура CLI_YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Количество = 2; - СмещениеОтНачала = 1; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("amount", Количество); - Опции.Вставить("offset", СмещениеОтНачала); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокОпубликованныхОбъектов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОпубликованныхОбъектов", "YandexDisk"); - OPI_ПолучениеДанныхТестов.Проверка_ЯДискСписокФайлов(Результат, Количество, СмещениеОтНачала); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -#КонецОбласти - -#Область Viber - -Процедура CLI_Viber_УстановитьWebhook(ПараметрыФункции) - - Токен = ПараметрыФункции["Viber_ChannelToken"]; - URL = "http://api.athenaeum.digital/hs/viber"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "УстановитьWebhook", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьWebhook", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Viber_ПолучитьИнформациюОКанале(ПараметрыФункции) - - Токен = ПараметрыФункции["Viber_ChannelToken"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьИнформациюОКанале", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОКанале", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберОк(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Viber_ПолучитьДанныеПользователя(ПараметрыФункции) - - Токен = ПараметрыФункции["Viber_ChannelToken"]; - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьДанныеПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеПользователя", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберПользователь(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Viber_ПолучитьОнлайнПользователей(ПараметрыФункции) - - Токен = ПараметрыФункции["Viber_ChannelToken"]; - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("users", IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьОнлайнПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОнлайнПользователей", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберОнлайн(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыФункции) - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Кнопка 1"); - МассивКнопок.Добавить("Кнопка 2"); - МассивКнопок.Добавить("Кнопка 3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьКлавиатуруИзМассиваКнопок", "Viber"); - -КонецПроцедуры - -Процедура CLI_Viber_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - Текст = "Тестовое сообщение"; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Кнопка 1"); - МассивКнопок.Добавить("Кнопка 2"); - МассивКнопок.Добавить("Кнопка 3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("text" , Текст); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - Опции.Вставить("keyboard" , Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("text" , Текст); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - Опции.Вставить("keyboard" , Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (канал)", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Viber_ОтправитьКартинку(ПараметрыФункции) - - Описание = "Тестовое сообщение"; - URL = ПараметрыФункции["Picture"]; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("picture" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel" , ОтправкаВКанал); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКартинку", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("picture" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel" , ОтправкаВКанал); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКартинку (канал)", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Viber_ОтправитьФайл(ПараметрыФункции) - - Расширение = "docx"; - URL = ПараметрыФункции["Document"]; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - Опции.Вставить("ext" , Расширение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - Опции.Вставить("ext" , Расширение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (канал)", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Viber_ОтправитьКонтакт(ПараметрыФункции) - - Имя = "Петр Петров"; - Телефон = "+123456789"; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("name" , Имя); - Опции.Вставить("phone" , Телефон); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("name" , Имя); - Опции.Вставить("phone" , Телефон); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт (канал)", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Viber_ОтправитьЛокацию(ПараметрыФункции) - - Широта = "48.87373649724122"; - Долгота = "2.2954639195323967"; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("lat" , Широта); - Опции.Вставить("long" , Долгота); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЛокацию", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("lat" , Широта); - Опции.Вставить("long" , Долгота); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЛокацию (канал)", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Viber_ОтправитьСсылку(ПараметрыФункции) - - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСсылку", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСсылку (канал)", "Viber"); - OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleWorkspace - -Процедура CLI_GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "СформироватьСсылкуПолученияКода", Опции); - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_Link", Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - Code = ПараметрыФункции["Google_Code"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret", ClientSecret); - Опции.Вставить("code" , Code); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ПолучитьТокенПоКоду", Опции); - - Если ЗначениеЗаполнено(Результат["access_token"]) - И ЗначениеЗаполнено(Результат["refresh_token"]) Тогда - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_Token" , Результат["access_token"]); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_Refresh", Результат["refresh_token"]); - - КонецЕсли; - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleWorkspace_ОбновитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - RefreshToken = ПараметрыФункции["Google_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret" , ClientSecret); - Опции.Вставить("refresh", RefreshToken); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ОбновитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_ГуглТокен(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_Token", Результат["access_token"]); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleCalendar - -Процедура CLI_GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокКалендарей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКалендарей", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_СоздатьКалендарь(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Наименование = "Тестовый календарь"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("title", Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКалендарь", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглКалендарь(Результат, Наименование); - - Календарь = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_NewCalendarID", Календарь); - OPI_Инструменты.ДобавитьПоле("Google_NewCalendarID", Календарь, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Наименование = "Новое наименование"; - Описание = "Новое описание"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - Опции.Вставить("title" , Наименование); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьМетаданныеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьМетаданныеКалендаря", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьМетаданныеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьМетаданныеКалендаря", "GoogleCalendar"); - - Наименование = "Новое наименование"; - Описание = "Новое описание"; - - OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ДобавитьКалендарьВСписок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКалендарьВСписок", "GoogleCalendar"); - - Наименование = "Новое наименование"; - Описание = "Новое описание"; - - OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - ОсновнойЦвет = "#000000"; - ДополнительныйЦвет = "#ffd800"; - Скрытый = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - Опции.Вставить("primary" , ОсновнойЦвет); - Опции.Вставить("secondary", ДополнительныйЦвет); - Опции.Вставить("hidden" , Скрытый); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьКалендарьСписка", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКалендарьСписка", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглЦветКалендаря(Результат, ОсновнойЦвет, ДополнительныйЦвет); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьКалендарьСписка", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКалендарьСписка", "GoogleCalendar"); - - ОсновнойЦвет = "#000000"; - ДополнительныйЦвет = "#ffd800"; - - OPI_ПолучениеДанныхТестов.Проверка_ГуглЦветКалендаря(Результат, ОсновнойЦвет, ДополнительныйЦвет); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ОчиститьОсновнойКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьОсновнойКалендарь", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарьИзСписка", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКалендарьИзСписка", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_УдалитьКалендарь(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКалендарь", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_СоздатьСобытие(ПараметрыФункции) - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Наименование = "Новое событие"; - Описание = "Описание тестового события"; - Час = 3600; - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу - Вложения = Новый Соответствие; - - Вложения.Вставить("Картинка1", Картинка1); - Вложения.Вставить("Картинка2", Картинка2); - - ОписаниеСобытия = Новый Соответствие; - ОписаниеСобытия.Вставить("Описание" , Описание); - ОписаниеСобытия.Вставить("Заголовок" , Наименование); - ОписаниеСобытия.Вставить("МестоПроведения" , "В офисе"); - ОписаниеСобытия.Вставить("ДатаНачала" , ТекущаяДата); - ОписаниеСобытия.Вставить("ДатаОкончания" , ОписаниеСобытия["ДатаНачала"] + Час); - ОписаниеСобытия.Вставить("МассивURLФайловВложений" , Вложения); - ОписаниеСобытия.Вставить("ОтправлятьУведомления" , Истина); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - Опции.Вставить("props" , ОписаниеСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьСобытие", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСобытие", "GoogleCalendar"); - - Событие = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_EventID", Событие); - OPI_Инструменты.ДобавитьПоле("Google_EventID", Событие, "Строка", ПараметрыФункции); - - OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ИзменитьСобытие(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Событие = ПараметрыФункции["Google_EventID"]; - Описание = "Новое описание события"; - - ОписаниеСобытия = Новый Соответствие; - ОписаниеСобытия.Вставить("Описание", Описание); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - Опции.Вставить("props" , ОписаниеСобытия); - Опции.Вставить("event" , Событие); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьСобытие", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСобытие", "GoogleCalendar"); - - Наименование = "Новое событие"; - - OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ПолучитьСобытие(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Событие = ПараметрыФункции["Google_EventID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - Опции.Вставить("event" , Событие); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСобытие", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытие", "GoogleCalendar"); - - Наименование = "Новое событие"; - Описание = "Новое описание события"; - - OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ПереместитьСобытие(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Событие = ПараметрыФункции["Google_EventID"]; - - КалендарьИсточник = ПараметрыФункции["Google_NewCalendarID"]; - КалендарьПриемник = ПараметрыФункции["Google_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("from" , КалендарьИсточник); - Опции.Вставить("to" , КалендарьПриемник); - Опции.Вставить("event", Событие); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПереместитьСобытие", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьСобытие", "GoogleCalendar"); - - Наименование = "Новое событие"; - Описание = "Новое описание события"; - - OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); - - OPI_GoogleCalendar.ПереместитьСобытие(Токен, КалендарьПриемник, КалендарьИсточник, Событие); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_УдалитьСобытие(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Событие = ПараметрыФункции["Google_EventID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - Опции.Вставить("event" , Событие); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьСобытие", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСобытие", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ПолучитьСписокСобытий(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокСобытий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСобытий", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьОписаниеСобытия", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеСобытия", "GoogleCalendar"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleDrive - -Процедура CLI_GoogleDrive_ПолучитьСписокКаталогов(ПараметрыФункции) - - Имя = "Тестовая папка"; - Токен = ПараметрыФункции["Google_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("querry", Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКаталогов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКаталогов", "GoogleDrive"); - - Результат = Результат[0]; - - OPI_ПолучениеДанныхТестов.Проверка_ГуглКаталоги(Результат); - - Идентификатор = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GD_Catalog", Идентификатор); - OPI_Инструменты.ДобавитьПоле("GD_Catalog", Идентификатор, "Строка", ПараметрыФункции); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_Catalog"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object", Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьИнформациюОбОбъекте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбОбъекте", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглКаталог(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_ЗагрузитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Картинка = ПараметрыФункции["Picture"]; - Каталог = ПараметрыФункции["GD_Catalog"]; - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); - Описание.Вставить("Родитель", Каталог); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("file" , Картинка); - Опции.Вставить("props", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ЗагрузитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглОбъект(Результат, Описание); - - Идентификатор = Результат["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GD_File", Идентификатор); - OPI_Инструменты.ДобавитьПоле("GD_File", Идентификатор, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_СкопироватьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - НовоеИмя = "Скопированный файл.jpeg"; - НовыйРодитель = "root"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - Опции.Вставить("title" , НовоеИмя); - Опции.Вставить("catalog", НовыйРодитель); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкопироватьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьОбъект", "GoogleDrive"); - - Описание = Новый Структура("Имя,MIME", НовоеИмя, "image/jpeg"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглОбъект(Результат, Описание); - - Идентификатор = Результат["id"]; - - МассивУдаляемых = ПараметрыФункции["МассивУдаляемых"]; - МассивУдаляемых.Добавить(Идентификатор); - ПараметрыФункции.Вставить("МассивУдаляемых", МассивУдаляемых); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_СкачатьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкачатьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайл", "GoogleDrive"); - - Размер = OPI_ЗапросыHTTP.Get(ПараметрыФункции["Picture"]).Размер(); - ЛишниеБайты = 2; - - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, Размер + ЛишниеБайты); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_ОбновитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - НовоеИмя = "Обновленный файл.jpg"; - Идентификатор = ПараметрыФункции["GD_File"]; - Файл = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - Опции.Вставить("file" , Файл); - Опции.Вставить("title" , НовоеИмя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ОбновитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьФайл", "GoogleDrive"); - - Описание = Новый Структура("Имя,MIME", НовоеИмя, "image/jpeg"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглОбъект(Результат, Описание); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_ПолучитьСписокФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Каталог = "root"; - ИмяСодержит = "data"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("querry" , ИмяСодержит); - Опции.Вставить("catalog", Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокФайлов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_УдалитьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - Для Каждого Удаляемый Из ПараметрыФункции["МассивУдаляемых"] Цикл - - Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Удаляемый); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект"); - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - OPI_Инструменты.Пауза(2); - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_GoogleDrive_ПолучитьОписаниеФайла(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеФайла", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_СоздатьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - Комментарий = "Текст комментария"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - Опции.Вставить("text" , Комментарий); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьКомментарий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКомментарий", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглКомментарий(Результат, Комментарий); - - Идентификатор = Результат["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GD_Comment", Идентификатор); - OPI_Инструменты.ДобавитьПоле("GD_Comment", Идентификатор, "Строка", ПараметрыФункции); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_ПолучитьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - ИДКомментария = ПараметрыФункции["GD_Comment"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - Опции.Вставить("comment", ИДКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьКомментарий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКомментарий", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглКомментарий(Результат, "Текст комментария"); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_ПолучитьСписокКомментариев(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКомментариев", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКомментариев", "GoogleDrive"); - - Комментарии = Результат["comments"]; - ОбъектКомментарий = Комментарии[Комментарии.ВГраница()]; - - OPI_ПолучениеДанныхТестов.Проверка_ГуглКомментарий(ОбъектКомментарий, "Текст комментария"); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_УдалитьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - ИДКомментария = ПараметрыФункции["GD_Comment"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - Опции.Вставить("comment", ИДКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьКомментарий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКомментарий", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleDrive_СоздатьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Каталог = ПараметрыФункции["GD_Catalog"]; - Имя = "Тестовая папка"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("title" , Имя); - Опции.Вставить("catalog", Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПапку", "GoogleDrive"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглКаталог(Результат); - - ИДКаталога = Результат["id"]; - OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("title" , Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПапку (корень)"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглКаталог(Результат); - - ИДКаталога = Результат["id"]; - OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleSheets - -Процедура CLI_GoogleSheets_СоздатьКнигу(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Наименование = "Тестовая таблица"; - - МассивЛистов = Новый Массив; - МассивЛистов.Добавить("Лист1"); - МассивЛистов.Добавить("Лист2"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("title" , Наименование); - Опции.Вставить("sheets", МассивЛистов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКнигу", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглКнига(Результат, Наименование, МассивЛистов); - - Книга = Результат["spreadsheetId"]; - Лист = Результат["sheets"][0]["properties"]["sheetId"]; - Лист = OPI_Инструменты.ЧислоВСтроку(Лист); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GS_Spreadsheet", Книга); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GS_Sheet" , Лист); - - OPI_Инструменты.ДобавитьПоле("GS_Spreadsheet", Книга, "Строка", ПараметрыФункции); - OPI_Инструменты.ДобавитьПоле("GS_Sheet" , Лист , "Строка", ПараметрыФункции); - - Наименование = "Тестовая таблица (доп.)"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("title" , Наименование); - Опции.Вставить("sheets", МассивЛистов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); - - Книга = Результат["spreadsheetId"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GS_Spreadsheet2", Книга); - OPI_Инструменты.ДобавитьПоле("GS_Spreadsheet2", Книга, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_ПолучитьКнигу(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GS_Spreadsheet"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); - - Наименование = "Тестовая таблица"; - - МассивЛистов = Новый Массив; - МассивЛистов.Добавить("Лист1"); - МассивЛистов.Добавить("Лист2"); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКнигу", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглКнига(Результат, Наименование, МассивЛистов); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_КопироватьЛист(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Откуда = ПараметрыФункции["GS_Spreadsheet"]; - Куда = ПараметрыФункции["GS_Spreadsheet2"]; - Лист = ПараметрыФункции["GS_Sheet"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("from" , Откуда); - Опции.Вставить("to" , Куда); - Опции.Вставить("sheet", Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "КопироватьЛист", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "КопироватьЛист", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглЛист(Результат); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_ДобавитьЛист(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Наименование = "Тестовый лист"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("title" , Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ДобавитьЛист", Опции); - - НовыйЛист = Результат["replies"][0]["addSheet"]["properties"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЛист", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглЛист(НовыйЛист); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_УдалитьЛист(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Лист = ПараметрыФункции["GS_Sheet"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("sheet" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УдалитьЛист", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЛист", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглЭлементКниги(Результат, Книга); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Наименование = "Тестовая таблица (изм.)"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("title" , Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ИзменитьНаименованиеКниги", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьНаименованиеКниги", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглЭлементКниги(Результат, Книга); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_ПолучитьТаблицу(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТаблицу", "GoogleSheets"); - - Наименование = "Тестовая таблица (изм.)"; - OPI_ПолучениеДанныхТестов.Проверка_ГуглИмяТаблицы(Результат, Наименование); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Лист = "Лист2"; - - СоответствиеЗначений = Новый Соответствие; - СоответствиеЗначений.Вставить("A1", "Это A1"); - СоответствиеЗначений.Вставить("A2", "Это A2"); - СоответствиеЗначений.Вставить("B2", "Это B2"); - СоответствиеЗначений.Вставить("B3", "Это B3"); - СоответствиеЗначений.Вставить("A3", "Это A3"); - СоответствиеЗначений.Вставить("A4", "Это A4"); - СоответствиеЗначений.Вставить("B1", "Это B1"); - СоответствиеЗначений.Вставить("B4", "Это B4"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("data" , СоответствиеЗначений); - Опции.Вставить("sheetname" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УстановитьЗначенияЯчеек", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьЗначенияЯчеек", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглОбновлениеЯчеек(Результат, СоответствиеЗначений.Количество()); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Лист = "Лист2"; - - МассивЯчеек = Новый Массив; - МассивЯчеек.Добавить("B2"); - МассивЯчеек.Добавить("A3"); - МассивЯчеек.Добавить("B4"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("cells" , МассивЯчеек); - Опции.Вставить("sheetname" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗначенияЯчеек", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглЗначенияЯчеек(Результат, МассивЯчеек.Количество()); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("sheetname" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗначенияЯчеек (все)"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглЭлементКниги(Результат, Книга); - -КонецПроцедуры - -Процедура CLI_GoogleSheets_ОчиститьЯчейки(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Лист = "Лист2"; - - МассивЯчеек = Новый Массив; - МассивЯчеек.Добавить("B2"); - МассивЯчеек.Добавить("A3"); - МассивЯчеек.Добавить("B4"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("cells" , МассивЯчеек); - Опции.Вставить("sheetname" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ОчиститьЯчейки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьЯчейки", "GoogleSheets"); - OPI_ПолучениеДанныхТестов.Проверка_ГуглОчисткаЯчеек(Результат, МассивЯчеек.Количество()); - -КонецПроцедуры - -#КонецОбласти - -#Область Twitter - -Процедура CLI_Twitter_ПолучитьТокен(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Код = "123456"; - - Опции = Новый Структура; - Опции.Вставить("code" , Код); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Twitter_ПолучитьСсылкуАвторизации(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - - Опции = Новый Структура; - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьСсылкуАвторизации", Опции); - - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуАвторизации", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Twitter_URL", Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Twitter_ОбновитьТокен(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - - Опции = Новый Структура; - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ОбновитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьТокен", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТокен(Результат); - - Рефреш = Результат["refresh_token"]; - Токен = Результат["access_token"]; - - Если ЗначениеЗаполнено(Рефреш) И Не Рефреш = "null" Тогда - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Twitter_Refresh", Рефреш); - КонецЕсли; - - Если ЗначениеЗаполнено(Токен) И Не Токен = "null" Тогда - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Twitter_Token" , Токен); - КонецЕсли; - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Twitter_СоздатьТекстовыйТвит(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТекстовыйТвит", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТекстовыйТвит", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Twitter_СоздатьТвитКартинки(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка); - МассивКартинок.Добавить(Картинка2); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", МассивКартинок); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитКартинки", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", Картинка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитКартинки (одиночная)"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - Картинка = OPI_ЗапросыHTTP.Get(Картинка); - - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", Картинка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитКартинки (ИВФ)"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - OPI_Инструменты.Пауза(20); - -КонецПроцедуры - -Процедура CLI_Twitter_СоздатьТвитВидео(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Видео = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу - Видео2 = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу - - МассивВидео = Новый Массив; - МассивВидео.Добавить(Видео); - МассивВидео.Добавить(Видео2); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("videos", МассивВидео); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитВидео", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("videos", Видео); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитВидео (одиночная)"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - Видео = OPI_ЗапросыHTTP.Get(Видео); - - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("videos", Видео); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитВидео (ИВФ)"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - OPI_Инструменты.Пауза(20); - -КонецПроцедуры - -Процедура CLI_Twitter_СоздатьТвитГифки(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Гифка = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу - Гифка2 = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу - - МассивГифок = Новый Массив; - МассивГифок.Добавить(Гифка); - МассивГифок.Добавить(Гифка2); - - Опции = Новый Структура; - Опции.Вставить("text", Текст); - Опции.Вставить("gifs", МассивГифок); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитГифки", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("text", Текст); - Опции.Вставить("gifs", Гифка); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитГифки (одиночная)"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - Гифка = OPI_ЗапросыHTTP.Get(Гифка); - - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("text", Текст); - Опции.Вставить("gifs", Гифка); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитГифки (ИВФ)"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - OPI_Инструменты.Пауза(15); - - OPI_Инструменты.Пауза(20); - -КонецПроцедуры - -Процедура CLI_Twitter_СоздатьТвитОпрос(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить("Вариант 1"); - МассивОтветов.Добавить("Вариант 2"); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("options" , МассивОтветов); - Опции.Вставить("duration", 60); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитОпрос", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитОпрос", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - - OPI_Инструменты.Пауза(20); - -КонецПроцедуры - -Процедура CLI_Twitter_СоздатьПроизвольныйТвит(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу - - МассивКартинок = Новый Массив(); - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - Опции = Новый Структура; - Опции.Вставить("files", МассивКартинок); - Опции.Вставить("type" , "tweet_image"); - Опции.Вставить("auth" , Параметры); - - МассивМедиа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("media" , МассивМедиа); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьПроизвольныйТвит", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПроизвольныйТвит", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); - - OPI_Инструменты.Пауза(20); - -КонецПроцедуры - -Процедура CLI_Twitter_ЗагрузитьМассивВложений(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу - - МассивКартинок = Новый Массив(); - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - Опции = Новый Структура; - Опции.Вставить("files", МассивКартинок); - Опции.Вставить("type" , "tweet_image"); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьМассивВложений", "Twitter"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область Notion - -Процедура CLI_Notion_СоздатьСтраницу(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Родитель = ПараметрыФункции["Notion_Parent"]; - Заголовок = "Тестовый заголовок"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("page" , Родитель); - Опции.Вставить("title", Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСтраницу", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат); - - Страница = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Notion_Page", Страница); - OPI_Инструменты.ДобавитьПоле("Notion_Page", Страница, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Notion_СоздатьБазуДанных(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Родитель = ПараметрыФункции["Notion_Parent"]; - Заголовок = "Тестовый заголовок"; - - Свойства = Новый Соответствие; - Свойства.Вставить("Имя" , "title"); - Свойства.Вставить("Описание" , "rich_text"); - Свойства.Вставить("Номер" , "number"); - Свойства.Вставить("Статус" , "status"); - Свойства.Вставить("Дата создания" , "date"); - Свойства.Вставить("Картинка" , "files"); - Свойства.Вставить("Активен" , "checkbox"); - Свойства.Вставить("Сайт" , "url"); - Свойства.Вставить("Почта" , "email"); - Свойства.Вставить("Телефон" , "phone_number"); - Свойства.Вставить("Пользователь" , "people"); - - ВыборЗначения = Новый Соответствие; - ВыборЗначения.Вставить("Новый" , "green"); - ВыборЗначения.Вставить("В работе" , "yellow"); - ВыборЗначения.Вставить("Удаленный", "red"); - - Свойства.Вставить("Статус", ВыборЗначения); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("page" , Родитель); - Опции.Вставить("title", Заголовок); - Опции.Вставить("props", Свойства); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "database"); - - База = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Notion_Base", База); - OPI_Инструменты.ДобавитьПоле("Notion_Base", База, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Notion_ИзменитьСвойстваБазы(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - База = ПараметрыФункции["Notion_Base"]; - - Заголовок = "Тестовый заголовок"; - Описание = "Тестовое описание"; - - Свойства = Новый Соответствие; - Свойства.Вставить("Почта", "rich_text"); // Тип поля "Почта" будет изменен с email на текст - Свойства.Вставить("Сайт"); // Поле "Сайт" будет удалено - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("props" , Свойства); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваБазы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСвойстваБазы", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "database"); - -КонецПроцедуры - -Процедура CLI_Notion_ПолучитьСтраницу(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Страница = ПараметрыФункции["Notion_Page"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("page" , Страница); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьСтраницу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтраницу", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Notion_ПолучитьБазуДанных(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - База = ПараметрыФункции["Notion_Base"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("base" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьБазуДанных", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "database"); - -КонецПроцедуры - -Процедура CLI_Notion_СоздатьСтраницуВБазу(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - База = ПараметрыФункции["Notion_Base"]; - Картинка_ = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - - Картинка = Новый Соответствие; - Картинка.Вставить("Лого", Картинка_); - - Свойства = Новый Соответствие; - Свойства.Вставить("Имя" , "ООО Вектор"); - Свойства.Вставить("Описание" , "Наш первый клиент"); - Свойства.Вставить("Номер" , 1); - Свойства.Вставить("Статус" , "Обычный"); - Свойства.Вставить("Дата создания" , OPI_Инструменты.ПолучитьТекущуюДату()); - Свойства.Вставить("Картинка" , Картинка); - Свойства.Вставить("Активен" , Истина); - Свойства.Вставить("Сайт" , "https://vector.ru"); - Свойства.Вставить("Почта" , "mail@vector.ru"); - Свойства.Вставить("Телефон" , "88005553535"); - Свойства.Вставить("Статус" , "Новый"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("base" , База); - Опции.Вставить("data" , Свойства); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницуВБазу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСтраницуВБазу", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнСтраницаБазы(Результат, База); - -КонецПроцедуры - -Процедура CLI_Notion_ИзменитьСвойстваСтраницы(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Страница = ПараметрыФункции["Notion_Page"]; - Иконка = ПараметрыФункции["Picture"]; - Обложка = ПараметрыФункции["Picture2"]; - Архивировать = Ложь; - - Свойства = Новый Соответствие; - Свойства.Вставить("Активен" , Ложь); - Свойства.Вставить("Почта" , "vector@mail.ru"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("page" , Страница); - Опции.Вставить("data" , Свойства); - Опции.Вставить("icon" , Иконка); - Опции.Вставить("cover" , Обложка); - Опции.Вставить("archive", Архивировать); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваСтраницы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСвойстваСтраницы", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Notion_ВернутьБлок(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Блок = ПараметрыФункции["Notion_Block"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("block" , Блок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВернутьБлок", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "block"); - -КонецПроцедуры - -Процедура CLI_Notion_СоздатьБлок(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Родитель = ПараметрыФункции["Notion_Parent"]; - Блок = ПараметрыФункции["Notion_Block"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("block" , Блок); - - ДанныеБлока = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("page" , Родитель); - Опции.Вставить("block" , ДанныеБлока); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБлок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБлок", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "list"); - - Блок = Результат["results"][0]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Notion_NewBlock", Блок); - OPI_Инструменты.ДобавитьПоле("Notion_NewBlock", Блок, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Notion_ВернутьДочерниеБлоки(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Блок = ПараметрыФункции["Notion_NewBlock"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("block" , Блок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьДочерниеБлоки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВернутьДочерниеБлоки", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "list"); - -КонецПроцедуры - -Процедура CLI_Notion_УдалитьБлок(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Блок = ПараметрыФункции["Notion_NewBlock"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("block" , Блок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "УдалитьБлок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБлок", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "block"); - -КонецПроцедуры - -Процедура CLI_Notion_СписокПользователей(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СписокПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СписокПользователей", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "list"); - -КонецПроцедуры - -Процедура CLI_Notion_ПолучитьДанныеПользователя(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Пользователь = ПараметрыФункции["Notion_User"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("user" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьДанныеПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеПользователя", "Notion"); - OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "user"); - -КонецПроцедуры - -#КонецОбласти - -#Область Slack - -Процедура CLI_Slack_ПолучитьИнформациюОБоте(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИнформациюОБоте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОБоте", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакБот(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСписокПользователей(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователей", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакПользователи(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСписокРабочихОбластей(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокРабочихОбластей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРабочихОбластей", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОбласти(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ОтправитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - - // Текстовое - - Текст = "Тестовое сообщение 1"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСообщение(Результат, Текст, Канал); - - Отметка = Результат["ts"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_MessageTS", Отметка); - OPI_Инструменты.ДобавитьПоле("Slack_MessageTS", Отметка, "Строка", ПараметрыФункции); - - // С вложениями (в примере: блок с картинкой) - - Текст = "Сообщение с картинкой"; - Картинка = ПараметрыФункции["Picture"]; - МассивБлоков = Новый Массив; - - Опции = Новый Структура; - Опции.Вставить("picture", Картинка); - Опции.Вставить("alt" , "Картинка"); - - Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); - - МассивБлоков.Добавить(Блок); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks" , МассивБлоков); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение (картинка)"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСообщение(Результат, Текст, Канал); - - // Отложенное - - Текст = "Отложенное сообщение"; - Час = 3600; - Сутки = 24; - - ДатаОтправки = OPI_Инструменты.ПолучитьТекущуюДату() + (Сутки * Час); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , Текст); - Опции.Вставить("date" , ДатаОтправки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение (отложенное)"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОтложенноеСообщение(Результат, Канал); - - Отметка = Результат["scheduled_message_id"]; - Результат = OPI_Slack.УдалитьСообщение(Токен, Канал, Отметка, Истина); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение (отложенное)"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_СформироватьБлокКартинку(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - - Опции = Новый Структура; - Опции.Вставить("picture", Картинка); - Опции.Вставить("alt" , "Картинка"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьБлокКартинку", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ИзменитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Отметка = ПараметрыФункции["Slack_MessageTS"]; - - Текст = "Тестовое сообщение 2"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("stamp" , Отметка); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ИзменитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСообщение", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСообщение(Результат, Текст, Канал); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Отметка = ПараметрыФункции["Slack_MessageTS"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("stamp" , Отметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтветовНаСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОтветовНаСообщение", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСообщения(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСсылкуНаСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Отметка = ПараметрыФункции["Slack_MessageTS"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("stamp" , Отметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСсылкуНаСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуНаСообщение", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСсылкаСообщения(Результат, Канал); - -КонецПроцедуры - -Процедура CLI_Slack_УдалитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Отметка = ПараметрыФункции["Slack_MessageTS"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("stamp" , Отметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ОтправитьЭфемерноеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Пользователь = ПараметрыФункции["Slack_User"]; - Картинка = ПараметрыФункции["Picture"]; - Текст = "Эфимерное сообщение"; - - Опции = Новый Структура; - Опции.Вставить("picture", Картинка); - Опции.Вставить("alt" , "Картинка"); - - Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , Текст); - Опции.Вставить("user" , Пользователь); - Опции.Вставить("blocks" , Блок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьЭфемерноеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЭфемерноеСообщение", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакЭфемерное(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтложенныхСообщений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОтложенныхСообщений", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОтложенные(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_СоздатьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Имя = "testconv" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("title" , Имя); - Опции.Вставить("private", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СоздатьКанал", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКанал", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, Имя); - - Канал = Результат["channel"]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_NewChannel", Канал); - OPI_Инструменты.ДобавитьПоле("Slack_NewChannel", Канал, "Строка", ПараметрыФункции); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_NewChannelName", Имя); - OPI_Инструменты.ДобавитьПоле("Slack_NewChannelName", Имя, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Slack_УстановитьТемуКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Тема = "Тестовая тема"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("theme" , Тема); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьТемуКанала", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьТемуКанала", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакТемаКанала(Результат, Тема); - -КонецПроцедуры - -Процедура CLI_Slack_УстановитьЦельКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Цель = "Тестовая цель"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("purpose", Цель); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьЦельКанала", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьЦельКанала", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьКанал", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКанал", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, ПараметрыФункции["Slack_NewChannelName"]); - -КонецПроцедуры - -Процедура CLI_Slack_ПригласитьПользователейВКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Пользователь = ПараметрыФункции["Slack_User"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("users" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПригласитьПользователейВКанал", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПригласитьПользователейВКанал", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, ПараметрыФункции["Slack_NewChannelName"]); - -КонецПроцедуры - -Процедура CLI_Slack_ВыгнатьПользователяИзКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Пользователь = ПараметрыФункции["Slack_User"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("user" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВыгнатьПользователяИзКанала", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыгнатьПользователяИзКанала", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьИсториюКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИсториюКанала", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИсториюКанала", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакИсторияКанала(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСписокПользователейКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователейКанала", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейКанала", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакПользователиКанала(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПокинутьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПокинутьКанал", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПокинутьКанал", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ВступитьВКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВступитьВКанал", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВступитьВКанал", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, ПараметрыФункции["Slack_NewChannelName"]); - -КонецПроцедуры - -Процедура CLI_Slack_ПереименоватьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Название = "testconv" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("title" , Название); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПереименоватьКанал", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьКанал", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, Название); - -КонецПроцедуры - -Процедура CLI_Slack_АрхивироватьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "АрхивироватьКанал", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "АрхивироватьКанал", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСписокКаналов(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокКаналов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКаналов", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСписокКаналов(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ОткрытьДиалог(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Пользователь = ПараметрыФункции["Slack_User"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("users", Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОткрытьДиалог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрытьДиалог", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакДиалог(Результат); - - Диалог = Результат["channel"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_Dialog", Диалог); - OPI_Инструменты.ДобавитьПоле("Slack_Dialog", Диалог, "Строка", ПараметрыФункции); - - Результат = OPI_Slack.ОтправитьСообщение(Токен, Диалог, "Тест диалог"); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение (диалог)"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ЗакрытьДиалог(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Диалог = ПараметрыФункции["Slack_Dialog"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("conv" , Диалог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗакрытьДиалог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрытьДиалог", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСписокФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСписокФайлов(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов (все)"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСписокФайлов(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ЗагрузитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Файл = ПараметрыФункции["Document"]; // URL, Двоичные данные или Путь к файлу - - ИмяФайла = "megadoc.docx"; - Заголовок = "Новый файл"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("title" , Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл" , "Slack"); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СделатьФайлПубличным", "Slack"); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СделатьФайлПриватным", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакФайл(Результат, ИмяФайла); - - ЗагруженныйФайл = Результат["files"][0]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_FileID", ЗагруженныйФайл); - OPI_Инструменты.ДобавитьПоле("Slack_FileID", ЗагруженныйФайл, "Строка", ПараметрыФункции); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("channel" , Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл (в канал)"); - OPI_ПолучениеДанныхТестов.Проверка_СлакФайл(Результат, ИмяФайла); - OPI_Slack.УдалитьФайл(Токен, Результат["files"][0]["id"]); - -КонецПроцедуры - -Процедура CLI_Slack_СделатьФайлПубличным(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПубличным", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_СделатьФайлПриватным(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПриватным", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьДанныеФайла(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьДанныеФайла", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеФайла", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакФайл(Результат, "megadoc.docx"); - -КонецПроцедуры - -Процедура CLI_Slack_УдалитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьФайл", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьСписокВнешнихФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel" , Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокВнешнихФайлов", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСписокФайлов(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокВнешнихФайлов (все)"); - OPI_ПолучениеДанныхТестов.Проверка_СлакСписокФайлов(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_ДобавитьВнешнийФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Заголовок = "Новый файл"; - Файл = ПараметрыФункции["Document"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("url" , Файл); - Опции.Вставить("title" , Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ДобавитьВнешнийФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьВнешнийФайл", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакВнешнийФайл(Результат, Заголовок); - - ЗагруженныйФайл = Результат["file"]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_ExtFileID", ЗагруженныйФайл); - OPI_Инструменты.ДобавитьПоле("Slack_ExtFileID", ЗагруженныйФайл, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Slack_ПолучитьВнешнийФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьВнешнийФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнийФайл", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакВнешнийФайл(Результат, "Новый файл"); - -КонецПроцедуры - -Процедура CLI_Slack_ОтправитьВнешнийФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , ИдентификаторФайла); - Опции.Вставить("channels", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьВнешнийФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьВнешнийФайл", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -Процедура CLI_Slack_УдалитьВнешнийФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьВнешнийФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВнешнийФайл", "Slack"); - OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область Airtable - -Процедура CLI_Airtable_СоздатьБазу(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - Область = ПараметрыФункции["Airtable_Workspace"]; - Наименование = "Тестовая база"; - - МассивПолей = Новый Массив; - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); - - ИмяТаблицы = "Тестовая таблица"; - - СоответствиеТаблиц = Новый Соответствие; - СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("ws" , Область); - Опции.Вставить("title" , Наименование); - Опции.Вставить("tablesdata", СоответствиеТаблиц); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьБазу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазу", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТБазаСТаблицей(Результат, ИмяТаблицы); - - База = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Base", База); - OPI_Инструменты.ДобавитьПоле("Airtable_Base", База, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьТаблицыБазы(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьТаблицыБазы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТаблицыБазы", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТСписокТаблиц(Результат); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьСписокБаз(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокБаз", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокБаз", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТСписокБаз(Результат); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьПолеНомера(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Номер"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеНомера", "Airtable"); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьПолеСтроковое(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Строковое"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСтроковое", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеСтроковое", "Airtable"); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьПолеВложения(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Вложение"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеВложения", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеВложения", "Airtable"); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьПолеФлажка(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Флажок"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеФлажка", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеФлажка", "Airtable"); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьПолеДаты(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Дата"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеДаты", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеДаты", "Airtable"); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьПолеТелефона(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Телефон"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеТелефона", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеТелефона", "Airtable"); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьПолеПочты(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Почта"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеПочты", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеПочты", "Airtable"); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьПолеСсылки(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Ссылка"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСсылки", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеСсылки", "Airtable"); - -КонецПроцедуры - -Процедура CLI_Airtable_СоздатьТаблицу(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - - МассивПолей = Новый Массив; - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеВложения("Вложение")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеФлажка("Флажок")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеДаты("Дата")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеТелефона("Телефон")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеПочты("Почта")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСсылки("Ссылка")); - - Наименование = "Тестовая таблица 2"; - Описание = "Новая таблица"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("title" , Наименование); - Опции.Вставить("fieldsdata" , МассивПолей); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТТаблица(Результат, Наименование, Описание); - - Таблица = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Table", Таблица); - OPI_Инструменты.ДобавитьПоле("Airtable_Table", Таблица, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Airtable_ИзменитьТаблицу(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Наименование = "Тестовая таблица 2 (изм.)"; - Описание = "Новая таблица (изм.)"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("title" , Наименование); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТаблицу", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТТаблица(Результат, Наименование, Описание); - -КонецПроцедуры - -Процедура CLI_Airtable_СоздатьПоле(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Имя = Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("title", Имя); - - Поле = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("title" , Имя); - Опции.Вставить("fielddata", Поле); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьПоле", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПоле", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТПоле(Результат, Имя); - - Поле = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Field", Поле); - OPI_Инструменты.ДобавитьПоле("Airtable_Field", Поле, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Airtable_ИзменитьПоле(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Поле = ПараметрыФункции["Airtable_Field"]; - - Имя = Строка(Новый УникальныйИдентификатор) + "(изм.)"; - Описание = "Новое описание"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("field" , Поле); - Опции.Вставить("title" , Имя); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьПоле", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПоле", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТТаблица(Результат, Имя, Описание); - -КонецПроцедуры - -Процедура CLI_Airtable_СоздатьЗаписи(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - - Номер = 10; - Строковое = "Привет"; - - ОписаниеСтроки1 = Новый Структура("Номер,Строковое", Номер, Строковое); - ОписаниеСтроки2 = Новый Структура("Номер,Строковое", Номер, Строковое); - - МассивОписаний = Новый Массив; - МассивОписаний.Добавить(ОписаниеСтроки1); - МассивОписаний.Добавить(ОписаниеСтроки2); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("data" , МассивОписаний); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗаписи", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТЗаписи(Результат); - - МассивУдаляемых = Новый Массив; - - Для Каждого Запись Из Результат["records"] Цикл - - ТекущаяЗапись = Запись["id"]; - МассивУдаляемых.Добавить(ТекущаяЗапись); - - КонецЦикла; - - OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, МассивУдаляемых); - - // Одиночное - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("data" , ОписаниеСтроки1); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗаписи (одна)"); - OPI_ПолучениеДанныхТестов.Проверка_АТЗаписьНомерСтрока(Результат, Номер, Строковое); - - Запись = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Record", Запись); - OPI_Инструменты.ДобавитьПоле("Airtable_Record", Запись, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьЗапись(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record", Запись); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьЗапись", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗапись", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТЗапись(Результат, Запись); - -КонецПроцедуры - -Процедура CLI_Airtable_СоздатьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Текст = "Тестовый комментарий"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record", Запись); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьКомментарий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКомментарий", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТТекст(Результат, Текст); - - Комментарий = Результат["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Comment", Комментарий); - OPI_Инструменты.ДобавитьПоле("Airtable_Comment", Комментарий, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_Airtable_ИзменитьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Комментарий = ПараметрыФункции["Airtable_Comment"]; - - Текст = "Тестовый комментарий (изм.)"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record" , Запись); - Опции.Вставить("comment", Комментарий); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьКомментарий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКомментарий", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТТекст(Результат, Текст); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьКомментарии(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record" , Запись); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьКомментарии", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКомментарии", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТКомментарии(Результат); - -КонецПроцедуры - -Процедура CLI_Airtable_УдалитьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Комментарий = ПараметрыФункции["Airtable_Comment"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record" , Запись); - Опции.Вставить("comment", Комментарий); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьКомментарий", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКомментарий", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТУдалениеКомментария(Результат, Комментарий); - -КонецПроцедуры - -Процедура CLI_Airtable_ПолучитьСписокЗаписей(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокЗаписей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗаписей", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТЗаписи(Результат); - -КонецПроцедуры - -Процедура CLI_Airtable_УдалитьЗаписи(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("records", Запись); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи", "Airtable"); - OPI_ПолучениеДанныхТестов.Проверка_АТЗаписи(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область Dropbox - -Процедура CLI_Dropbox_ПолучитьСсылкуАвторизации(ПараметрыФункции) - - КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; - - Опции = Новый Структура; - Опции.Вставить("appkey", КлючПриложения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСсылкуАвторизации", Опции); - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуАвторизации", "Dropbox"); - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Строка"); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьТокен(ПараметрыФункции) - - КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; - СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; - Код = ПараметрыФункции["Dropbox_Code"]; - - Опции = Новый Структура; - Опции.Вставить("appkey" , КлючПриложения); - Опции.Вставить("appsecret", СекретПриложения); - Опции.Вставить("code" , Код); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен"); - - Токен = Результат["access_token"]; - Рефреш = Результат["refresh_token"]; - - Если ЗначениеЗаполнено(Токен) Тогда - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_Token", Токен); - КонецЕсли; - - Если ЗначениеЗаполнено(Рефреш) Тогда - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_Refresh", Рефреш); - КонецЕсли; - -КонецПроцедуры - -Процедура CLI_Dropbox_ОбновитьТокен(ПараметрыФункции) - - КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; - СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; - РефрешТокен = ПараметрыФункции["Dropbox_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("appkey" , КлючПриложения); - Опции.Вставить("appsecret", СекретПриложения); - Опции.Вставить("refresh" , РефрешТокен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОбновитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьТокен"); - - Токен = Результат["access_token"]; - - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Токен).Заполнено(); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_Token", Токен); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) - - Путь = "/New/pic.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("detail", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбОбъекте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбОбъекте", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксФайл(Результат, Путь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьПревью(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/mydoc.docx"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьПревью", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПревью", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 120000); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ЗагрузитьФайл(ПараметрыФункции) - - Путь = "/New/pic.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - Картинка = ПараметрыФункции["Picture"]; - - КартинкаПуть = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, КартинкаПуть); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , КартинкаПуть); - Опции.Вставить("path" , Путь); - Опции.Вставить("overwrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксФайл(Результат, Путь); - УдалитьФайлы(КартинкаПуть); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ЗагрузитьФайлПоURL(ПараметрыФункции) - - Путь = "/New/url_doc.docx"; - Токен = ПараметрыФункции["Dropbox_Token"]; - URL = ПараметрыФункции["Document"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("url" , URL); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайлПоURL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлПоURL", "Dropbox"); - - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксРабота(Результат); - - Работа = Результат["async_job_id"]; - - ПараметрыФункции.Вставить("Dropbox_Job", Работа); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_Job", Работа); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - ИДРаботы = ПараметрыФункции["Dropbox_Job"]; - Статус = "in_progress"; - - Пока Статус = "in_progress" Цикл - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("job" , ИДРаботы); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусЗагрузкиПоURL", Опции); - Статус = Результат[".tag"]; - - OPI_Инструменты.Пауза(5); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусЗагрузкиПоURL", "Dropbox"); - - КонецЦикла; - - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксСтатус(Результат); - - Путь = "/New/url_doc.docx"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Путь); - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_УдалитьОбъект(ПараметрыФункции) - - Путь = "/New/pic.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Путь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_КопироватьОбъект(ПараметрыФункции) - - Оригинал = "/New/pic.png"; - Копия = "/New/pic_copy.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("from" , Оригинал); - Опции.Вставить("to" , Копия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "КопироватьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "КопироватьОбъект", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Копия); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Копия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Копия); - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПереместитьОбъект(ПараметрыФункции) - - ОригиналныйПуть = "/New/pic.png"; - ЦелевойПуть = "/pic.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("from" , ОригиналныйПуть); - Опции.Вставить("to" , ЦелевойПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьОбъект", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, ЦелевойПуть); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("from" , ЦелевойПуть); - Опции.Вставить("to" , ОригиналныйПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, ОригиналныйПуть); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_СоздатьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/Новый каталог"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СоздатьПапку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПапку", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Путь); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Путь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_СкачатьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/pic.png"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайл", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 2000000); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_СкачатьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьПапку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьПапку", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьСписокФайловПапки(ПараметрыФункции) - - Путь = "/New"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокФайловПапки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайловПапки", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМассив(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/pic.png"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("amount", 1); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокВерсийОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокВерсийОбъекта", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМассив(Результат, 1); - - Ревизия = Результат["entries"][0]["rev"]; - - ПараметрыФункции.Вставить("Dropbox_FileRevision", Ревизия); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_FileRevision", Ревизия); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ВосстановитьОбъектКВерсии(ПараметрыФункции) - - Версия = ПараметрыФункции["Dropbox_FileRevision"]; - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/pic.png"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("rev" , Версия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ВосстановитьОбъектКВерсии", Опции); - - OPI_Инструменты.Пауза(30); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьОбъектКВерсии", "Dropbox"); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьСписокТегов(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - - МассивПутей = Новый Массив; - МассивПутей.Добавить("/New/Dogs.mp3"); - МассивПутей.Добавить("/New/mydoc.docx"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("paths" , МассивПутей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокТегов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТегов", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксТеги(Результат, МассивПутей.Количество()); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("paths" , "/New/mydoc.docx"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокТегов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТегов (одиночный)"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксТеги(Результат, 1); - - ЕстьТег = Ложь; - - Для Каждого Тег Из Результат["paths_to_tags"][0]["tags"] Цикл - Если Тег["tag_text"] = "важное" Тогда - ЕстьТег = Истина; - КонецЕсли; - КонецЦикла; - - OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЕстьТег).Равно(Истина); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ДобавитьТег(ПараметрыФункции) - - Тег = "Важное"; - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/mydoc.docx"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("tag" , Тег); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьТег", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТег", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_УдалитьТег(ПараметрыФункции) - - Тег = "Важное"; - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/mydoc.docx"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("tag" , Тег); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьТег", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТег", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбАккаунте", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропбоксАккаунт(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("account", Результат["account_id"]); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбАккаунте (сторонний)"); - OPI_ПолучениеДанныхТестов.Проверка_ДропбоксАккаунт(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьДанныеИспользованияПространства", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеИспользованияПространства", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропбоксПространство(Результат); - -КонецПроцедуры - -Процедура CLI_Dropbox_ДобавитьПользователейКФайлу(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Почта = ПараметрыФункции["Dropbox_OtherUser"]; - Файл = ПараметрыФункции["Dropbox_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , Файл); - Опции.Вставить("emails" , Почта); - Опции.Вставить("readonly", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейКФайлу", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропбоксУчастник(Результат, Почта, Ложь); - - Почты = Новый Массив; - Почты.Добавить(Почта); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , Файл); - Опции.Вставить("emails" , Почты); - Опции.Вставить("readonly", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейКФайлу (доп.) "); - OPI_ПолучениеДанныхТестов.Проверка_ДропбоксУчастник(Результат, Почта, Истина); - -КонецПроцедуры - -Процедура CLI_Dropbox_ОпубликоватьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОпубликоватьПапку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОпубликоватьПапку", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксПубличнаяПапка(Результат); - - IDПапки = Результат["shared_folder_id"]; - - ПараметрыФункции.Вставить("Dropbox_SharedFolder", IDПапки); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_SharedFolder", IDПапки); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ОтменитьПубликациюПапки(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Папка = ПараметрыФункции["Dropbox_SharedFolder"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("folder", Папка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюПапки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтменитьПубликациюПапки", "Dropbox"); - - ТекущийСтатус = "in_progress"; - IDРаботы = Результат["async_job_id"]; - - Пока ТекущийСтатус = "in_progress" Цикл - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("job" , IDРаботы); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусАсинхронногоИзменения", Опции); - - ТекущийСтатус = Результат[".tag"]; - OPI_Инструменты.Пауза(3); - - КонецЦикла; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусАсинхронногоИзменения", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_ДропБоксСтатус(Результат); - - ПараметрыФункции.Вставить("Dropbox_NewJobID", IDРаботы); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_NewJobID", IDРаботы); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - IDРаботы = ПараметрыФункции["Dropbox_NewJobID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("job" , IDРаботы); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусАсинхронногоИзменения", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Dropbox_ДобавитьПользователейКПапке(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Почта = ПараметрыФункции["Dropbox_OtherUser"]; - Папка = ПараметрыФункции["Dropbox_SharedFolder"]; // shared_folder_id - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("folder" , Папка); - Опции.Вставить("emails" , Почта); - Опции.Вставить("readonly", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейКПапке", "Dropbox"); - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - - Почты = Новый Массив; - Почты.Добавить(Почта); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("folder" , Папка); - Опции.Вставить("emails" , Почты); - Опции.Вставить("readonly", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_Dropbox_ОтменитьПубликациюФайла(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Файл = ПараметрыФункции["Dropbox_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , Файл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюФайла", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтменитьПубликациюФайла", "Dropbox"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область VKTeams - -Процедура CLI_VKTeams_ПроверитьТокен(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПроверитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьТокен", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТПользователь(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПолучитьСобытия(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDПоследнего = 0; - - Для Н = 1 По 5 Цикл // В реальной работе - бесконечный цикл - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("last" , IDПоследнего); - Опции.Вставить("timeout", 3); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьСобытия", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытия", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСобытия(Результат); - - События = Результат["events"]; - - // Обработка событий... - - Если Не События.Количество() = 0 Тогда - - IDПоследнего = События[События.ВГраница()]["eventId"]; - - КонецЕсли; - - КонецЦикла; - - OPI_Инструменты.Пауза(3); - -КонецПроцедуры - -Процедура CLI_VKTeams_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - Текст = "Текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (простое)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; - Текст = "Полужирный текст сообщения"; - Разметка = "HTML"; - - Клавиатура = Новый Массив; - МассивСтрокиКнопок = Новый Массив; - - Опции = Новый Структура; - Опции.Вставить("text" , "Кнопка1"); - Опции.Вставить("data" , "НажатиеКнопки1"); - Опции.Вставить("style", "attention"); - - Кнопка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "СформироватьКнопкуДействия", Опции); - МассивСтрокиКнопок.Добавить(Кнопка); - - Опции = Новый Структура; - Опции.Вставить("text" , "Кнопка2"); - Опции.Вставить("url" , "https://openintegrations.dev"); - - Кнопка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "СформироватьКнопкуДействия", Опции); - МассивСтрокиКнопок.Добавить(Кнопка); - - Клавиатура.Добавить(МассивСтрокиКнопок); - Клавиатура.Добавить(МассивСтрокиКнопок); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("reply" , IDЦитируемого); - Опции.Вставить("keyboard", Клавиатура); - Опции.Вставить("parsemod", Разметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - - IDСообщения = Результат["msgId"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VkTeams_MessageID", IDСообщения); - ПараметрыФункции.Вставить("VkTeams_MessageID", IDСообщения); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПереслатьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - IDЧатаИсточника = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("messageid", IDСообщения); - Опции.Вставить("fromid" , IDЧатаИсточника); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьСообщение (простое)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - - Текст = "Дополнительный текст"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("messageid", IDСообщения); - Опции.Вставить("fromid" , IDЧатаИсточника); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьСообщение", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ОтправитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - Текст = "Подпись к файлу"; - - Файл = ПараметрыФункции["Document"]; // URL - ФайлПуть = ПолучитьИмяВременногоФайла("docx"); // Путь - - КопироватьФайл(Файл, ФайлПуть); - - ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("file" , Файл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (URL)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("file" , ФайлПуть); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (Путь)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("file" , ФайлДД); - Опции.Вставить("text" , Текст); - Опции.Вставить("filename" , "ВажныйДокумент.docx"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - - УдалитьФайлы(ФайлПуть); - - IDФайла = Результат["fileId"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VkTeams_FileID", IDФайла); - ПараметрыФункции.Вставить("VkTeams_FileID", IDФайла); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПереслатьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - IDФайла = ПараметрыФункции["VkTeams_FileID"]; - Текст = "Подпись к файлу"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьФайл", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПолучитьИнформациюОФайле(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDФайла = ПараметрыФункции["VkTeams_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОФайле", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОФайле", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТФайл(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ИзменитьТекстСообщения(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - Текст = "Новый текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid", IDСообщения); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТекстСообщения (простое)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - - Текст = "Новый полужирный текст сообщения"; - Разметка = "HTML"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid", IDСообщения); - Опции.Вставить("text" , Текст); - Опции.Вставить("parsemod" , Разметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТекстСообщения", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VKTeams_УдалитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УдалитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VKTeams_ОтправитьГолосовоеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; - - Файл = ПараметрыФункции["Audio2"] ; // URL - ФайлПуть = ПолучитьИмяВременногоФайла("m4a"); // Путь - - КопироватьФайл(Файл, ФайлПуть); - - ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , Файл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьГолосовоеСообщение (URL)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , ФайлПуть); - Опции.Вставить("reply" , IDЦитируемого); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьГолосовоеСообщение (Путь)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - - УдалитьФайлы(ФайлПуть); - - IDФайла = Результат["fileId"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VkTeams_VoiceID", IDФайла); - ПараметрыФункции.Вставить("VkTeams_VoiceID", IDФайла); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПереслатьГолосовоеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - IDФайла = ПараметрыФункции["VkTeams_VoiceID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьГолосовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьГолосовоеСообщение", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ИсключитьПользователейЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("members", Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИсключитьПользователейЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИсключитьПользователейЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ИзменитьАватарЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Файл = ПараметрыФункции["Picture3"]; // URL - ФайлПуть = ПолучитьИмяВременногоФайла("png"); // Путь - - КопироватьФайл(Файл, ФайлПуть); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("file" , Файл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьАватарЧата (URL)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("file" , ФайлПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьАватарЧата (Путь)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - - УдалитьФайлы(ФайлПуть); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПолучитьИнформациюОЧате(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОЧате", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОЧате", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТЧат(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПолучитьАдминистраторовЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьАдминистраторовЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьАдминистраторовЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСписок(Результат, "admins"); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПолучитьПользователейЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьПользователейЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователейЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСписок(Результат, "members"); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗаблокированныхПользователейЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаблокированныхПользователейЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСписок(Результат, "users"); - -КонецПроцедуры - -Процедура CLI_VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗапросыВступленияЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗапросыВступленияЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТСписок(Результат, "users"); - -КонецПроцедуры - -Процедура CLI_VKTeams_ЗаблокироватьПользователяЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("userid" , Пользователь); - Опции.Вставить("dellast", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗаблокироватьПользователяЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗаблокироватьПользователяЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_РазблокироватьПользователяЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("userid" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "РазблокироватьПользователяЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "РазблокироватьПользователяЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ЗакрепитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗакрепитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрепитьСообщение", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ОткрепитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОткрепитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрепитьСообщение", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("userid" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОдобритьЗаявкуНаВступление (один)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТЗаявки(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОдобритьЗаявкуНаВступление", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТЗаявки(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("userid" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтклонитьЗаявкуНаВступление (один)", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТЗаявки(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтклонитьЗаявкуНаВступление", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТЗаявки(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_УстановитьЗаголовокЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Текст = "Новый заголовок"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьЗаголовокЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьЗаголовокЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_УстановитьОписаниеЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Текст = "Новое описание"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьОписаниеЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьОписаниеЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_УстановитьПравилаЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Текст = "Текст новых правил"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьПравилаЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьПравилаЧата", "VkTeams"); - OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); - -КонецПроцедуры - -Процедура CLI_VKTeams_СформироватьКнопкуДействия(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("text" , "Кнопка1"); - Опции.Вставить("data" , "НажатиеКнопки1"); - Опции.Вставить("style" , "attention"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьПравилаЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьКнопкуДействия", "VkTeams"); - -КонецПроцедуры - -#КонецОбласти - -#Область Ozon - -Процедура CLI_Ozon_ПолучитьДеревоКатегорийИТиповТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - Опции = Новый Структура; - Опции.Вставить("clientid", IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("lang" , "EN"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьДеревоКатегорийИТиповТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДеревоКатегорийИТиповТоваров (EN)", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокКатегорий(Результат); - - Опции = Новый Структура; - Опции.Вставить("clientid", IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьДеревоКатегорийИТиповТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДеревоКатегорийИТиповТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокКатегорий(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьХарактеристикиКатегории(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDКатегории = 17029016; - IDТипа = 970778135; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("categoryid", IDКатегории); - Опции.Вставить("typeid" , IDТипа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьХарактеристикиКатегории", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьХарактеристикиКатегории", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокХарактеристик(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьЗначенияХарактеристики(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDКатегории = 17054869; - IDТипа = 97311; - IDХарактеристики = 85; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("categoryid" , IDКатегории); - Опции.Вставить("typeid" , IDТипа); - Опции.Вставить("attributeid", IDХарактеристики); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьЗначенияХарактеристики", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗначенияХарактеристики", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокЗначенийХарактеристики(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_НайтиЗначенияХарактеристики(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDКатегории = 17054869; - IDТипа = 97311; - IDХарактеристики = 85; - Значение = "Sunshine"; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("categoryid" , IDКатегории); - Опции.Вставить("typeid" , IDТипа); - Опции.Вставить("attributeid", IDХарактеристики); - Опции.Вставить("value" , Значение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "НайтиЗначенияХарактеристики", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НайтиЗначенияХарактеристики", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокЗначенийХарактеристики(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтруктуруТовара(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруТовара", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_СоздатьОбновитьТовары(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - Картинка1 = ПараметрыФункции["Picture"]; - Картинка2 = ПараметрыФункции["Picture2"]; - Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/"; - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - // Стандартные реквизиты - - СтруктураТовара = Новый Структура; - СтруктураТовара.Вставить("description_category_id", 17028922); - СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); - СтруктураТовара.Вставить("offer_id" , "143210609"); - СтруктураТовара.Вставить("barcode" , "112772873170"); - СтруктураТовара.Вставить("price" , "1300"); - СтруктураТовара.Вставить("old_price" , "1300"); - СтруктураТовара.Вставить("vat" , "0.1"); - СтруктураТовара.Вставить("height" , 250); - СтруктураТовара.Вставить("width" , 150); - СтруктураТовара.Вставить("depth" , 10); - СтруктураТовара.Вставить("dimension_unit" , "mm"); - СтруктураТовара.Вставить("weight" , 100); - СтруктураТовара.Вставить("weight_unit" , "g"); - СтруктураТовара.Вставить("images" , МассивКартинок); - - // Видео - - Опции = Новый Структура; - Опции.Вставить("item" , СтруктураТовара); - Опции.Вставить("url" , Видео); - Опции.Вставить("title" , "video1"); - - СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДобавитьВидеоТовара", Опции); - - // Атрибуты, индивидуальные для разных категорий - - АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы"); - АтрибутКатегории2 = Новый Структура("dictionary_value_id,value", 5060050 , "Samsung"); - АтрибутКатегории3 = Новый Структура("dictionary_value_id,value", 61576 , "серый"); - АтрибутКатегории4 = Новый Структура("dictionary_value_id,value", 95911 , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); - - АтрибутКатегории5 = Новый Структура("value", "Комплект защитных плёнок для X3 NFC. Темный хлопок"); - - Опции = Новый Структура; - Опции.Вставить("object" , СтруктураТовара); - Опции.Вставить("attributeid", 5076); - Опции.Вставить("complexid" , 0); - Опции.Вставить("values" , АтрибутКатегории1); - - СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДополнитьКомплексныйАтрибут", Опции); - - OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 85 , 0, АтрибутКатегории2); - OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 10096, 0, АтрибутКатегории3); - OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 8229 , 0, АтрибутКатегории4); - OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 9048 , 0, АтрибутКатегории5); - - Опции = Новый Структура; - Опции.Вставить("clientid", IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("items" , СтруктураТовара); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "СоздатьОбновитьТовары", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьОбновитьТовары", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат); - - IDЗадания = Результат["result"]["task_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_TaskID", IDЗадания); - ПараметрыФункции.Вставить("Ozon_TaskID", IDЗадания); - - OPI_Инструменты.Пауза(120); - -КонецПроцедуры - -Процедура CLI_Ozon_ДобавитьВидеоТовара(ПараметрыФункции) - - Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/"; - - СтруктураТовара = Новый Структура; - СтруктураТовара.Вставить("description_category_id", 17028922); - СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); - СтруктураТовара.Вставить("offer_id" , "143210608"); - СтруктураТовара.Вставить("barcode" , "112772873170"); - СтруктураТовара.Вставить("price" , "1000"); - СтруктураТовара.Вставить("old_price" , "1100"); - СтруктураТовара.Вставить("vat" , "0.1"); - СтруктураТовара.Вставить("height" , 250); - СтруктураТовара.Вставить("width" , 150); - СтруктураТовара.Вставить("depth" , 10); - СтруктураТовара.Вставить("dimension_unit" , "mm"); - СтруктураТовара.Вставить("weight" , 100); - СтруктураТовара.Вставить("weight_unit" , "g"); - - // Видео - - Опции = Новый Структура; - Опции.Вставить("item" , СтруктураТовара); - Опции.Вставить("url" , Видео); - Опции.Вставить("title" , "video1"); - - СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДобавитьВидеоТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(СтруктураТовара, "ДобавитьВидеоТовара", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(СтруктураТовара); - -КонецПроцедуры - -Процедура CLI_Ozon_ДобавитьВидеообложкуТовара(ПараметрыФункции) - - Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/"; - - СтруктураТовара = Новый Структура; - СтруктураТовара.Вставить("description_category_id", 17028922); - СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); - СтруктураТовара.Вставить("offer_id" , "143210608"); - СтруктураТовара.Вставить("barcode" , "112772873170"); - СтруктураТовара.Вставить("price" , "1000"); - СтруктураТовара.Вставить("old_price" , "1100"); - СтруктураТовара.Вставить("vat" , "0.1"); - СтруктураТовара.Вставить("height" , 250); - СтруктураТовара.Вставить("width" , 150); - СтруктураТовара.Вставить("depth" , 10); - СтруктураТовара.Вставить("dimension_unit" , "mm"); - СтруктураТовара.Вставить("weight" , 100); - СтруктураТовара.Вставить("weight_unit" , "g"); - - // Видеообложка - - Опции = Новый Структура; - Опции.Вставить("item" , СтруктураТовара); - Опции.Вставить("url" , Видео); - - СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДобавитьВидеообложкуТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(СтруктураТовара, "ДобавитьВидеообложкуТовара", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(СтруктураТовара); - -КонецПроцедуры - -Процедура CLI_Ozon_ДополнитьКомплексныйАтрибут(ПараметрыФункции) - - СтруктураТовара = Новый Структура; - СтруктураТовара.Вставить("description_category_id", 17028922); - СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); - СтруктураТовара.Вставить("offer_id" , "143210608"); - СтруктураТовара.Вставить("barcode" , "112772873170"); - СтруктураТовара.Вставить("price" , "1000"); - СтруктураТовара.Вставить("old_price" , "1100"); - СтруктураТовара.Вставить("vat" , "0.1"); - СтруктураТовара.Вставить("height" , 250); - СтруктураТовара.Вставить("width" , 150); - СтруктураТовара.Вставить("depth" , 10); - СтруктураТовара.Вставить("dimension_unit" , "mm"); - СтруктураТовара.Вставить("weight" , 100); - СтруктураТовара.Вставить("weight_unit" , "g"); - - АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы"); - - Опции = Новый Структура; - Опции.Вставить("object" , СтруктураТовара); - Опции.Вставить("attributeid", 5076); - Опции.Вставить("complexid" , 0); - Опции.Вставить("values" , АтрибутКатегории1); - - СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДополнитьКомплексныйАтрибут", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(СтруктураТовара, "ДополнитьКомплексныйАтрибут", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(СтруктураТовара); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтатусДобавленияТовара(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDЗадачи = ПараметрыФункции["Ozon_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("taskid" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусДобавленияТовара", "Ozon"); - - Пока Результат["result"]["items"][0]["status"] = "pending" Цикл - - OPI_Инструменты.Пауза(30); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияТовара", Опции); - - КонецЦикла; - - OPI_ПолучениеДанныхТестов.Проверка_ОзонНовыеТовары(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_СоздатьТоварыПоOzonID(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - СтруктураТовара = Новый Структура; - СтруктураТовара.Вставить("name" , "Новый импортированный товар"); - СтруктураТовара.Вставить("sku" , 1626044001); - СтруктураТовара.Вставить("offer_id" , "91132"); - СтруктураТовара.Вставить("price" , "1100"); - СтруктураТовара.Вставить("old_price" , "1100"); - СтруктураТовара.Вставить("vat" , "0.1"); - СтруктураТовара.Вставить("currency_code", "RUB"); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("items" , СтруктураТовара); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "СоздатьТоварыПоOzonID", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТоварыПоOzonID", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат); - - IDЗадачи = Результат["result"]["task_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_SkuTaskID", IDЗадачи); - ПараметрыФункции.Вставить("Ozon_SkuTaskID", IDЗадачи); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("taskid" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияТовара", Опции); - - Пока Результат["result"]["items"][0]["status"] = "pending" Цикл - - OPI_Инструменты.Пауза(30); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияТовара", Опции); - - КонецЦикла; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусДобавленияТовара (SKU)", "Ozon"); - - OPI_ПолучениеДанныхТестов.Проверка_ОзонНовыеТовары(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСокращеннуюСтруктуруТовара(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСокращеннуюСтруктуруТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСокращеннуюСтруктуруТовара", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтруктуруОбновленияХарактеристик(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруОбновленияХарактеристик", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруОбновленияХарактеристик", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ОбновитьХарактеристикиТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - СтруктураХаракетристик = Новый Структура("offer_id", "143210609"); - - АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы"); - АтрибутКатегории2 = Новый Структура("dictionary_value_id,value", 5060050 , "Samsung"); - АтрибутКатегории3 = Новый Структура("dictionary_value_id,value", 61576 , "красный"); - - OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураХаракетристик, 5076 , 0, АтрибутКатегории1); - OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураХаракетристик, 85 , 0, АтрибутКатегории2); - OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураХаракетристик, 10096, 0, АтрибутКатегории3); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("items" , СтруктураХаракетристик); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ОбновитьХарактеристикиТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьХарактеристикиТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат, Ложь); - - IDЗадачи = Результат["task_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_AttUpdateTaskID", IDЗадачи); - ПараметрыФункции.Вставить("Ozon_AttUpdateTaskID", IDЗадачи); - - Результат = OPI_Ozon.ПолучитьСтатусДобавленияТовара(IDКлиента, КлючAPI, IDЗадачи); - - Пока Результат["result"]["items"][0]["status"] = "pending" Цикл - - OPI_Инструменты.Пауза(30); - Результат = OPI_Ozon.ПолучитьСтатусДобавленияТовара(IDКлиента, КлючAPI, IDЗадачи); - - КонецЦикла; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусДобавленияТовара (хар.)", "Ozon"); - - OPI_ПолучениеДанныхТестов.Проверка_ОзонНовыеТовары(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтруктуруФильтраТоваров(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруФильтраТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСписокТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - МассивID = Новый Массив; - МассивID.Добавить("143210609"); - - Фильтр = Новый Структура; - Фильтр.Вставить("visibility" , "ALL"); - Фильтр.Вставить("offer_id" , МассивID); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("filter" , Фильтр); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонМассивОбъектов(Результат); - - IDТовара = Результат["result"]["items"][0]["product_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_ProductID", IDТовара); - ПараметрыФункции.Вставить("Ozon_ProductID", IDТовара); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьОписанияХарактеристикТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - МассивID = Новый Массив; - МассивID.Добавить("143210609"); - - Фильтр = Новый Структура; - Фильтр.Вставить("visibility", "ALL"); - Фильтр.Вставить("offer_id" , МассивID); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("filter" , Фильтр); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьОписанияХарактеристикТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписанияХарактеристикТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьКонтентРейтингТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - SKU = 1626044001; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("sku" , SKU); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьКонтентРейтингТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКонтентРейтингТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонМассивРейтингов(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьИнформациюОТоварах(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - Артикул = "143210609"; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("offerid" , Артикул); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьИнформациюОТоварах", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТоварах", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонТовары(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьОписаниеТовара(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - Артикул = "143210609"; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("offerid" , Артикул); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьОписаниеТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеТовара", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонТовар(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьЛимитыРаботыСТоварами(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьЛимитыРаботыСТоварами", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЛимитыРаботыСТоварами", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонЛимиты(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ОбновитьИзображенияТовара(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Картинка1 = ПараметрыФункции["Picture"]; - Картинка2 = ПараметрыФункции["Picture2"]; - - МаркетинговыйЦвет = "GREEN"; - - МассивИзображений = Новый Массив; - МассивИзображений.Добавить(Картинка1); - МассивИзображений.Добавить(Картинка2); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("productid", IDТовара); - Опции.Вставить("images" , МассивИзображений); - Опции.Вставить("color" , МаркетинговыйЦвет); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ОбновитьИзображенияТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьИзображенияТовара", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонКартинки(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПроверитьЗагрузкуИзображенийТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("products" , IDТовара); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПроверитьЗагрузкуИзображенийТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьЗагрузкуИзображенийТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонОбъекты(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ИзменитьАртикулыТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - СоответствиеАртикулов = Новый Соответствие; - СоответствиеАртикулов.Вставить("143210609", "143210613"); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("offers" , СоответствиеАртикулов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ИзменитьАртикулыТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьАртикулыТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонБезОшибок(Результат); - - СоответствиеАртикулов = Новый Соответствие; - СоответствиеАртикулов.Вставить("143210613", "143210609"); - - Результат = OPI_Ozon.ИзменитьАртикулыТоваров(IDКлиента, КлючAPI, СоответствиеАртикулов); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьАртикулыТоваров (обратный)", "Ozon"); - - OPI_ПолучениеДанныхТестов.Проверка_ОзонБезОшибок(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_АрхивироватьТовары(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("products" , IDТовара); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "АрхивироватьТовары", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "АрхивироватьТовары", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_РазархивироватьТовары(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("products" , IDТовара); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "РазархивироватьТовары", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "РазархивироватьТовары", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_УдалитьТоварыБезSKU(ПараметрыФункции) - - OPI_Инструменты.Пауза(30); - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Результат = OPI_Ozon.АрхивироватьТовары(IDКлиента, КлючAPI, IDТовара); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "АрхивироватьТовары (для удаления)", "Ozon"); - OPI_Инструменты.Пауза(15); - - Артикул = "143210609"; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("articles" , Артикул); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "УдалитьТоварыБезSKU", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТоварыБезSKU", "Ozon"); - -КонецПроцедуры - -Процедура CLI_Ozon_ЗагрузитьКодыАктивацииТовара(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Коды = Новый Массив; - Коды.Добавить("11111111"); - Коды.Добавить("22222222"); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("productid", IDТовара); - Опции.Вставить("codes" , Коды); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ЗагрузитьКодыАктивацииТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьКодыАктивацииТовара", "Ozon"); - - IDЗадания = 1; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_CodesTaskID", IDЗадания); - ПараметрыФункции.Вставить("Ozon_CodesTaskID", IDЗадания); - - OPI_Инструменты.Пауза(120); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтатусДобавленияКодов(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDЗадачи = ПараметрыФункции["Ozon_CodesTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("taskid" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияКодов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусДобавленияКодов", "Ozon"); - - Если ЗначениеЗаполнено(Результат["result"]) Тогда - Пока Результат["result"]["status"] = "pending" Цикл - - OPI_Инструменты.Пауза(30); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияКодов", Опции); - - КонецЦикла; - КонецЕсли; - - //OPI_ПолучениеДанныхТестов.Проверка_ОзонДобавлениеКодов(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьКоличествоПодписчиковТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - SKU = 1626044001; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("sku" , 1626044001); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьКоличествоПодписчиковТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКоличествоПодписчиковТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонПодписчики(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСвязанныеSKU(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - SKU = 1626044001; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("sku" , 1626044001); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСвязанныеSKU", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСвязанныеSKU", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонSKU(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПривязатьШтрихкоды(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - СоответствиеШтрихкодов = Новый Соответствие; - СоответствиеШтрихкодов.Вставить("1626044001", "112233"); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("barcodes" , СоответствиеШтрихкодов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПривязатьШтрихкоды", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПривязатьШтрихкоды", "Ozon"); - -КонецПроцедуры - -Процедура CLI_Ozon_СоздатьШтрихкоды(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("productids", IDТовара); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "СоздатьШтрихкоды", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьШтрихкоды", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонБезОшибок(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСписокСкладов(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокСкладов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСкладов", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьКоличествоТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - МассивID = Новый Массив; - МассивID.Добавить("143210608"); - - Фильтр = Новый Структура; - Фильтр.Вставить("visibility" , "ALL"); - Фильтр.Вставить("offer_id" , МассивID); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("filter" , Фильтр); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьКоличествоТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКоличествоТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонОбъекты(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ОбновитьЦеныТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Цены = Новый Структура; - Цены.Вставить("auto_action_enabled" , "DISABLED"); - Цены.Вставить("currency_code" , "RUB"); - Цены.Вставить("min_price" , "1300"); - Цены.Вставить("offer_id" , "143210610"); - Цены.Вставить("old_price" , "1400"); - Цены.Вставить("price" , "1300"); - Цены.Вставить("price_strategy_enabled", "DISABLED"); - Цены.Вставить("product_id" , IDТовара); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("prices" , Цены); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ОбновитьЦеныТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЦеныТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонМассивОбновлено(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ОбновитьКоличествоТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = ПараметрыФункции["Ozon_ProductID"]; - - Остатки = Новый Структура; - Остатки.Вставить("offer_id" , "143210610"); - Остатки.Вставить("product_id" , IDТовара); - Остатки.Вставить("stock" , 20); - Остатки.Вставить("warehouse_id", 1); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("stocks" , Остатки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ОбновитьКоличествоТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьКоличествоТоваров", "Ozon"); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьЦеныТоваров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьЦеныТоваров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЦеныТоваров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонОбъекты(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьИнформациюОбУценке(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - SKU = 1626044001; - - Опции = Новый Структура; - Опции.Вставить("clientid", IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("sku" , SKU); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьИнформациюОбУценке", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбУценке", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат, "items"); - -КонецПроцедуры - -Процедура CLI_Ozon_УстановитьСкидкуНаУцененныйТовар(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDТовара = 1156646653; - - Скидка = 10; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("productid", IDТовара); - Опции.Вставить("discount" , Скидка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "УстановитьСкидкуНаУцененныйТовар", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСкидкуНаУцененныйТовар", "Ozon"); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСписокАкций(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокАкций", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокАкций", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьДоступныеТоварыАкции(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDАкции = 111111111; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("actionid" , IDАкции); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьДоступныеТоварыАкции", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДоступныеТоварыАкции", "Ozon"); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьУчаствующиеТоварыАкции(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDАкции = 111111111; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("actionid" , IDАкции); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьУчаствующиеТоварыАкции", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьУчаствующиеТоварыАкции", "Ozon"); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтруктуруОстатковТовара(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруОстатковТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруОстатковТовара", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтруктуруЦеныТовара(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруЦеныТовара", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЦеныТовара", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСписокКластеров(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокКластеров", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКластеров", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонКластеры(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСписокСкладовОтгрузки(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - Поиск = "ТВЕРЬ"; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("search" , Поиск); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокСкладовОтгрузки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСкладовОтгрузки", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонПоиск(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_СоздатьЧерновикЗаявкиFBO(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - Кластер = 2; - - Позиции = Новый Соответствие; - Позиции.Вставить("1783161863", 5); - Позиции.Вставить("1784654052", 2); - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("clusters" , Кластер); - Опции.Вставить("items" , Позиции); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "СоздатьЧерновикЗаявкиFBO", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЧерновикЗаявкиFBO", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонЧерновик(Результат); - - IDЧерновика = Результат["operation_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_FBOOperID", IDЧерновика); - ПараметрыФункции.Вставить("Ozon_FBOOperID", IDЧерновика); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьЧерновикЗаявкиFBO(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - IDОперации = ПараметрыФункции["Ozon_FBOOperID"]; - - Статус = "CALCULATION_STATUS_IN_PROGRESS"; - - Опции = Новый Структура; - Опции.Вставить("clientid" , IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("oper" , IDОперации); - - Пока Статус = "CALCULATION_STATUS_IN_PROGRESS" Цикл - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьЧерновикЗаявкиFBO", Опции); - Статус = Результат["status"]; - - OPI_Инструменты.Пауза(20); - - КонецЦикла; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧерновикЗаявкиFBO", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонГотовыйЧерновик(Результат); - - IDЧерновика = Результат["draft_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_Draft", IDЧерновика); - ПараметрыФункции.Вставить("Ozon_Draft", IDЧерновика); - - IDСклада = Результат["clusters"][0]["warehouses"][0]["supply_warehouse"]["warehouse_id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_FBOWarehouse", IDСклада); - ПараметрыФункции.Вставить("Ozon_FBOWarehouse", IDСклада); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтруктуруДопПолейОтправления(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруДопПолейОтправления", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруДопПолейОтправления", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСтруктуруФильтраОтправлений(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруФильтраОтправлений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраОтправлений", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьСписокОтправленийFBO(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - - ДопПоля = Новый Структура; - ДопПоля.Вставить("analytics_data", Истина); - ДопПоля.Вставить("financial_data", Истина); - - Фильтр = Новый Структура; - Фильтр.Вставить("since", XMLСтрока('20230101') + "Z"); - Фильтр.Вставить("to" , XMLСтрока('20240101') + "Z"); - - Опции = Новый Структура; - Опции.Вставить("clientid", IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("filter" , Фильтр); - Опции.Вставить("with" , ДопПоля); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокОтправленийFBO", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОтправленийFBO", "Ozon"); - OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Ozon_ПолучитьТаймслотыFBO(ПараметрыФункции) - - IDКлиента = ПараметрыФункции["Ozon_ClientID"]; - КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; - Сутки = 86400; - - ДатаОт = OPI_Инструменты.ПолучитьТекущуюДату(); - ДатаПо = ДатаОт + Сутки; - Черновик = ПараметрыФункции["Ozon_Draft"]; - Склад = ПараметрыФункции["Ozon_FBOWarehouse"]; - - Опции = Новый Структура; - Опции.Вставить("clientid", IDКлиента); - Опции.Вставить("apikey" , КлючAPI); - Опции.Вставить("from" , ДатаОт); - Опции.Вставить("to" , ДатаПо); - Опции.Вставить("draft" , Черновик); - Опции.Вставить("whs" , Склад); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьТаймслотыFBO", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТаймслотыFBO", "Ozon"); - //OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область Neocities - -Процедура CLI_Neocities_ЗагрузитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - Данные = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Путь = "testfolder/test_pic.png"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("file" , Данные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл", "Neocities"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - -КонецПроцедуры - -Процедура CLI_Neocities_ЗагрузитьФайлы(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные - Гифка = ПараметрыФункции["Gif"]; // URL, Путь или Двоичные данные - - СоответствиеФайлов = Новый Соответствие; - СоответствиеФайлов.Вставить("test/pic1.png", Картинка1); - СоответствиеФайлов.Вставить("test/gif.gif" , Картинка2); - СоответствиеФайлов.Вставить("pic2.png" , Гифка); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("files", СоответствиеФайлов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайлы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлы", "Neocities"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - -КонецПроцедуры - -Процедура CLI_Neocities_УдалитьВыбранныеФайлы(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - - Пути = Новый Массив; - Пути.Добавить("/test/pic1.png"); - Пути.Добавить("/test/gif.gif"); - Пути.Добавить("/pic2.png"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("paths", Пути); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВыбранныеФайлы", "Neocities"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - - Результат = OPI_Neocities.УдалитьВыбранныеФайлы(Токен, "/testfolder"); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВыбранныеФайлы (каталог 1)"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - - Результат = OPI_Neocities.УдалитьВыбранныеФайлы(Токен, "/test"); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВыбранныеФайлы (каталог 2)"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - -КонецПроцедуры - -Процедура CLI_Neocities_ПолучитьСписокФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - Путь = "test"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов (Все)"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов", "Neocities"); - OPI_ПолучениеДанныхТестов.Проверка_НСФайлыКаталога(Результат, 2); - -КонецПроцедуры - -Процедура CLI_Neocities_ПолучитьДанныеОСайте(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - Сайт = "2athenaeum"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеОСайте", "Neocities"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("sitename", Сайт); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеОСайте (Сайт)"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - -КонецПроцедуры - -Процедура CLI_Neocities_ПолучитьТокен(ПараметрыФункции) - - Логин = ПараметрыФункции["NC_Login"]; - Пароль = ПараметрыФункции["NC_Password"]; - - Опции = Новый Структура; - Опции.Вставить("login" , Логин); - Опции.Вставить("password", Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьТокен", Опции); - - Результат["api_key"] = "***"; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен", "Neocities"); - OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); - -КонецПроцедуры - -Процедура CLI_Neocities_СинхронизироватьКаталоги(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - - ЛокальныйКаталог = "C:\test_site"; - УдаленныйКаталог = "test_sync"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("local" , ЛокальныйКаталог); - Опции.Вставить("remote", УдаленныйКаталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "СинхронизироватьКаталоги", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СинхронизироватьКаталоги", "Neocities"); - OPI_ПолучениеДанныхТестов.Проверка_НССинхронизация(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область Bitrix24 - -Процедура CLI_Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыФункции) - - Домен = ПараметрыФункции["Bitrix24_Domain"]; - ClientID = ПараметрыФункции["Bitrix24_ClientID"]; - - Опции = Новый Структура; - Опции.Вставить("domain" , Домен); - Опции.Вставить("clientid", ClientID); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСсылкуАвторизацииПриложения", Опции); - - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуАвторизацииПриложения", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_AuthURL", Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Bitrix24_ClientID"]; - ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; - Code = ПараметрыФункции["Bitrix24_Code"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , ClientID); - Опции.Вставить("clientsecret", ClientSecret); - Опции.Вставить("code" , Code); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен", "Bitrix24"); - - Если ЗначениеЗаполнено(Результат["access_token"]) И ЗначениеЗаполнено(Результат["refresh_token"]) Тогда - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_Token" , Результат["access_token"]); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_Refresh", Результат["refresh_token"]); - КонецЕсли; - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОбновитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Bitrix24_ClientID"]; - ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; - Refresh = ПараметрыФункции["Bitrix24_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , ClientID); - Опции.Вставить("clientsecret", ClientSecret); - Опции.Вставить("refresh" , Refresh); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОбновитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьТокен", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксАвторизация(Результат); - - Если ЗначениеЗаполнено(Результат["access_token"]) И ЗначениеЗаполнено(Результат["refresh_token"]) Тогда - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_Token" , Результат["access_token"]); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_Refresh", Результат["refresh_token"]); - КонецЕсли; - -КонецПроцедуры - -Процедура CLI_Bitrix24_СерверноеВремя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СерверноеВремя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксВремя(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СерверноеВремя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксВремя(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьНовость(ПараметрыФункции) - - Текст = "Текст новости"; - Заголовок = "Заголовок новости"; - Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные - - Файлы = Новый Соответствие; - Файлы.Вставить("1.png", Картинка1); - Файлы.Вставить("2.png", Картинка2); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("text" , Текст); - Опции.Вставить("files" , Файлы); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("important", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьНовость (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDНовости = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookPostID", IDНовости); - ПараметрыФункции.Вставить("Bitrix24_HookPostID", IDНовости); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("text" , Текст); - Опции.Вставить("files" , Файлы); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьНовость", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDНовости = Результат["result"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_PostID", IDНовости); - ПараметрыФункции.Вставить("Bitrix24_PostID", IDНовости); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьНовость(ПараметрыФункции) - - Текст = "Новый текст новости"; - Заголовок = "Новый заголовок новости"; - Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - - Файлы = Новый Соответствие; - Файлы.Вставить("1.png", Картинка1); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("text" , Текст); - Опции.Вставить("files" , Файлы); - Опции.Вставить("title" , Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьНовость (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("text" , Текст); - Опции.Вставить("files" , Файлы); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьНовость", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьНовость(ПараметрыФункции) - - IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьНовость (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьНовость", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыФункции) - - IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПросмотревшихВажное (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПросмотревшихВажное", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьНовости(ПараметрыФункции) - - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНовости (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассивОбъектов(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНовости", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассивОбъектов(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьКомментарийНовости(ПараметрыФункции) - - Текст = "Комментарий к новости"; - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКомментарийНовости (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - Текст = "Другой комментарий к новости"; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("text" , Текст); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКомментарийНовости", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьПолучателейКНовости(ПараметрыФункции) - - Видимость = "UA"; - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("vision" , Видимость); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПолучателейКНовости (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid" , IDНовости); - Опции.Вставить("vision" , Видимость); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПолучателейКНовости", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксПоля(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксПоля(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьЗадачу(ПараметрыФункции) - - // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Час = 3600; - Сутки = 24; - Исполнитель = 1; - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); - СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "2"); - СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); - СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields" , СтруктураЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - IDЗадачи = Результат["result"]["task"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookTaskID", IDЗадачи); - ПараметрыФункции.Вставить("Bitrix24_HookTaskID", IDЗадачи); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields" , СтруктураЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - IDЗадачи = Результат["result"]["task"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TaskID", IDЗадачи); - ПараметрыФункции.Вставить("Bitrix24_TaskID", IDЗадачи); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьЗадачу(ПараметрыФункции) - - // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Другой заголовок задачи"); - СтруктураЗадачи.Вставить("DESCRIPTION", "Другое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "1"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("fields" , СтруктураЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("fields" , СтруктураЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПринятьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПринятьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПринятьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтклонитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтклонитьЗадачу (хук)", "Bitrix24"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтклонитьЗадачу", "Bitrix24"); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ЗавершитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗавершитьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗавершитьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ВозобновитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВозобновитьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВозобновитьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтложитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтложитьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтложитьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_НачатьВыполнениеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НачатьВыполнениеЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НачатьВыполнениеЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НачатьНаблюдатьЗаЗадачей (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НачатьНаблюдатьЗаЗадачей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПрекратитьНаблюдатьЗаЗадачей (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПрекратитьНаблюдатьЗаЗадачей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПриостановитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПриостановитьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПриостановитьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДелегироватьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДелегироватьЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДелегироватьЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗадачуВИзбранное (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗадачуВИзбранное", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УбратьЗадачуИзИзбранного (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УбратьЗадачуИзИзбранного", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьИсториюЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИсториюЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСписок(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИсториюЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСписок(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокЗадач(ПараметрыФункции) - - // Полную структуру фильтра можно найти в функции ПолучитьСтруктуруФильтраЗадач - Фильтр = Новый Структура; - Фильтр.Вставить("CREATED_BY" , 1); - Фильтр.Вставить("RESPONSIBLE_ID", 10); - - Отступ = 1; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("filter" , Фильтр); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗадач (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокЗадач(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("offset" , Отступ); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗадач", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокЗадач(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Текст = "Пункт чек-листа"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("text" , Текст); - Опции.Вставить("complete", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЭлемента = Результат["result"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCheckElementID", IDЭлемента); - ПараметрыФункции.Вставить("Bitrix24_HookCheckElementID", IDЭлемента); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("text" , Текст); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЭлементЧеклистаЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЭлемента = Результат["result"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CheckElementID", IDЭлемента); - ПараметрыФункции.Вставить("Bitrix24_CheckElementID", IDЭлемента); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Текст = "Новый текст пункта чек-листа"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - Опции.Вставить("text" , Текст); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЭлементЧеклистаЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЭлементЧеклистаЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧеклистЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧеклистЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЭлементЧеклистаЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЭлементЧеклистаЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВозобновитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element" , IDЭлемента); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВозобновитьЭлементЧеклистаЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьФайлВЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDФайла = ПараметрыФункции["Bitrix24_TaskFileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("fileid" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьФайлВЗадачу (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксВложение(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьФайлВЗадачу", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксВложение(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПроверитьДоступКЗадаче(ПараметрыФункции) - - МассивПользователей = Новый Массив; - МассивПользователей.Добавить("1"); - МассивПользователей.Добавить("10"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("users" , МассивПользователей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьДоступКЗадаче (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксДоступныеДействия(Результат, МассивПользователей.Количество()); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("users" , МассивПользователей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьДоступКЗадаче", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксДоступныеДействия(Результат, МассивПользователей.Количество()); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтключитьЗвукЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьЗвукЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьЗвукЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ВключитьЗвукЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВключитьЗвукЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВключитьЗвукЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьЗависимостьЗадач(ПараметрыФункции) - - IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; - ТипСвязи = 0; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("taskfrom" , IDИсточника); - Опции.Вставить("taskto" , IDПриемника); - Опции.Вставить("linktype" , ТипСвязи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗависимостьЗадач (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - Результат = OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); - - IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; - IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; - ТипСвязи = 2; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("taskfrom" , IDИсточника); - Опции.Вставить("taskto" , IDПриемника); - Опции.Вставить("linktype" , ТипСвязи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗависимостьЗадач", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - Результат = OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьЗависимостьЗадач(ПараметрыФункции) - - IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; - ТипСвязи = 0; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("taskfrom" , IDИсточника); - Опции.Вставить("taskto" , IDПриемника); - Опции.Вставить("linktype" , ТипСвязи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗависимостьЗадач (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; - IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; - ТипСвязи = 2; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("taskfrom" , IDИсточника); - Опции.Вставить("taskto" , IDПриемника); - Опции.Вставить("linktype" , ТипСвязи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗависимостьЗадач", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПланЗадачНаДень (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПланЗадачНаДень", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЗадач", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗадач", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - - Текст = "Задача невыполнима, расходимся"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - Опции.Вставить("text", Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКомментарийЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDКомментария = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCommentID", IDКомментария); - ПараметрыФункции.Вставить("Bitrix24_HookCommentID", IDКомментария); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Текст = "Задача выполнима, не расходимся"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("text" , Текст); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКомментарийЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDКомментария = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentID", IDКомментария); - ПараметрыФункции.Вставить("Bitrix24_CommentID", IDКомментария); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьКомментарийЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКомментарийЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКомментарийЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьРезультатИзКомментария(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("comment", IDКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьРезультатИзКомментария (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксРезультат(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьРезультатИзКомментария", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксРезультат(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьРезультатИзКомментария(ПараметрыФункции) Экспорт - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("comment", IDКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьРезультатИзКомментария (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьРезультатИзКомментария", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокРезультатов(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРезультатов (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокРезультатов(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРезультатов", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокРезультатов(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКомментариевЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокКомментариев(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКомментариевЗадачи", "Bitrix24"); - - OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокКомментариев(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьКомменатрийЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомменатрийЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКомменатрийЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксКомментарий(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомменатрийЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКомменатрийЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксКомментарий(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - - Текст = "Задача изменена, не расходимся"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКомментарийЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Текст = "Задача изменена, расходимся"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("text" , Текст); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКомментарийЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКомментария", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруКомментария", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокХранилищ(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокХранилищ (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксХранилища(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокХранилищ", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксХранилища(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьХранилищеПриложения(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилищеПриложения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьХранилищеПриложения", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDХранилища = Результат["result"]["ID"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_StorageID", IDХранилища); - ПараметрыФункции.Вставить("Bitrix24_StorageID", IDХранилища); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыФункции) - - Наименование2 = "Картинка2.jpg"; - Наименование = "Картинка1.jpg"; - - Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные - Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные - - IDПриемника = 3; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование2); - Опции.Вставить("file" , Картинка2); - Опции.Вставить("storageid", IDПриемника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлВХранилище (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDФайла = Результат["result"]["ID"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookFileID", IDФайла); - ПараметрыФункции.Вставить("Bitrix24_HookFileID", IDФайла); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("file" , Картинка); - Опции.Вставить("storageid", IDПриемника); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлВХранилище", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDФайла = Результат["result"]["ID"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_FileID", IDФайла); - ПараметрыФункции.Вставить("Bitrix24_FileID", IDФайла); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_HookFileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьФайл (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьФайл", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьКаталогВХранилище(ПараметрыФункции) - - IDХранилища = 3; - Наименование = "Новый каталог"; - Наименование2 = "Новый каталог 2"; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - Опции.Вставить("title" , Наименование2); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКаталогВХранилище (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDКаталога = Результат["result"]["ID"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookFolderID", IDКаталога); - ПараметрыФункции.Вставить("Bitrix24_HookFolderID", IDКаталога); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКаталогВХранилище", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDКаталога = Результат["result"]["ID"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_FolderID", IDКаталога); - ПараметрыФункции.Вставить("Bitrix24_FolderID", IDКаталога); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьКаталог(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКаталог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКаталог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьХранилище(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDХранилища = 3; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid" , IDХранилища); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьХранилище (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid" , IDХранилища); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьХранилище", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDХранилища = 3; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid" , IDХранилища); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСодержимоеХранилища (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid" , IDХранилища); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСодержимоеХранилища", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПереименоватьХранилище(ПараметрыФункции) - - Наименование = "Новое имя хранилища"; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDХранилища = ПараметрыФункции["Bitrix24_StorageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid" , IDХранилища); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьХранилище", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьХранилище", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОКаталоге (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОКаталоге", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьПодкаталог(ПараметрыФункции) - - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - Наименование = "Новый подкаталог"; - Наименование2 = "Новый подкаталог 2"; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("title" , Наименование2); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодкаталог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDПодкаталога = Результат["result"]["ID"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookSubfolderID", IDПодкаталога); - ПараметрыФункции.Вставить("Bitrix24_HookSubfolderID", IDПодкаталога); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодкаталог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDПодкаталога = Результат["result"]["ID"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_SubfolderID", IDПодкаталога); - ПараметрыФункции.Вставить("Bitrix24_SubfolderID", IDПодкаталога); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СкопироватьКаталог(ПараметрыФункции) - - IDПриемника = ПараметрыФункции["Bitrix24_HookSubfolderID"]; - IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("tagetid" , IDПриемника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьКаталог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDПриемника = ПараметрыФункции["Bitrix24_SubfolderID"]; - IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("tagetid" , IDПриемника); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьКаталог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнююСсылкуКаталога (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнююСсылкуКаталога", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраКаталога (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраКаталога", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДочерниеЭлементыКаталога (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДочерниеЭлементыКаталога", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПоместитьКаталогВКорзину(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоместитьКаталогВКорзину (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоместитьКаталогВКорзину", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ВосстановитьКаталог(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьКаталог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьКаталог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПереместитьКаталог(ПараметрыФункции) - - IDПриемника = ПараметрыФункции["Bitrix24_HookfolderID"]; - IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("tagetid" , IDПриемника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьКаталог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("tagetid" , IDПриемника); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьКаталог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПереименоватьКаталог(ПараметрыФункции) - - Наименование = "Новый каталог"; - Наименование2 = "Новый каталог 2"; - - IDКаталога2 = ПараметрыФункции["Bitrix24_HookFolderID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога2); - Опции.Вставить("title" , Наименование2); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьКаталог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьКаталог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыФункции) - - Наименование2 = "Картинка2.jpg"; - Наименование = "Картинка1.jpg"; - - Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные - Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные - - IDПриемника = ПараметрыФункции["Bitrix24_FolderID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование2); - Опции.Вставить("file" , Картинка2); - Опции.Вставить("folderid" , IDПриемника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлВКаталог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDФайла = Результат["result"]["ID"]; - OPI_Bitrix24.УдалитьФайл(URL, IDФайла); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("file" , Картинка); - Опции.Вставить("folderid" , IDПриемника); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлВКаталог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDФайла = Результат["result"]["ID"]; - Результат = OPI_Bitrix24.УдалитьФайл(URL, IDФайла, Токен); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СкопироватьФайл(ПараметрыФункции) - - IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("folderid" , IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьФайл (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьФайл", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьИнформациюОФайле(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОФайле (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОФайле", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыФункции) - - OPI_Инструменты.Пауза(20); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнююСсылкуФайла (хук)", "Bitrix24"); - - // OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнююСсылкуФайла", "Bitrix24"); - - // OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПоместитьФайлВКорзину(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоместитьФайлВКорзину (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоместитьФайлВКорзину", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ВосстановитьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьФайл (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьФайл", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПереименоватьФайл(ПараметрыФункции) - - Наименование = "Новое имя файла.jpg"; - Наименование2 = "Новое имя файла 2.jpg"; - - IDФайла2 = ПараметрыФункции["Bitrix24_HookFileID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла2); - Опции.Вставить("title" , Наименование2); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьФайл (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьФайл", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПереместитьФайлВКаталог(ПараметрыФункции) - - IDКаталога = ПараметрыФункции["Bitrix24_HookSubFolderID"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("folderid" , IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьФайлВКаталог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - IDКаталога = ПараметрыФункции["Bitrix24_SubFolderID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("folderid" , IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьФайлВКаталог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - - Время = 3600; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("amount" , Время); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТрудозатратыЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЗатрат = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookTimeID", IDЗатрат); - ПараметрыФункции.Вставить("Bitrix24_HookTimeID", IDЗатрат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Текст = "Трудозатраты по обработке"; - IDПользователя = 10; - Время = 7200; - ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("amount" , Время); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("date" , ДатаУстановки); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТрудозатратыЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЗатрат = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TimeID", IDЗатрат); - ПараметрыФункции.Вставить("Bitrix24_TimeID", IDЗатрат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; - - Текст = "Забытый в прошлый раз текст"; - Время = 4800; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record" , IDЗаписи); - Опции.Вставить("amount" , Время); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТрудозатратыЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; - - Текст = "Новые трудозатраты по обработке"; - Время = 4800; - ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record" , IDЗаписи); - Опции.Вставить("amount" , Время); - Опции.Вставить("text" , Текст); - Опции.Вставить("date" , ДатаУстановки); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТрудозатратыЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record" , IDЗаписи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТрудозатратыЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record" , IDЗаписи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТрудозатратыЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record" , IDЗаписи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТрудозатратыЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record" , IDЗаписи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТрудозатратыЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТрудозатратЗадачи (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассивОбъектов(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТрудозатратЗадачи", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассивОбъектов(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_НачатьУчетВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); - - Час = 3600; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - Время = OPI_Инструменты.ПолучитьТекущуюДату() - Час; - Отчет = "Опоздание"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid" , IDПользователя); - Опции.Вставить("time" , Время); - Опции.Вставить("report" , Отчет); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ЗавершитьУчетВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - Время = OPI_Инструменты.ПолучитьТекущуюДату(); - Отчет = "Отгул"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid" , IDПользователя); - Опции.Вставить("time" , Время); - Опции.Вставить("report" , Отчет); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПриостановитьУчетВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьСтадиюКанбана(ПараметрыФункции) - - Наименование = "Новая стадия"; - Цвет = "0026FF"; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("color" , Цвет); - Опции.Вставить("prevstage", 6); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьСтадиюКанбана (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDПредыдущей = Результат["result"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookStageID", IDПредыдущей); - ПараметрыФункции.Вставить("Bitrix24_HookStageID", IDПредыдущей); - - Наименование = "Новая стадия 2"; - Цвет = "0026FF"; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("color" , Цвет); - Опции.Вставить("prevstage", IDПредыдущей); - Опции.Вставить("admin" , Истина); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьСтадиюКанбана", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСтадии = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_StageID", IDСтадии); - ПараметрыФункции.Вставить("Bitrix24_StageID", IDСтадии); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьСтадиюКанбана(ПараметрыФункции) - - IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("stage" , IDСтадии); - Опции.Вставить("admin" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСтадиюКанбана (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("stage" , IDСтадии); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСтадиюКанбана", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтадииКанбана(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("admin" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтадииКанбана (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтадииКанбана", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыФункции) - - IDЗадачи = ПараметрыФункции["Bitrix24_KanbanTaskID"]; - IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("stage", IDСтадии); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПеренестиЗадачуВСтадиюКанбана (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("stage", IDСтадии); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПеренестиЗадачуВСтадиюКанбана", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - OPI_Bitrix24.ПеренестиЗадачуВСтадиюКанбана(URL, IDЗадачи, 2, , , Токен); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьСтадиюКанбана(ПараметрыФункции) - - Наименование = "Новое имя стадии стадии"; - Цвет = "000000"; - IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title", Наименование); - Опции.Вставить("stage", IDСтадии); - Опции.Вставить("color", Цвет); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСтадиюКанбана (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - Наименование = "Новое имя стадии стадии 2"; - Цвет = "000000"; - IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("stage" , IDСтадии); - Опции.Вставить("color" , Цвет); - Опции.Вставить("prevstage", 6); - Опции.Вставить("admin" , Истина); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСтадиюКанбана", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьПерсональноеУведомление(ПараметрыФункции) - - IDПользователя = 1; - - URL = ПараметрыФункции["Bitrix24_URL"]; - Текст = "Текст сообщения"; - Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Вложения = Новый Массив; - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks", Вложения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПерсональноеУведомление (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСообщения = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_PersoalHookNotifyID", IDСообщения); - ПараметрыФункции.Вставить("Bitrix24_PersoalHookNotifyID", IDСообщения); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - Тег = "Новый"; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("tag" , Тег); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПерсональноеУведомление", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСообщения = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_PersoalNotifyID", IDСообщения); - ПараметрыФункции.Вставить("Bitrix24_PersoalNotifyID", IDСообщения); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьСистемноеУведомление(ПараметрыФункции) - - IDПользователя = 1; - - URL = ПараметрыФункции["Bitrix24_URL"]; - Текст = "Текст сообщения"; - Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Вложения = Новый Массив; - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks", Вложения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСистемноеУведомление (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСообщения = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_SystemHookNotifyID", IDСообщения); - ПараметрыФункции.Вставить("Bitrix24_SystemHookNotifyID", IDСообщения); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - Тег = "Новый"; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("tag" , Тег); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСистемноеУведомление", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСообщения = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_SystemNotifyID", IDСообщения); - ПараметрыФункции.Вставить("Bitrix24_SystemNotifyID", IDСообщения); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьУведомление(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDУведомления = ПараметрыФункции["Bitrix24_PersoalHookNotifyID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("notif" , IDУведомления); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьУведомление", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDУведомления = ПараметрыФункции["Bitrix24_PersoalNotifyID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("notif" , IDУведомления); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьУведомление (приложение)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксБулево(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Тип = "date"; - Имя = "BIRTHDAY_FIELD"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("type" , Тип); - Опции.Вставить("fieldname", Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Тип = "string"; - Имя = "TEXT_FIELD"; - ВнешнийКод = "BITRIX_TEXT_FIELD"; - Заголовок = "Поле для текста"; - Подпись = Новый Структура("en,ru", "Some field", "Некоторое поле"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("type" , Тип); - Опции.Вставить("fieldname" , Имя); - Опции.Вставить("externalid", ВнешнийКод); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("label" , Подпись); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; - Заголовок = "Новый заголовок"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid" , IDПоля); - Опции.Вставить("title" , Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользовательскоеПолеЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; - ВнешнийКод = "NEW_TEXT_FIELD"; - Подпись = Новый Структура("en,ru", "Updated field", "Измененное поле"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid" , IDПоля); - Опции.Вставить("externalid", ВнешнийКод); - Опции.Вставить("label" , Подпись); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid" , IDПоля); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid" , IDПоля); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid", IDПоля); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid", IDПоля); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьПодразделение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Наименование = "Главное подразделение"; - IDРодителя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("parentid", IDРодителя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодразделение (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDПодразделения = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookDepID", IDПодразделения); - ПараметрыФункции.Вставить("Bitrix24_HookDepID", IDПодразделения); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Наименование = "Подчиненное подразделение"; - IDРодителя = ПараметрыФункции["Bitrix24_HookDepID"]; - IDРуководителя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("parentid", IDРодителя); - Опции.Вставить("headid" , IDРуководителя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодразделение", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDПодразделения = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_DepID", IDПодразделения); - ПараметрыФункции.Вставить("Bitrix24_DepID", IDПодразделения); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьПодразделение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; - IDРодителя = 7; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid" , IDПодразделения); - Опции.Вставить("parentid", IDРодителя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПодразделение (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; - Наименование = "Новое подразделение"; - IDРодителя = 1; - IDРуководителя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid" , IDПодразделения); - Опции.Вставить("title" , Наименование); - Опции.Вставить("parentid", IDРодителя); - Опции.Вставить("headid" , IDРуководителя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПодразделение", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьПодразделение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid" , IDПодразделения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьПодразделение (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid" , IDПодразделения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьПодразделение", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьПодразделения(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid" , IDПодразделения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПодразделения (хук)", "Bitrix24"); - - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDРуководителя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headid" , IDРуководителя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПодразделения", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьЧат(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - - B64Картинка = ПолучитьBase64СтрокуИзДвоичныхДанных(Картинка); - - МассивУчастников = Новый Массив; - МассивУчастников.Добавить(10); - МассивУчастников.Добавить(1); - - СтруктураЧата = Новый Структура; - СтруктураЧата.Вставить("TYPE" , "OPEN"); - СтруктураЧата.Вставить("TITLE" , "Новый чат"); - СтруктураЧата.Вставить("DESCRIPTION", "Это новый чат"); - СтруктураЧата.Вставить("COLOR" , "GREEN"); - СтруктураЧата.Вставить("MESSAGE" , "Добро пожаловать в новый чат"); - СтруктураЧата.Вставить("USERS" , МассивУчастников); - СтруктураЧата.Вставить("OWNER_ID" , 1); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЧат (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЧата = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookChatID", IDЧата); - ПараметрыФункции.Вставить("Bitrix24_HookChatID", IDЧата); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - СтруктураЧата = Новый Структура; - СтруктураЧата.Вставить("TYPE" , "CHAT"); - СтруктураЧата.Вставить("TITLE" , "Закрытый чат"); - СтруктураЧата.Вставить("USERS" , МассивУчастников); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураЧата); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЧат", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЧата = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ChatID", IDЧата); - ПараметрыФункции.Вставить("Bitrix24_ChatID", IDЧата); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПокинутьЧат(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПокинутьЧат (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПокинутьЧат", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИсключитьПользователяИзЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИсключитьПользователяИзЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИсключитьПользователяИзЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ДобавитьПользователейВЧат(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - IDПользователя = 10; - IDПользователей = Новый Массив; - IDПользователей.Добавить(10); - IDПользователей.Добавить(12); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("users" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейВЧат (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("users" , IDПользователей); - Опции.Вставить("hide" , Истина); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейВЧат", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьЗаголовокЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Заголовок = "Новый заголовок чата"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("title" , Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗаголовокЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Заголовок = "Другой заголовок чата"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗаголовокЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьЦветЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Цвет = "AZURE"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("color" , Цвет); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЦветЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - OPI_Инструменты.Пауза(10); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Цвет = "PURPLE"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("color" , Цвет); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЦветЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьКартинкуЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Картинка = ПараметрыФункции["Picture2"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКартинкуЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("picture", Картинка); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКартинкуЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтключитьУведомленияЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьУведомленияЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьУведомленияЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ВключитьУведомленияЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВключитьУведомленияЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВключитьУведомленияЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СменитьВладельцаЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СменитьВладельцаЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СменитьВладельцаЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = "chat4"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСообщенийЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСообщения(Результат); - - IDСообщения = Результат["result"]["messages"][0]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ChatMessageID", IDСообщения); - ПараметрыФункции.Вставить("Bitrix24_ChatMessageID", IDСообщения); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("first" , 0); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСообщенийЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСообщения(Результат); - - IDСообщения = Результат["result"]["messages"][0]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_UserMessageID", IDСообщения); - ПараметрыФункции.Вставить("Bitrix24_UserMessageID", IDСообщения); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтметитьСообщениеКакПрочитанное (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксДиалог(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтметитьСообщениеКакПрочитанное", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксДиалог(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтметитьСообщениеКакНепрочитанное (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтметитьСообщениеКакНепрочитанное", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьДиалог(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДиалог (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСообщение(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДиалог", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейДиалога (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейДиалога", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьУведомлениеОВводе (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьУведомлениеОВводе", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПрочитатьВсе(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПрочитатьВсе (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПрочитатьВсе", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтправитьСообщение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; - Текст = "Текст сообщения"; - Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Вложения = Новый Массив; - - Опции = Новый Структура; - Опции.Вставить("title" , "Картинка1"); - Опции.Вставить("url" , Картинка); - - Вложение1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокКартинки", Опции); - - Опции = Новый Структура; - Опции.Вставить("title" , "Файл1.docx"); - Опции.Вставить("url" , Файл); - - Вложение2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокФайла", Опции); - - Вложения.Добавить(Вложение1); - Вложения.Добавить(Вложение2); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСообщения = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ChatMessageID", IDСообщения); - ПараметрыФункции.Вставить("Bitrix24_ChatMessageID", IDСообщения); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks" , Вложения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСообщения = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_UserMessageID", IDСообщения); - ПараметрыФункции.Вставить("Bitrix24_UserMessageID", IDСообщения); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьСообщение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Текст = "Новый текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСообщение (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Вложения = Новый Массив; - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks" , Вложения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСообщение", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьСообщение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьРеакциюНаСообщение (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьРеакциюНаСообщение", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКаталогФайловЧата (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКаталогФайловЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ОтправитьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - Файл = ПараметрыФункции["Document"]; // Двоичные данные, URL или путь к файлу - Описание = "Очень важный файл"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - - Каталог = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); - IDКаталога = Каталог["result"]["ID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , "Важный документ.docx"); - Опции.Вставить("file" , Файл); - Опции.Вставить("folderid", IDКаталога); - - ЗагруженныйФайл = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); - IDФайла = ЗагруженныйФайл["result"]["ID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксФайлСообщение(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Каталог = OPI_Bitrix24.ПолучитьКаталогФайловЧата(URL, IDЧата, Токен); - IDКаталога = Каталог["result"]["ID"]; - - ЗагруженныйФайл = OPI_Bitrix24.ЗагрузитьФайлВКаталог(URL, "Важный документ.docx", Файл, IDКаталога, Токен); - IDФайла = ЗагруженныйФайл["result"]["ID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("description", Описание); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксФайлСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьПользователей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - IDПользователя = 10; - МассивПользователей = Новый Массив; - - МассивПользователей.Добавить(1); - МассивПользователей.Добавить(10); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("users" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователей (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("users" , МассивПользователей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтатусПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусПользователя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УстановитьСтатусПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - Статус = "dnd"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("status" , Статус); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСтатусПользователя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - Статус = "away"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("status" , Статус); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСтатусПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьБлокКартинки(ПараметрыФункции) - - Наименование = "Картинка"; - URL = ПараметрыФункции["Picture"]; - - Опции = Новый Структура; - Опции.Вставить("title", Наименование); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокКартинки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьБлокКартинки", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьБлокФайла(ПараметрыФункции) - - Наименование = "Картинка"; - URL = ПараметрыФункции["Document"]; - - Опции = Новый Структура; - Опции.Вставить("title", Наименование); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокФайла", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьБлокФайла", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруЧата(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЧата", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЧата", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьТекущегоПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТекущегоПользователя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТекущегоПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтурктуруПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтурктуруПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтурктуруПользователя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтурктуруПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтурктуруПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - Почта = Строка(Новый УникальныйИдентификатор) + "@exepmple.org"; - // Полную структуру можно получить функцией ПолучитьСтурктуруПользователя - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("EMAIL" , Почта); - СтруктураПользователя.Вставить("UF_DEPARTMENT", 7); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПользователя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDПользователя = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookUserID", IDПользователя); - ПараметрыФункции.Вставить("Bitrix24_HookUserID", IDПользователя); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - Почта = Строка(Новый УникальныйИдентификатор) + "@exepmple.org"; - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("EMAIL" , Почта); - СтруктураПользователя.Вставить("NAME" , "Виталий"); - СтруктураПользователя.Вставить("LAST_NAME" , "Альпака"); - СтруктураПользователя.Вставить("PERSONAL_MOBILE", "88003553535"); - СтруктураПользователя.Вставить("UF_DEPARTMENT" , 1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDПользователя = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_UserID", IDПользователя); - ПараметрыФункции.Вставить("Bitrix24_UserID", IDПользователя); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; - Почта = Строка(Новый УникальныйИдентификатор) + "@exepmple.org"; - - // Полную структуру можно получить функцией ПолучитьСтурктуруПользователя - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("EMAIL" , Почта); - СтруктураПользователя.Вставить("UF_DEPARTMENT", 1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("fields", СтруктураПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПользователя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; - Почта = Строка(Новый УникальныйИдентификатор) + "@exepmple.org"; - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("EMAIL" , Почта); - СтруктураПользователя.Вставить("NAME" , "Олег"); - СтруктураПользователя.Вставить("LAST_NAME" , "Лама"); - СтруктураПользователя.Вставить("UF_DEPARTMENT" , 7); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("fields", СтруктураПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьСтатусПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("fire" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСтатусПользователя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("fire" , Истина); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСтатусПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователя (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_НайтиПользователей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - СтруктураФильтра = Новый Структура; - СтруктураФильтра.Вставить("NAME" , "Виталий"); - СтруктураФильтра.Вставить("LAST_NAME" , "Альпака"); - СтруктураФильтра.Вставить("WORK_POSITION" , "DevOps инженер"); - СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Отдел маркетинга"); - СтруктураФильтра.Вставить("USER_TYPE" , "employee"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("filter", СтруктураФильтра); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НайтиПользователей (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - СтруктураФильтра = Новый Структура; - СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Битрикс"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("filter", СтруктураФильтра); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НайтиПользователей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыТеста) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраПользователей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЛидов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЛидов", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруЛида(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЛида (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЛид(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЛида", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЛид(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьЛид(ПараметрыФункции) - - МассивПочт = Новый Массив; - МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "yo@example.com", "HOME")); - МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "hi@example.com", "WORK")); - - МассивНомеров = Новый Массив; - МассивНомеров.Добавить(Новый Структура("VALUE,VALUE_TYPE", "88005553535", "WORK")); - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ADDRESS" , "ул. Пушкина, д. 10"); - СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Россия"); - СтруктураПолей.Вставить("EMAIL" , МассивПочт); - СтруктураПолей.Вставить("NAME" , "Петр"); - СтруктураПолей.Вставить("LAST_NAME" , "Петров"); - СтруктураПолей.Вставить("PHONE" , МассивНомеров); - СтруктураПолей.Вставить("TITLE" , "Мегаклиент"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЛид (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЛида = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookLeadID", IDЛида); - ПараметрыФункции.Вставить("Bitrix24_HookLeadID", IDЛида); - - СтруктураПолей.Вставить("NAME" , "Иван"); - СтруктураПолей.Вставить("LAST_NAME" , "Иванов"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПолей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЛид", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЛида = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_LeadID", IDЛида); - ПараметрыФункции.Вставить("Bitrix24_LeadID", IDЛида); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьЛид(ПараметрыФункции) - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ADDRESS" , "ул. Лермонтова, д. 20"); - СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Беларусь"); - СтруктураПолей.Вставить("TITLE" , "Суперклиент"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - Опции.Вставить("fields", СтруктураПолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЛид (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - СтруктураПолей.Вставить("NAME" , "Евгений"); - СтруктураПолей.Вставить("LAST_NAME" , "Евгеньев"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - Опции.Вставить("fields", СтруктураПолей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЛид", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьЛид(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЛид (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЛид", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьЛид(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЛид (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЛид(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЛид", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЛид(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокЛидов(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЛидов (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Фильтр = Новый Структура; - Фильтр.Вставить("TITLE" , "Мегаклиент"); - Фильтр.Вставить("HAS_EMAIL", "Y"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЛидов", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСделок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраСделок", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруСделки(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСделки (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСделка(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСделки", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСделка(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьСделку(ПараметрыФункции) - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("TITLE" , "Плановая продажа"); - СтруктураПолей.Вставить("TYPE_ID" , "GOODS"); - СтруктураПолей.Вставить("STAGE_ID" , "NEW"); - СтруктураПолей.Вставить("COMPANY_ID" , 1); - СтруктураПолей.Вставить("CONTACT_ID" , 3); - СтруктураПолей.Вставить("OPENED" , "Y"); - СтруктураПолей.Вставить("ASSIGNED_BY_ID", 1); - СтруктураПолей.Вставить("PROBABILITY" , 30); - СтруктураПолей.Вставить("CURRENCY_ID" , "USD"); - СтруктураПолей.Вставить("OPPORTUNITY" , 5000); - СтруктураПолей.Вставить("CATEGORY_ID" , 5); - СтруктураПолей.Вставить("BEGINDATE" , "2024-01-01"); - СтруктураПолей.Вставить("CLOSEDATE" , "2030-01-01"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСделку (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЛида = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookDealID", IDЛида); - ПараметрыФункции.Вставить("Bitrix24_HookDealID", IDЛида); - - СтруктураПолей.Вставить("TITLE" , "Другая сделка"); - СтруктураПолей.Вставить("CLOSEDATE", "2031-01-01"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПолей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСделку", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDЛида = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_DealID", IDЛида); - ПараметрыФункции.Вставить("Bitrix24_DealID", IDЛида); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьСделку(ПараметрыФункции) - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("TITLE" , "Продажа в RUB"); - СтруктураПолей.Вставить("CURRENCY_ID" , "RUB"); - СтруктураПолей.Вставить("OPPORTUNITY" , 50000); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - Опции.Вставить("fields", СтруктураПолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСделку (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - СтруктураПолей.Вставить("TITLE" , "Будущая сделка в RUB"); - СтруктураПолей.Вставить("BEGINDATE", "2025-01-01"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСделки = ПараметрыФункции["Bitrix24_DealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - Опции.Вставить("fields", СтруктураПолей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСделку", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСделку(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСделку (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСделка(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСделку", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСделка(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьСделку(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСделку (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСделки = ПараметрыФункции["Bitrix24_DealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСделку", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокСделок(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСделок (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Фильтр = Новый Структура; - Фильтр.Вставить("TITLE" , "Продажа в RUB"); - Фильтр.Вставить("CURRENCY_ID", "RUB"); - - Опции.Вставить("url" , URL); - Опции.Вставить("filter", Фильтр); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСделок", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьКалендарь(ПараметрыФункции) - - IDПользователя = 1; - - СтруктураКалендаря = Новый Структура; - СтруктураКалендаря.Вставить("type" , "user"); - СтруктураКалендаря.Вставить("ownerId" , IDПользователя); - СтруктураКалендаря.Вставить("name" , "Новый календарь"); - СтруктураКалендаря.Вставить("description", "Мой новый календарь"); - СтруктураКалендаря.Вставить("color" , "#FFFFFF"); - СтруктураКалендаря.Вставить("text_color" , "#000000"); - - СтруктураЭкспорта = Новый Структура; - СтруктураЭкспорта.Вставить("ALLOW", "Истина"); - СтруктураЭкспорта.Вставить("SET" , "all"); - - СтруктураКалендаря.Вставить("export", СтруктураЭкспорта); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураКалендаря); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКалендарь (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); // SKIP - - IDКалендаря = Результат["result"]; // SKIP - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCalendarID", IDКалендаря); // SKIP - ПараметрыФункции.Вставить("Bitrix24_HookCalendarID", IDКалендаря); // SKIP - - СтруктураКалендаря.Вставить("name" , "Другой календарь"); - СтруктураКалендаря.Вставить("description", "Мой другой новый календарь"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураКалендаря); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКалендарь", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDКалендаря = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CalendarID", IDКалендаря); - ПараметрыФункции.Вставить("Bitrix24_CalendarID", IDКалендаря); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьКалендарь(ПараметрыФункции) - - IDПользователя = 1; - - СтруктураКалендаря = Новый Структура; - СтруктураКалендаря.Вставить("type" , "user"); - СтруктураКалендаря.Вставить("ownerId" , IDПользователя); - СтруктураКалендаря.Вставить("name" , "Новое имя календаря"); - СтруктураКалендаря.Вставить("description", "Этот календарь был изменен"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("calendar", IDКалендаря); - Опции.Вставить("fields" , СтруктураКалендаря); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКалендарь (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("calendar", IDКалендаря); - Опции.Вставить("fields" , СтруктураКалендаря); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКалендарь", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьКалендарь(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; - IDВладельца = 1; - Тип = "user"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("calendar", IDКалендаря); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСделку (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("calendar", IDКалендаря); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКалендарь", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции.Вставить("empty" , Истина); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруКалендаря (пустая)", "Bitrix24"); - - Для Каждого Элемент Из Результат Цикл - - Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСписокКалендарей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDВладельца = 1; - Тип = "user"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКалендарей (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКалендарей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекКалендаря (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКаледнаря(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКаледнаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПользовательскихНастроекКаледнаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции.Вставить("empty" , Истина); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКаледнаря", Опции); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПользовательскихНастроекКаледнаря (пустая)", "Bitrix24"); - - Для Каждого Элемент Из Результат Цикл - - Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользовательскиеНастройкиКалендаря (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользовательскиеНастройкиКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) - - СтруктураКалендаря = Новый Структура; - СтруктураКалендаря.Вставить("view" , "month"); - СтруктураКалендаря.Вставить("showDeclined" , "Y"); - СтруктураКалендаря.Вставить("collapseOffHours" , "N"); - СтруктураКалендаря.Вставить("showCompletedTasks", "N"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("settings", СтруктураКалендаря); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьПользовательскиеНастройкиКалендаря (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("settings", СтруктураКалендаря); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьПользовательскиеНастройкиКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; - - Пользователь = 1; - - Неделя = 604800; - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - ДатаНачала = ТекущаяДата; - ДатаОкончания = ТекущаяДата + Неделя; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("users", Пользователь); - Опции.Вставить("from" , ДатаНачала); - Опции.Вставить("to" , ДатаОкончания); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗанятостьПользователей (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("users", Пользователь); - Опции.Вставить("from" , ДатаНачала); - Опции.Вставить("to" , ДатаОкончания); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗанятостьПользователей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_СоздатьСобытиеКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; - - Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; - Час = 3600; - - СтруктураСобытия = Новый Структура; - - СтруктураСобытия.Вставить("type" , "user"); - СтруктураСобытия.Вставить("ownerId" , 1); - СтруктураСобытия.Вставить("from" , XMLСтрока(Завтра)); - СтруктураСобытия.Вставить("to" , XMLСтрока(Завтра + Час)); - СтруктураСобытия.Вставить("section" , IDКалендаря); - СтруктураСобытия.Вставить("name" , "Новое событие"); - СтруктураСобытия.Вставить("skip_time" , "N"); - СтруктураСобытия.Вставить("timezone_from", "Europe/Minsk"); - СтруктураСобытия.Вставить("timezone_to" , "Europe/Minsk"); - СтруктураСобытия.Вставить("description" , "Описание события"); - СтруктураСобытия.Вставить("color" , "%23000000>"); - СтруктураСобытия.Вставить("text_color" , "%23FFFFFF"); - СтруктураСобытия.Вставить("accessibility", "busy"); - СтруктураСобытия.Вставить("importance" , "high"); - СтруктураСобытия.Вставить("private_event", "N"); - - СтруктураПовторяемости = Новый Структура; - СтруктураПовторяемости.Вставить("FREQ" , "DAILY"); - СтруктураПовторяемости.Вставить("COUNT" , 3); - СтруктураПовторяемости.Вставить("INTERVAL", 10); - - МассивДней = Новый Массив; - МассивДней.Добавить("SA"); - МассивДней.Добавить("MO"); - - СтруктураПовторяемости.Вставить("BYDAY" , МассивДней); - СтруктураПовторяемости.Вставить("UNTIL" , XMLСтрока(Завтра + Час * 24 * 10)); - - СтруктураСобытия.Вставить("rrule" , СтруктураПовторяемости); - СтруктураСобытия.Вставить("is_meeting", "Y"); - СтруктураСобытия.Вставить("location" , "Офис"); - - МассивНапоминаний = Новый Массив; - - СтруктураНапоминания = Новый Структура; - СтруктураНапоминания.Вставить("type" , "day"); - СтруктураНапоминания.Вставить("count", 1); - - МассивНапоминаний.Добавить(СтруктураНапоминания); - - СтруктураСобытия.Вставить("remind" , МассивНапоминаний); - СтруктураСобытия.Вставить("attendees", СтрРазделить("1,10", ",")); - СтруктураСобытия.Вставить("host" , 1); - - СтруктураВстречи = Новый Структура; - СтруктураВстречи.Вставить("notify" , "Y"); - СтруктураВстречи.Вставить("reinvite" , "Y"); - СтруктураВстречи.Вставить("allow_invite", "N"); - СтруктураВстречи.Вставить("hide_guests" , "N"); - - СтруктураСобытия.Вставить("meeting", СтруктураВстречи); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); // SKIP - - IDСобытия = Результат["result"]; // SKIP - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCEventID", IDСобытия); // SKIP - ПараметрыФункции.Вставить("Bitrix24_HookCEventID", IDСобытия); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - СтруктураСобытия.Вставить("section", IDКалендаря); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураСобытия); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСобытиеКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСобытия = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CEventID", IDСобытия); - ПараметрыФункции.Вставить("Bitrix24_CEventID", IDСобытия); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УдалитьСобытиеКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСобытиеКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытиеКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСобытияКалендарей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDВладельца = 1; - Тип = "user"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытияКалендарей (хук)", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - IDКалендаря1 = ПараметрыФункции["Bitrix24_HookCalendarID"]; - IDКалендаря2 = ПараметрыФункции["Bitrix24_CalendarID"]; - - Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; - Послезавтра = Завтра + 86400; - - МассивКалендарей = Новый Массив; - МассивКалендарей.Добавить(IDКалендаря1); - МассивКалендарей.Добавить(IDКалендаря2); - - Фильтр = Новый Структура; - Фильтр.Вставить("from" , Завтра); - Фильтр.Вставить("to" , Послезавтра); - Фильтр.Вставить("section", МассивКалендарей); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - Опции.Вставить("filter", Фильтр); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытияКалендарей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - - СтруктураСобытия = Новый Структура; - - СтруктураСобытия.Вставить("ownerId" , 1); - СтруктураСобытия.Вставить("type" , "user"); - СтруктураСобытия.Вставить("name" , "Измененное событие"); - СтруктураСобытия.Вставить("description" , "Новое описание события"); - СтруктураСобытия.Вставить("importance" , "low"); - СтруктураСобытия.Вставить("private_event", "Y"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("fields", СтруктураСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); // SKIP - - IDСобытия = Результат["result"]; // SKIP - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCEventID", IDСобытия); // SKIP - ПараметрыФункции.Вставить("Bitrix24_HookCEventID", IDСобытия); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("fields", СтруктураСобытия); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСобытиеКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); - - IDСобытия = Результат["result"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CEventID", IDСобытия); - ПараметрыФункции.Вставить("Bitrix24_CEventID", IDСобытия); - -КонецПроцедуры - -Процедура CLI_Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - Статус = "Y"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("status", Статус); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСтатусУчастияПользователя (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("status", Статус); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСтатусУчастияПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусУчастияПользователя (хук)", "Bitrix24"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусУчастияПользователя", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСобытияКалендаря", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСобытияКалендаря (пустая)", "Bitrix24"); - - Для Каждого Элемент Из Результат Цикл - - Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраСобытийКалендарей", "Bitrix24"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраСобытийКалендарей (пустая)", "Bitrix24"); - - Для Каждого Элемент Из Результат Цикл - - Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область CDEK - -Процедура CLI_CDEK_ПолучитьТокен(ПараметрыФункции) - - Аккаунт = ПараметрыФункции["CDEK_Account"]; - Пароль = ПараметрыФункции["CDEK_Password"]; - - Опции = Новый Структура; - Опции.Вставить("account", Аккаунт); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьТокен", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкТокен(Результат); - - Токен = Результат["access_token"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_Token", Токен); - OPI_Инструменты.ДобавитьПоле("CDEK_Token", Токен, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьОписаниеЗаказа(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаказа", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеЗаказа", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_СоздатьЗаказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - - ОписаниеЗаказа = Новый Структура; - - ЛокацияОтправления = Новый Структура; - ЛокацияОтправления.Вставить("code" , "44"); - ЛокацияОтправления.Вставить("city" , "Москва"); - ЛокацияОтправления.Вставить("address", "пр. Ленинградский, д.4"); - - ЛокацияНазначения = Новый Структура; - ЛокацияНазначения.Вставить("code" , "270"); - ЛокацияНазначения.Вставить("city" , "Новосибирск"); - ЛокацияНазначения.Вставить("address", "ул. Блюхера, 32"); - - Получатель = Новый Структура; - - Телефоны = Новый Массив; - Телефоны.Добавить(Новый Структура("number", "+79134637228")); - - Получатель.Вставить("phones", Телефоны); - Получатель.Вставить("name" , "Иванов Иван"); - - Отправитель = Новый Структура("name", "Петров Петр"); - - Услуги = Новый Массив; - - Услуга = Новый Структура; - Услуга.Вставить("code" , "SECURE_PACKAGE_A2"); - Услуга.Вставить("parameter", 10); - - Услуги.Добавить(Услуга); - - Пакеты = Новый Массив; - - Пакет = Новый Структура; - - Позиции = Новый Массив; - - Позиция = Новый Структура; - - Оплата = Новый Структура; - Оплата.Вставить("value", 3000); - - Позиция.Вставить("payment" , Оплата); - Позиция.Вставить("ware_key", "00055"); - Позиция.Вставить("name" , "Товар"); - Позиция.Вставить("cost" , 300); - Позиция.Вставить("amount" , 2); - Позиция.Вставить("weight" , 700); - Позиция.Вставить("url" , "www.item.ru"); - - Позиции.Добавить(Позиция); - - Пакет.Вставить("items" , Позиции); - Пакет.Вставить("number" , "bar-001"); - Пакет.Вставить("comment", "Упаковка"); - Пакет.Вставить("height" , 10); - Пакет.Вставить("length" , 10); - Пакет.Вставить("weight" , "4000"); - Пакет.Вставить("width" , 10); - - Пакеты.Добавить(Пакет); - - ОписаниеЗаказа.Вставить("from_location", ЛокацияОтправления); - ОписаниеЗаказа.Вставить("to_location" , ЛокацияНазначения); - ОписаниеЗаказа.Вставить("packages" , Пакеты); - ОписаниеЗаказа.Вставить("recipient" , Получатель); - ОписаниеЗаказа.Вставить("sender" , Отправитель); - ОписаниеЗаказа.Вставить("services" , Услуги); - - ОписаниеЗаказа.Вставить("number" , Строка(Новый УникальныйИдентификатор)); - ОписаниеЗаказа.Вставить("comment" , "Новый заказ"); - ОписаниеЗаказа.Вставить("tariff_code", 139); - - ОписаниеЗаказа.Вставить("delivery_recipient_cost" , Новый Структура("value" , 50)); - ОписаниеЗаказа.Вставить("delivery_recipient_cost_adv", Новый Структура("sum,threshold", 3000, 200)); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("order" , ОписаниеЗаказа); - Опции.Вставить("ostore" , Истина); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаказ", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗаказ", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - - UUID = Результат["entity"]["uuid"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_OrderUUID", UUID); - OPI_Инструменты.ДобавитьПоле("CDEK_OrderUUID", UUID, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьЗаказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказ", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаказ", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкДанныеЗаказа(Результат); - - ВнутреннийНомер = Результат["entity"]["number"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_OrderIMN", ВнутреннийНомер); - OPI_Инструменты.ДобавитьПоле("CDEK_OrderIMN", ВнутреннийНомер, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьЗаказПоНомеру(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - - НомерЗаказа = ПараметрыФункции["CDEK_OrderIMN"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("number" , НомерЗаказа); - Опции.Вставить("internal", Истина); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказПоНомеру", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаказПоНомеру", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкДанныеЗаказа(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ИзменитьЗаказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - ОписаниеЗаказа = Новый Структура("comment", "Новый комментарий"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("order" , ОписаниеЗаказа); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ИзменитьЗаказ", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗаказ", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_УдалитьЗаказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаказ", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаказ", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ОформитьКлиентскийВозврат(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - Тариф = 139; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("tariff" , Тариф); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ОформитьКлиентскийВозврат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОформитьКлиентскийВозврат", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_СоздатьОтказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьОтказ", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьОтказ", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаявкиКурьера", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеЗаявкиКурьера", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - ОписаниеЗаявки = Новый Структура; - ОписаниеЗаявки.Вставить("intake_date" , Формат(ТекущаяДата + 60 * 60 * 24, "ДФ=yyyy-MM-dd")); - ОписаниеЗаявки.Вставить("intake_time_from", "10:00"); - ОписаниеЗаявки.Вставить("intake_time_to" , "17:00"); - ОписаниеЗаявки.Вставить("name" , "Консолидированный груз"); - ОписаниеЗаявки.Вставить("weight" , 1000); - ОписаниеЗаявки.Вставить("length" , 10); - ОписаниеЗаявки.Вставить("width" , 10); - ОписаниеЗаявки.Вставить("height" , 10); - ОписаниеЗаявки.Вставить("comment" , "Комментарий курьеру"); - ОписаниеЗаявки.Вставить("need_call" , Ложь); - - Отправитель = Новый Структура; - Отправитель.Вставить("company", "Компания"); - Отправитель.Вставить("name" , "Иванов Иван"); - - Телефоны = Новый Массив; - Телефон = Новый Структура("number", "+79589441654"); - Телефоны.Добавить(Телефон); - - Отправитель.Вставить("phones", Телефоны); - - ОписаниеЗаявки.Вставить("sender", Отправитель); - - ТочкаОтправления = Новый Структура; - ТочкаОтправления.Вставить("code" , "44"); - ТочкаОтправления.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); - ТочкаОтправления.Вставить("postal_code" , "109004"); - ТочкаОтправления.Вставить("longitude" , 37.6204); - ТочкаОтправления.Вставить("latitude" , 55.754); - ТочкаОтправления.Вставить("country_code", "RU"); - ТочкаОтправления.Вставить("region" , "Москва"); - ТочкаОтправления.Вставить("sub_region" , "Москва"); - ТочкаОтправления.Вставить("city" , "Москва"); - ТочкаОтправления.Вставить("kladr_code" , "7700000000000"); - ТочкаОтправления.Вставить("address" , "ул. Блюхера, 32"); - - ОписаниеЗаявки.Вставить("from_location", ТочкаОтправления); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("intake" , ОписаниеЗаявки); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаявкуНаВызовКурьера", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗаявкуНаВызовКурьера", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - - UUID = Результат["entity"]["uuid"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_IntakeUUID", UUID); - OPI_Инструменты.ДобавитьПоле("CDEK_IntakeUUID", UUID, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_IntakeUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаявкуНаВызовКурьера", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаявкуНаВызовКурьера", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_IntakeUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаявкуНаВызовКурьера", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаявкуНаВызовКурьера", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_СформироватьКвитанцию(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - Тип = "tpl_russia"; - Копий = 1; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuids" , UUID); - Опции.Вставить("type" , Тип); - Опции.Вставить("count" , Копий); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьКвитанцию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьКвитанцию", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - - UUID = Результат["entity"]["uuid"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_PrintUUID", UUID); - OPI_Инструменты.ДобавитьПоле("CDEK_PrintUUID", UUID, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьКвитанцию(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_PrintUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьКвитанцию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКвитанцию", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкКвитанция(Результат); - - ИВФ = ПолучитьИмяВременногоФайла("pdf"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("getfile", Истина); - Опции.Вставить("testapi", Истина); - Опции.Вставить("out" , ИВФ); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьКвитанцию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКвитанцию (файл)"); - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 50000); - УдалитьФайлы(ИВФ); - -КонецПроцедуры - -Процедура CLI_CDEK_СформироватьШтрихкод(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - Формат = "A5"; - Копий = 1; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuids" , UUID); - Опции.Вставить("count" , Копий); - Опции.Вставить("format" , Формат); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьШтрихкод", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьШтрихкод", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - - UUID = Результат["entity"]["uuid"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_BarcodeUUID", UUID); - OPI_Инструменты.ДобавитьПоле("CDEK_BarcodeUUID", UUID, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьШтрихкод(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_BarcodeUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьШтрихкод", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШтрихкод", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкКвитанция(Результат); - - ИВФ = ПолучитьИмяВременногоФайла("pdf"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("getfile", Истина); - Опции.Вставить("testapi", Истина); - Опции.Вставить("out" , ИВФ); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьШтрихкод", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШтрихкод (файл)"); - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 0); - УдалитьФайлы(ИВФ); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоступныеИнтервалыДоставки", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДоступныеИнтервалыДоставки", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкИнтервалыДоставки(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьОписаниеДоговоренности(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеДоговоренности", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеДоговоренности (Пустая)", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - Заказ = ПараметрыФункции["CDEK_OrderUUID"]; - - Сутки = 60 * 60 * 24; - ТекущаяДата = НачалоДня(OPI_Инструменты.ПолучитьТекущуюДату()); - ДатаДоставки = ТекущаяДата + Сутки * 14; - - Пока ДеньНедели(ДатаДоставки) > 5 Цикл - ДатаДоставки = ДатаДоставки + Сутки; - КонецЦикла; - - Договоренность = Новый Структура; - - Договоренность.Вставить("cdek_number", "1106207236"); - Договоренность.Вставить("order_uuid" , Заказ); - Договоренность.Вставить("date" , Формат(ДатаДоставки, "ДФ=yyyy-MM-dd")); - Договоренность.Вставить("time_from" , "10:00"); - Договоренность.Вставить("time_to" , "17:00"); - Договоренность.Вставить("comment" , "Офис группы компаний"); - - МестоДоставки = Новый Структура; - МестоДоставки.Вставить("code" , "270"); - МестоДоставки.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); - МестоДоставки.Вставить("postal_code" , "109004"); - МестоДоставки.Вставить("longitude" , 37.6204); - МестоДоставки.Вставить("latitude" , 55.754); - МестоДоставки.Вставить("country_code", "RU"); - МестоДоставки.Вставить("region" , "Новосибирск"); - МестоДоставки.Вставить("sub_region" , "Новосибирск"); - МестоДоставки.Вставить("city" , "Новосибирск"); - МестоДоставки.Вставить("kladr_code" , "7700000000000"); - МестоДоставки.Вставить("address" , "ул. Блюхера, 33"); - - Договоренность.Вставить("to_location", МестоДоставки); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("appt" , Договоренность); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ЗафиксироватьДоговоренностьОДоставке", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗафиксироватьДоговоренностьОДоставке", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - - UUID = Результат["entity"]["uuid"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_ApptUUID", UUID); - OPI_Инструменты.ДобавитьПоле("CDEK_ApptUUID", UUID, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_ApptUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоговоренностьОДоставке", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДоговоренностьОДоставке", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_СоздатьПреалерт(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - ПВЗ = "NSK27"; - ДатаПередачи = OPI_Инструменты.ПолучитьТекущуюДату() + 60 * 60 * 24; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuids" , UUID); - Опции.Вставить("date" , ДатаПередачи); - Опции.Вставить("point" , ПВЗ); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьПреалерт", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПреалерт", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - - UUID = Результат["entity"]["uuid"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_PrealertUUID", UUID); - OPI_Инструменты.ДобавитьПоле("CDEK_PrealertUUID", UUID, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьПреалерт(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_PrealertUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПреалерт", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПреалерт", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСтатусПаспортныхДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусПаспортныхДанных", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_СдэкПаспорт(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьЧекЗаказа(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекЗаказа", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧекЗаказа", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьЧекиНаДату(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("date" , ДатаПолучения); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекиНаДату", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧекиНаДату", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("date" , ДатаПолучения); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьРеестрыПлатежейНаДату", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьРеестрыПлатежейНаДату", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("date" , ДатаПолучения); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПереводыПлатежейНаДату", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПереводыПлатежейНаДату", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеФильтраОфисов", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеФильтраОфисов (Пустая)", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьСписокОфисов(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - Фильтр = Новый Структура; - Фильтр.Вставить("weight_max" , 50); - Фильтр.Вставить("city_code" , 270); - Фильтр.Вставить("allowed_cod", Истина); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("filter" , Фильтр); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокОфисов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОфисов", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - -КонецПроцедуры - -Процедура CLI_CDEK_ПолучитьСписокРегионов(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокРегионов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРегионов", "CDEK"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область YandexMetrika - -Процедура CLI_YandexMetrika_ПолучитьСписокМеток(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокМеток", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокМеток", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаМетки(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_СоздатьМетку(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - Наименование = "Новая метка"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("title", Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьМетку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьМетку", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаМетка(Результат, Наименование); - - IDМетки = Результат["label"]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Metrika_LabelID", IDМетки); - OPI_Инструменты.ДобавитьПоле("Metrika_LabelID", IDМетки, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_УдалитьМетку(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDМетки = ПараметрыФункции["Metrika_LabelID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("label", IDМетки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьМетку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМетку", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаУспех(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_ИзменитьМетку(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDМетки = ПараметрыФункции["Metrika_LabelID"]; - Наименование = "Новое имя метки"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("label", IDМетки); - Опции.Вставить("title", Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьМетку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьМетку", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаМетка(Результат, Наименование); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_ПолучитьМетку(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDМетки = ПараметрыФункции["Metrika_LabelID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("label", IDМетки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьМетку", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьМетку", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаМетка(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСтруктуруСчетчика", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСчетчика", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_СоздатьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - - СтруктураСчетчика = Новый Структура; - СтруктураСчетчика.Вставить("autogoals_enabled", Истина); - - СтруктураНастроекКода = Новый Структура; - СтруктураНастроекКода.Вставить("async" , 0); - СтруктураНастроекКода.Вставить("clickmap" , 1); - СтруктураНастроекКода.Вставить("ecommerce" , 1); - СтруктураНастроекКода.Вставить("in_one_line" , 0); - СтруктураНастроекКода.Вставить("track_hash" , 1); - СтруктураНастроекКода.Вставить("visor" , 1); - СтруктураНастроекКода.Вставить("xml_site" , 0); - СтруктураНастроекКода.Вставить("ytm" , 0); - СтруктураНастроекКода.Вставить("alternative_cdn", 1); - - СтруктураИнформера = Новый Структура; - СтруктураИнформера.Вставить("color_arrow", 1); - СтруктураИнформера.Вставить("color_end" , "EFEFEFFE"); - СтруктураИнформера.Вставить("color_start", "EEEEEEEE"); - СтруктураИнформера.Вставить("color_text" , 0); - СтруктураИнформера.Вставить("enabled" , 1); - СтруктураИнформера.Вставить("indicator" , "uniques"); - СтруктураИнформера.Вставить("size" , 2); - СтруктураИнформера.Вставить("type" , "ext"); - - СтруктураНастроекКода.Вставить("informer", СтруктураИнформера); - - СтруктураСчетчика.Вставить("code_options", СтруктураНастроекКода); - - СтруктураФлагов = Новый Структура; - СтруктураФлагов.Вставить("collect_first_party_data" , Истина); - СтруктураФлагов.Вставить("measurement_enabled" , Истина); - СтруктураФлагов.Вставить("use_in_benchmarks" , Истина); - СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Истина); - - СтруктураСчетчика.Вставить("counter_flags" , СтруктураФлагов); - СтруктураСчетчика.Вставить("favorite" , 1); - СтруктураСчетчика.Вставить("filter_robots" , 2); - СтруктураСчетчика.Вставить("gdpr_agreement_accepted", 1); - - СтруктураДомена = Новый Структура("site", "openintegrations.dev"); - - СтруктураСчетчика.Вставить("site2", СтруктураДомена); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fields", СтруктураСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьСчетчик", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСчетчик", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчик(Результат); - - IDСчетчика = Результат["counter"]["id"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Metrika_CounterID", IDСчетчика); - OPI_Инструменты.ДобавитьПоле("Metrika_CounterID", IDСчетчика, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_УдалитьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьСчетчик", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСчетчик", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаУспех(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_ИзменитьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - СтруктураСчетчика = Новый Структура; - СтруктураСчетчика.Вставить("autogoals_enabled", Истина); - - СтруктураФлагов = Новый Структура; - СтруктураФлагов.Вставить("collect_first_party_data" , Ложь); - СтруктураФлагов.Вставить("measurement_enabled" , Ложь); - СтруктураФлагов.Вставить("use_in_benchmarks" , Ложь); - СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Ложь); - - СтруктураСчетчика.Вставить("counter_flags" , СтруктураФлагов); - СтруктураСчетчика.Вставить("favorite" , 0); - СтруктураСчетчика.Вставить("filter_robots" , 1); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - Опции.Вставить("fields" , СтруктураСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьСчетчик", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСчетчик", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчик(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_ПолучитьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСчетчик", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСчетчик", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчик(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_ВосстановитьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ВосстановитьСчетчик", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьСчетчик", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаУспех(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСчетчиков", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчики(Результат); - - // Фильтр по списку ID - - Фильтр = Новый Структура; - - МассивСчетчиков = Новый Массив; - МассивСчетчиков.Добавить(IDСчетчика); - - Фильтр.Вставить("counter_ids", МассивСчетчиков); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("filter", Фильтр); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСчетчиков (фильтр)", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчики(Результат); - -КонецПроцедуры - -Процедура CLI_YandexMetrika_ПолучитьСписокОпераций(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокОпераций", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОпераций", "YandexMetrika"); - OPI_ПолучениеДанныхТестов.Проверка_МетрикаОперации(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область S3 - -Процедура CLI_S3_ПолучитьСтруктуруДанных(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруДанных", "S3"); - -КонецПроцедуры - -Процедура CLI_S3_ОтправитьЗапросБезТела(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"] + "/opi-newbucket2"; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Метод = "GET"; - - Опции = Новый Структура; - Опции.Вставить("method", Метод); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросБезТела", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЗапросБезТела"); - -КонецПроцедуры - -Процедура CLI_S3_ОтправитьЗапросСТелом(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Метод = "PUT"; - Тело = "C:\test_data\document.docx"; - - Опции = Новый Структура; - Опции.Вставить("method", Метод); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("body" , Тело); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросСТелом", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЗапросСТелом"); - -КонецПроцедуры - -Процедура CLI_S3_СоздатьБакет(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - // Directory bucket - - Наименование = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "СоздатьБакет", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБакет (DB)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); - - // General purpose bucket - - Наименование = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "СоздатьБакет", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБакет", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_УдалитьБакет(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - // Directory bucket - - Наименование = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьБакет", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБакет (DB)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); - - // General purpose bucket - - Наименование = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьБакет", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБакет", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьСписокБакетов(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Опции = Новый Структура; - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокБакетов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокБакетов", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПроверитьДоступностьБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьДоступностьБакета", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("account", "1234"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьШифрованиеБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "opi-newbucket2"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШифрованиеБакета", "S3"); - -КонецПроцедуры - -Процедура CLI_S3_УдалитьШифрованиеБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "opi-newbucket2"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьШифрованиеБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьШифрованиеБакета", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_УстановитьШифрованиеБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "opi-newbucket2"; - - XMLКонфигурация = " - | - | - | AES256 - | - | - |"; - - XMLКонфигурация = ПолучитьДвоичныеДанныеИзСтроки(XMLКонфигурация); - ИВФ = ПолучитьИмяВременногоФайла("xml"); - XMLКонфигурация.Записать(ИВФ); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("conf" , ИВФ); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьШифрованиеБакета", Опции); - - УдалитьФайлы(ИВФ); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьШифрованиеБакета", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3НеПоддерживается(Результат); - OPI_ПолучениеДанныхТестов.ЗаписатьФайлЛога("", "УстановитьШифрованиеБакета", "S3", Истина); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьТегиБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - // Directory bucket - - Наименование = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТегиБакета (DB)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); - - // General purpose bucket - - Наименование = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТегиБакета", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_УстановитьТегиБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - СтруктураТегов = Новый Структура; - - СтруктураТегов.Вставить("MyTag1", "SomeValue"); - СтруктураТегов.Вставить("MyTag2", "AnotherOne"); - - // Directory bucket - - Наименование = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("tagset", СтруктураТегов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьТегиБакета (DB)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); - - // General purpose bucket - - Наименование = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("tagset", СтруктураТегов); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьТегиБакета", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_УдалитьТегиБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - // Directory bucket - - Наименование = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТегиБакета (DB)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); - - // General purpose bucket - - Наименование = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТегиБакета", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТегиБакета (получение)", "S3"); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - // Directory bucket - - Наименование = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьНастройкийВерсионированияБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкийВерсионированияБакета (DB)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); - - // General purpose bucket - - Наименование = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьНастройкийВерсионированияБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкийВерсионированияБакета", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - Статус = Истина; - - // Directory bucket - - Наименование = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("status", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьНастройкиВерсионированияБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьНастройкиВерсионированияБакета (DB)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); - - // General purpose bucket - - Наименование = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("status", Истина); - Опции.Вставить("dir" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьНастройкиВерсионированияБакета", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьНастройкиВерсионированияБакета", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ЗагрузитьОбъект(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - Бакет = "opi-gpbucket3"; - Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("data" , Содержимое); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьОбъект", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - Наименование = "fileChunked.mp3"; - Бакет = "opi-gpbucket3"; - Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные - - ОсновныеДанные.Вставить("ChunkSize", 5242880); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("data" , Содержимое); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьОбъект (частями)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); - -КонецПроцедуры - -Процедура CLI_S3_ЗагрузитьОбъектЦеликом(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "pictureSmall.jpg"; - Бакет = "opi-gpbucket3"; - Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("data" , Содержимое); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьОбъектЦеликом", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); - -КонецПроцедуры - -Процедура CLI_S3_УдалитьОбъект(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - Бакет = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьОписаниеОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - Бакет = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОписаниеОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеОбъекта", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_КопироватьОбъект(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - ПутьИсточник = "picture.jpg"; - БакетИсточник = "opi-gpbucket3"; - - ПутьПриемник = "new_picture.jpg"; - БакетПриемник = "opi-dirbucket3"; - - Опции = Новый Структура; - Опции.Вставить("sname" , ПутьИсточник); - Опции.Вставить("sbucket", БакетИсточник); - Опции.Вставить("name" , ПутьПриемник); - Опции.Вставить("bucket" , БакетПриемник); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "КопироватьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "КопироватьОбъект", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); - OPI_S3.УдалитьОбъект(ПутьПриемник, БакетПриемник, ОсновныеДанные); - -КонецПроцедуры - -Процедура CLI_S3_УстановитьТегиОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - Бакет = "opi-gpbucket3"; - - СтруктураТегов = Новый Структура; - - СтруктураТегов.Вставить("MyTag1", "SomeValue"); - СтруктураТегов.Вставить("MyTag2", "AnotherOne"); - - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("tagset", СтруктураТегов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьТегиОбъекта", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьТегиОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - Бакет = "opi-gpbucket3"; - - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТегиОбъекта", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_УдалитьТегиОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - Бакет = "opi-gpbucket3"; - - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТегиОбъекта", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьСписокОбъектов(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Бакет = "opi-gpbucket3"; - - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокОбъектов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОбъектов", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьСписокВерсийОбъектов(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Бакет = "opi-gpbucket3"; - Префикс = "pic"; - - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("prefix", Префикс); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокВерсийОбъектов", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокВерсийОбъектов", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьОбъект(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - НеобходимыйРазмер = Картинка.Размер(); - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - Бакет = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, НеобходимыйРазмер); - - ВременныйФайл = ПолучитьИмяВременногоФайла(); - ОсновныеДанные.Вставить("ChunkSize", 200000); - - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("out" , ВременныйФайл); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект (файл)", "S3"); - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Размер() = НеобходимыйРазмер); - УдалитьФайлы(ВременныйФайл); - - Наименование = "bigfile.exe"; - Бакет = "newbucket2"; - - ВременныйФайлБольшой = ПолучитьИмяВременногоФайла(); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("out" , ВременныйФайлБольшой); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект (большой, файл)", "S3"); - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Размер() = 34432400); - УдалитьФайлы(ВременныйФайлБольшой); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект (большой, ДД)", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 34432400); - -КонецПроцедуры - -Процедура CLI_S3_ИнициализироватьЗагрузкуЧастями(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "fileChunked.mp3"; - Бакет = "opi-gpbucket3"; - - Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные - Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИнициализироватьЗагрузкуЧастями", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; - ОбщийРазмер = Содержимое.Размер(); - РазмерУчастка = 5242880; - ПрочитаноБайт = 0; - НомерЧасти = 1; - - ЧтениеДанных = Новый ЧтениеДанных(Содержимое); - ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); - МассивТегов = Новый Массив; - - Пока ПрочитаноБайт < ОбщийРазмер Цикл - - ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); - ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); - - ИВФ = ПолучитьИмяВременногоФайла(); - ТекущиеДанные.Записать(ИВФ); - - Если ТекущиеДанные.Размер() = 0 Тогда - Прервать; - КонецЕсли; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket" , Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("upload" , IDЗагрузки); - Опции.Вставить("part" , НомерЧасти); - Опции.Вставить("content", ИВФ); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьЧастьОбъекта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьЧастьОбъекта", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); - - ETag = Результат["headers"]["Etag"]; - ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); - - МассивТегов.Добавить(ETag); - - УдалитьФайлы(ИВФ); - - НомерЧасти = НомерЧасти + 1; - - КонецЦикла; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("upload", IDЗагрузки); - Опции.Вставить("tags" , МассивТегов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗавершитьЗагрузкуЧастями", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); - -КонецПроцедуры - -Процедура CLI_S3_ОтменитьЗагрузкуЧастями(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "fileChunked.mp3"; - Бакет = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Начало = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); - IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"]; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("upload", IDЗагрузки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтменитьЗагрузкуЧастями", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтменитьЗагрузкуЧастями", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - НеобходимыйРазмер = Картинка.Размер(); - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - Бакет = "opi-gpbucket3"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket" , Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("expires", 7200); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуСкачиванияОбъекта", Опции); - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуСкачиванияОбъекта", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); - - Результат = OPI_ЗапросыHTTP.Get(Результат); - - OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, НеобходимыйРазмер); - -КонецПроцедуры - -Процедура CLI_S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - НеобходимыйРазмер = Картинка.Размер(); - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "pictureU.jpg"; - Бакет = "newbucket2"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket" , Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("expires", 7200); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуЗагрузкиОбъекта", Опции); - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуЗагрузкиОбъекта", "S3"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(Результат) - .УстановитьДвоичноеТело(Картинка) - .ОбработатьЗапрос("PUT"); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуЗагрузкиОбъекта (PUT)", "S3"); - - Проверка = OPI_S3.ПолучитьОписаниеОбъекта(Наименование, Бакет, ОсновныеДанные); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "ПолучитьОписаниеОбъекта (Ссылка загрузки)", "S3"); - - OPI_ПолучениеДанныхТестов.ОжидаетЧто(НеобходимыйРазмер = Число(Проверка["headers"]["Content-Length"])).Равно(Истина); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); - -КонецПроцедуры - -#КонецОбласти - -#Область TCP - -Процедура CLI_TCP_ОбработатьЗапрос(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Данные = "Echo this!\n"; - - Опции = Новый Структура; - Опции.Вставить("address", Адрес); - Опции.Вставить("data" , Данные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); - - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбработатьЗапрос", "TCP"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(СтрЗаменить(Результат, Символы.ПС, "\n"), Данные); - - Адрес = ПараметрыФункции["TCP_AddressTLS"]; - Tls = OPI_TCP.ПолучитьНастройкиTls(Ложь); - Данные = "Echo this!\n"; - - Опции = Новый Структура; - Опции.Вставить("address", Адрес); - Опции.Вставить("data" , Данные); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); - - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбработатьЗапрос (TLS)", "TCP"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(СтрЗаменить(Результат, Символы.ПС, "\n"), Данные); - -КонецПроцедуры - -Процедура CLI_TCP_ПолучитьНастройкиTls(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTls", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиTls", "TCP"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область SQLite - -Процедура CLI_SQLite_ВыполнитьЗапросSQL(ПараметрыФункции) - - ИВФ = ПолучитьИмяВременногоФайла("sqlite"); - - ФайлКартинки = ПолучитьИмяВременногоФайла("png"); - - Картинка = ПараметрыФункции["Picture"]; - КопироватьФайл(Картинка, ФайлКартинки); - - Блоб = Новый Структура("blob", ФайлКартинки); - - ТекстЗапроса = " - |CREATE TABLE test_table ( - |id INTEGER PRIMARY KEY, - |name TEXT, - |age INTEGER, - |salary REAL, - |is_active BOOLEAN, - |created_at DATETIME, - |data BLOB - |);"; - - Опции = Новый Структура; - Опции.Вставить("sql", СтрЗаменить(ТекстЗапроса, Символы.ПС, "")); - Опции.Вставить("db" , ИВФ); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Create)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - // INSERT с параметрами - - ТекстЗапроса = " - |INSERT INTO test_table (name, age, salary, is_active, created_at, data) - |VALUES (?1, ?2, ?3, ?4, ?5, ?6);"; - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить("Vitaly"); // TEXT - МассивПараметров.Добавить(25); // INTEGER - МассивПараметров.Добавить(1000.12); // REAL - МассивПараметров.Добавить(Истина); // BOOL - МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME - МассивПараметров.Добавить(Блоб); // BLOB - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, "")); - Опции.Вставить("params", МассивПараметров); - Опции.Вставить("db" , ИВФ); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Insert)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - // SELECT (Результат этого запроса приведен в следующем блоке) - - ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; - - Опции = Новый Структура; - Опции.Вставить("sql", СтрЗаменить(ТекстЗапроса, Символы.ПС, "")); - Опции.Вставить("db" , ИВФ); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - Blob = Результат["data"][0]["data"]["blob"]; - - Результат["data"][0]["data"]["blob"] = "Base64"; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Select, код)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - Картинка = Новый ДвоичныеДанные(ФайлКартинки); - OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); - - // С расширением - - Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные - ТочкаВхода = "sqlite3_uuid_init"; - - СоответствиеРасширений = Новый Соответствие; - СоответствиеРасширений.Вставить(Расширение, ТочкаВхода); - - ТекстЗапроса = "SELECT uuid4();"; - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, "")); - Опции.Вставить("db" , ИВФ); - Опции.Вставить("exts", СоответствиеРасширений); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (расширение)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1); - - Попытка - УдалитьФайлы(ИВФ); - УдалитьФайлы(ФайлКартинки); - Исключение - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite"); - КонецПопытки; - -КонецПроцедуры - -Процедура CLI_SQLite_ПолучитьИнформациюОТаблице(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - -КонецПроцедуры - -Процедура CLI_SQLite_СоздатьТаблицу(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); - СтруктураКолонок.Вставить("name" , "TEXT"); - СтруктураКолонок.Вставить("age" , "INTEGER"); - СтруктураКолонок.Вставить("salary" , "REAL"); - СтруктураКолонок.Вставить("is_active" , "BOOLEAN"); - СтруктураКолонок.Вставить("created_at", "DATETIME"); - СтруктураКолонок.Вставить("data" , "BLOB"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - СоответствиеКолонок = Новый Соответствие; - СоответствиеКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); - СоответствиеКолонок.Вставить("[Непонятная колонка]", "TEXT"); - - Опции = Новый Структура; - Опции.Вставить("table", "test1"); - Опции.Вставить("cols" , СоответствиеКолонок); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу (непонятная колонка)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - -КонецПроцедуры - -Процедура CLI_SQLite_ДобавитьЗаписи(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - ФайлКартинки = ПолучитьИмяВременногоФайла("png"); - Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - МассивДанных = Новый Массив; - - СтруктураСтроки1 = Новый Структура; - СтруктураСтроки1.Вставить("name" , "Vitaly"); // TEXT - СтруктураСтроки1.Вставить("age" , 25); // INTEGER - СтруктураСтроки1.Вставить("salary" , 1000.12); // REAL - СтруктураСтроки1.Вставить("is_active" , Истина); // BOOL - СтруктураСтроки1.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME - СтруктураСтроки1.Вставить("data" , Новый Структура("blob", ФайлКартинки)); // BLOB - - СтруктураСтроки2 = Новый Структура; - СтруктураСтроки2.Вставить("name" , "Lesha") ; // TEXT - СтруктураСтроки2.Вставить("age" , 20); // INTEGER - СтруктураСтроки2.Вставить("salary" , 200.20) ; // REAL - СтруктураСтроки2.Вставить("is_active" , Ложь) ; // BOOL - СтруктураСтроки2.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME - СтруктураСтроки2.Вставить("data" , Новый Структура("blob", ФайлКартинки)); // BLOB - - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки2); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("trn" , Ложь); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (без транзакции)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - СтруктураСтроки2.Вставить("error", "Lesha") ; - МассивДанных.Добавить(СтруктураСтроки2); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (ошибка поля)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteОшибка(Результат); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("trn" , Ложь); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (ошибка поля без транзакции)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteСтроки(Результат, 1); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , "not valid json"); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (ошибка json)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteОшибка(Результат); - - СоответствиеСтроки = Новый Соответствие; - СоответствиеСтроки.Вставить("[Непонятная колонка]", "yo"); - - Опции = Новый Структура; - Опции.Вставить("table", "test1"); - Опции.Вставить("rows" , СоответствиеСтроки); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (непонятная колонка)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - Попытка - УдалитьФайлы(ФайлКартинки); - Исключение - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "SQLite"); - КонецПопытки; - -КонецПроцедуры - -Процедура CLI_SQLite_ПолучитьЗаписи(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Поля = Новый Массив; - Поля.Добавить("name"); - Поля.Добавить("salary"); - - Фильтры = Новый Массив; - - СтруктураФильтра1 = Новый Структура; - - СтруктураФильтра1.Вставить("field", "name"); - СтруктураФильтра1.Вставить("type" , "="); - СтруктураФильтра1.Вставить("value", "Vitaly"); - СтруктураФильтра1.Вставить("union", "AND"); - СтруктураФильтра1.Вставить("raw" , Ложь); - - СтруктураФильтра2 = Новый Структура; - - СтруктураФильтра2.Вставить("field", "age"); - СтруктураФильтра2.Вставить("type" , "BETWEEN"); - СтруктураФильтра2.Вставить("value", "20 AND 30"); - СтруктураФильтра2.Вставить("raw" , Истина); - - Фильтры.Добавить(СтруктураФильтра1); - Фильтры.Добавить(СтруктураФильтра2); - - Сортировка = Новый Структура("created_at", "DESC"); - Количество = 1; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", Поля); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("order" , Сортировка); - Опции.Вставить("limit" , Количество); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (без параметров)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - СтруктураФильтра2.Вставить("type" , "BEETWEEN"); - Фильтры.Добавить(СтруктураФильтра2); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (ошибка)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteОшибка(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , "test1"); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (непонятная колонка)", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - -КонецПроцедуры - -Процедура CLI_SQLite_ОбновитьЗаписи(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("name" , "Vitaly A."); - СтруктураПолей.Вставить("salary", "999999"); - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "name"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", "Vitaly"); - СтруктураФильтра.Вставить("union", "AND"); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("values", СтруктураПолей); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОбновитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЗаписи", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - СтруктураФильтра.Вставить("value", "Vitaly A."); - - Фильтры = Новый Массив; - Фильтры.Добавить(СтруктураФильтра); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['name','salary']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Проверка); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][0], СтруктураПолей); - -КонецПроцедуры - -Процедура CLI_SQLite_УдалитьЗаписи(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "name"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", "Vitaly A."); - СтруктураФильтра.Вставить("union", "AND"); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("filter", СтруктураФильтра); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['name','salary']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteНетЗаписей(Проверка); - -КонецПроцедуры - -Процедура CLI_SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции.Вставить("empty" , Истина); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "SQLite"); - - Для Каждого Элемент Из Результат Цикл - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_SQLite_УдалитьТаблицу(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 0); - -КонецПроцедуры - -Процедура CLI_SQLite_ОчиститьТаблицу(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОчиститьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 7); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 0); - -КонецПроцедуры - -#КонецОбласти - -#Область PostgreSQL - -Процедура CLI_PostgreSQL_СформироватьСтрокуПодключения(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - Результат = СтрЗаменить(Результат, Пароль, "***"); - Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьСтрокуПодключения", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Истина(СтрНачинаетсяС(Результат, "postgresql")); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ВыполнитьЗапросSQL(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - ИВФ = ПолучитьИмяВременногоФайла(); - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - Картинка.Записать(ИВФ); - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Опции = Новый Структура(); - Опции.Вставить("dbc" , СтрокаПодключения); - - Опции.Вставить("table", "users"); - OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции, Ложь); - - Опции.Вставить("table", "test_data"); - OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции, Ложь); - - Опции.Вставить("table", "test_table"); - OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции, Ложь); - - // CREATE - - ТекстЗапроса = " - |CREATE TABLE test_table ( - |id SERIAL PRIMARY KEY, - |name NAME, - |age INT, - |salary REAL, - |is_active BOOL, - |created_at DATE, - |data BYTEA - |);"; - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Create)", "PostgreSQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - // INSERT с параметрами - - ТекстЗапроса = " - |INSERT INTO test_table (name, age, salary, is_active, created_at, data) - |VALUES ($1, $2, $3, $4, $5, $6);"; - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Новый Структура("NAME" , "Vitaly")); - МассивПараметров.Добавить(Новый Структура("INT" , 25)); - МассивПараметров.Добавить(Новый Структура("REAL" , 1000.12)); - МассивПараметров.Добавить(Новый Структура("BOOL" , Истина)); - МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); - МассивПараметров.Добавить(Новый Структура("BYTEA", ИВФ)); - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); - Опции.Вставить("params", МассивПараметров); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Insert)", "PostgreSQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - // SELECT (Результат этого запроса приведен в следующем блоке) - - ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь); - - Blob = Результат["data"][0]["data"]["BYTEA"]; // SKIP - - Результат["data"][0]["data"]["BYTEA"] = "Base64"; // SKIP - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL", "PostgreSQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP - - // DO + Транзакция - - ТекстЗапроса = "DO $$ - |BEGIN - | CREATE TABLE users ( - | id SMALLSERIAL, - | name TEXT NOT NULL, - | age INT NOT NULL - | ); - | INSERT INTO users (name, age) VALUES ('Alice', 30); - | INSERT INTO users (name, age) VALUES ('Bob', 25); - | INSERT INTO users (name, age) VALUES ('Charlie', 35); - | COMMIT; - |END $$ LANGUAGE plpgsql;"; - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Transaction)", "PostgreSQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - // SQL запрос из файла - - ФайлSQL = ПараметрыФункции["SQL"]; // Двоичные данные, URL или путь к файлу - - Опции = Новый Структура; - Опции.Вставить("sql" , ФайлSQL); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (файл)", "PostgreSQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - Попытка - УдалитьФайлы(ИВФ); - Исключение - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "PostgreSQL"); - КонецПопытки; - -КонецПроцедуры - -Процедура CLI_PostgreSQL_СоздатьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - База = "testbase1"; - - Опции = Новый Структура(); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("base", База); - - Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции, Ложь); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); - - Опции = Новый Структура; - Опции.Вставить("base" , База); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных (существующая)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат); - - Адрес = "api.athenaeum.digital"; - Порт = "5433"; - - СтрокаПодключенияTLS = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, "postgres", Логин, Пароль, Порт); - НастройкиTLS = OPI_PostgreSQL.ПолучитьНастройкиTls(Истина); - - Опции = Новый Структура; - Опции.Вставить("base" , База); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных (TLS)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_СоздатьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("bool_field" , "BOOL"); - СтруктураКолонок.Вставить("oldchar_field" , """char"""); - СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); - СтруктураКолонок.Вставить("smallserial_field", "SMALLSERIAL"); - СтруктураКолонок.Вставить("int_field" , "INT"); - СтруктураКолонок.Вставить("serial_field" , "SERIAL"); - СтруктураКолонок.Вставить("oid_field" , "OID"); - СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); - СтруктураКолонок.Вставить("bigserial_field" , "BIGSERIAL"); - СтруктураКолонок.Вставить("real_field" , "REAL"); - СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION"); - СтруктураКолонок.Вставить("text_field" , "TEXT"); - СтруктураКолонок.Вставить("varchar_field" , "VARCHAR"); - СтруктураКолонок.Вставить("charn_field" , "CHAR(3)"); - СтруктураКолонок.Вставить("char_field" , "CHAR"); - СтруктураКолонок.Вставить("name_field" , "NAME"); - СтруктураКолонок.Вставить("bytea_field" , "BYTEA"); - СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP"); - СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE"); - СтруктураКолонок.Вставить("ip_field" , "INET"); - СтруктураКолонок.Вставить("json_field" , "JSON"); - СтруктураКолонок.Вставить("jsonb_field" , "JSONB"); - СтруктураКолонок.Вставить("date_field" , "DATE"); - СтруктураКолонок.Вставить("time_field" , "TIME"); - СтруктураКолонок.Вставить("uuid_field" , "UUID"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу (существующая)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 25); - - Таблица = "heyho"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице (ошибка)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ДобавитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - МассивЗаписей = Новый Массив; - - Картинка = ПараметрыФункции["Picture"]; - ИВФ = ПолучитьИмяВременногоФайла(); - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - Картинка.Записать(ИВФ); - - СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00"); - - СтруктураЗаписи = Новый Структура; - СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина)); - СтруктураЗаписи.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 1)); // или "char" - СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 5)); - СтруктураЗаписи.Вставить("smallserial_field", Новый Структура("SMALLSERIAL" , 6)); - СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100)); - СтруктураЗаписи.Вставить("serial_field" , Новый Структура("SERIAL" , 100)); - СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576)); - СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999)); - СтруктураЗаписи.Вставить("bigserial_field" , Новый Структура("BIGSERIAL" , 9999999)); - СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2)); - СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0002)); // или DOUBLE PRECISION - СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); - СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("VARCHAR" , "Some varchar")); - СтруктураЗаписи.Вставить("charn_field" , Новый Структура("CHAR" , "AAA")); - СтруктураЗаписи.Вставить("char_field" , Новый Структура("CHAR" , "A")); - СтруктураЗаписи.Вставить("name_field" , Новый Структура("NAME" , "Vitaly")); - СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , ИВФ)); - СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP" , ТекущаяДата)); - СтруктураЗаписи.Вставить("tswtz_field" , Новый Структура("TIMESTAMP_WITH_TIME_ZONE", ТекущаяДатаЧП)); // или TIMESTAMP WITH TIME ZONE - СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1")); - СтруктураЗаписи.Вставить("json_field" , Новый Структура("JSON" , СлучайнаяСтруктура)); - СтруктураЗаписи.Вставить("jsonb_field" , Новый Структура("JSONB" , СлучайнаяСтруктура)); - СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); - СтруктураЗаписи.Вставить("uuid_field" , Новый Структура("UUID" , Строка(Новый УникальныйИдентификатор()))); - - МассивЗаписей.Добавить(СтруктураЗаписи); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивЗаписей); - Опции.Вставить("trn" , Истина); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ДобавитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Попытка - УдалитьФайлы(ИВФ); - Исключение - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "PostgreSQL"); - КонецПопытки; - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ПолучитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - // Все записи без отборов - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - Если ЗначениеЗаполнено(Результат["data"]) Тогда // SKIP - Результат["data"][0]["bytea_field"]["BYTEA"] // SKIP - = Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "..."; // SKIP - КонецЕсли; // SKIP - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи", "PostgreSQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - // Отборы, выбранные поля, количество и сортировка - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , "test_data"); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "test_data"; - - Поля = Новый Массив; - Поля.Добавить("first_name"); - Поля.Добавить("last_name"); - Поля.Добавить("email"); - - Фильтры = Новый Массив; - - СтруктураФильтра1 = Новый Структура; - - СтруктураФильтра1.Вставить("field", "gender"); - СтруктураФильтра1.Вставить("type" , "="); - СтруктураФильтра1.Вставить("value", "Male"); - СтруктураФильтра1.Вставить("union", "AND"); - СтруктураФильтра1.Вставить("raw" , Ложь); - - СтруктураФильтра2 = Новый Структура; - - СтруктураФильтра2.Вставить("field", "id"); - СтруктураФильтра2.Вставить("type" , "BETWEEN"); - СтруктураФильтра2.Вставить("value", "20 AND 50"); - СтруктураФильтра2.Вставить("raw" , Истина); - - Фильтры.Добавить(СтруктураФильтра1); - Фильтры.Добавить(СтруктураФильтра2); - - Сортировка = Новый Структура("ip_address", "DESC"); - Количество = 5; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", Поля); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("order" , Сортировка); - Опции.Вставить("limit" , Количество); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (отборы)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 5); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ОбновитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "test_data"; - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Количество = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Количество, "ОбновитьЗаписи (количество)", "PostgreSQL"); // SKIP - Количество = Количество["data"].Количество(); // SKIP - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("values", СтруктураПолей); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОбновитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЗаписи", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['ip_address']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "ОбновитьЗаписи (проверка)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], Количество); - - Для Н = 0 По Проверка["data"].ВГраница() Цикл - OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][Н], СтруктураПолей); - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_PostgreSQL_УдалитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "test_data"; - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - СтруктураФильтра.Вставить("union", "AND"); - - Фильтры.Добавить(СтруктураФильтра); - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "ip_address"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Получение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьЗаписи", Опции); - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Получение, "УдалитьЗаписи (получение)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Количество = Получение["data"].Количество(); - Остаток = 100 - Количество; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи (проверка)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], Остаток); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ОчиститьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОчиститьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу (проверка)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_УдалитьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - База = "test_data"; - Таблица = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу (тест)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОтключитьВсеСоединенияБазыДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьВсеСоединенияБазыДанных", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_УдалитьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБазуДанных", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Адрес = "api.athenaeum.digital"; - Порт = "5433"; - - СтрокаПодключенияTLS = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, "postgres", Логин, Пароль, Порт); - НастройкиTLS = OPI_PostgreSQL.ПолучитьНастройкиTls(Истина); - - Опции = Новый Структура; - Опции.Вставить("base" , База); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБазуДанных (TLS)", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "PostgreSQL"); - - Для Каждого Элемент Из Результат Цикл - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_PostgreSQL_ПолучитьНастройкиTls(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTls", Опции, Ложь); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиTls", "PostgreSQL"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область MySQL - -Процедура CLI_MySQL_СформироватьСтрокуПодключения(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); - - Результат = СтрЗаменить(Результат, Пароль, "***"); - Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьСтрокуПодключения", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_ВыполнитьЗапросSQL(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - ИВФ = ПолучитьИмяВременногоФайла(); - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - Картинка.Записать(ИВФ); - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Опции = Новый Структура(); - Опции.Вставить("dbc" , СтрокаПодключения); - - Опции.Вставить("table", "users"); - OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь); - - Опции.Вставить("table", "test_data"); - OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь); - - Опции.Вставить("table", "test_table"); - OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь); - - // CREATE - - ТекстЗапроса = " - |CREATE TABLE test_table ( - |id INT AUTO_INCREMENT PRIMARY KEY, - |name VARCHAR(255), - |age INT, - |salary DOUBLE, - |amount FLOAT, - |type TINYINT UNSIGNED, - |date DATE, - |time TIME, - |data MEDIUMBLOB - |);"; - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Create)", "MySQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - // INSERT с параметрами - - ТекстЗапроса = " - |INSERT INTO test_table (name, age, salary, amount, type, date, time, data) - |VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Новый Структура("TEXT" , "Vitaly")); - МассивПараметров.Добавить(Новый Структура("INT" , 25)); - МассивПараметров.Добавить(Новый Структура("DOUBLE", 1000.12)); - МассивПараметров.Добавить(Новый Структура("FLOAT" , 1000.12)); - МассивПараметров.Добавить(Новый Структура("UINT" , 1)); - МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); - МассивПараметров.Добавить(Новый Структура("TIME" , OPI_Инструменты.ПолучитьТекущуюДату())); - МассивПараметров.Добавить(Новый Структура("BYTES" , ИВФ)); - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); - Опции.Вставить("params", МассивПараметров); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Insert)", "MySQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - // SELECT (Результат этого запроса приведен в следующем блоке) - - ТекстЗапроса = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;"; - - Опции = Новый Структура; - Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь); - - Blob = Результат["data"][0]["data"]["BYTES"]; // SKIP - - Результат["data"][0]["data"]["BYTES"] = "Base64"; // SKIP - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL", "MySQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP - - Опции = Новый Структура; - Опции.Вставить("sql" , "create table TEST_DATA (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));"); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь); - - // SQL запрос из файла - - ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу - - Опции = Новый Структура; - Опции.Вставить("sql" , ФайлSQL); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (файл)", "MySQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - Попытка - УдалитьФайлы(ИВФ); - Исключение - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "MySQL"); - КонецПопытки; - -КонецПроцедуры - -Процедура CLI_MySQL_СоздатьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - База = "testbase1"; - - Опции = Новый Структура(); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("base", База); - - Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции, Ложь); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "СоздатьБазуДанных (удаление)", "MySQL"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("base" , База); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных (существующая)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат); - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - Опции = Новый Структура; - Опции.Вставить("base" , База); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции, Ложь); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "СоздатьБазуДанных (удаление, TLS)", "MySQL"); // SKIP - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_СоздатьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("char_field" , "CHAR(5)"); - СтруктураКолонок.Вставить("varchar_field" , "VARCHAR(255)"); - СтруктураКолонок.Вставить("tinytext_field" , "TINYTEXT"); - СтруктураКолонок.Вставить("text_field" , "TEXT"); - СтруктураКолонок.Вставить("mediumtext_field", "MEDIUMTEXT"); - СтруктураКолонок.Вставить("longtext_field" , "LONGTEXT"); - СтруктураКолонок.Вставить("tinyint_field" , "TINYINT"); - СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); - СтруктураКолонок.Вставить("mediumint_field" , "MEDIUMINT"); - СтруктураКолонок.Вставить("int_field" , "INT"); - СтруктураКолонок.Вставить("uint_field" , "INT UNSIGNED"); - СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); - СтруктураКолонок.Вставить("float_field" , "FLOAT"); - СтруктураКолонок.Вставить("double_field" , "DOUBLE"); - СтруктураКолонок.Вставить("date_field" , "DATE"); - СтруктураКолонок.Вставить("time_field" , "TIME"); - СтруктураКолонок.Вставить("datetime_field" , "DATETIME"); - СтруктураКолонок.Вставить("timestamp_field" , "TIMESTAMP"); - СтруктураКолонок.Вставить("mediumblob_field", "MEDIUMBLOB"); - СтруктураКолонок.Вставить("set_field" , "SET('one','two','three')"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу (существующая)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат); - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_ДобавитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - МассивЗаписей = Новый Массив; - - Картинка = ПараметрыФункции["Picture"]; - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - СтруктураЗаписи = Новый Структура; - СтруктураЗаписи.Вставить("char_field" , Новый Структура("TEXT" , "AAAAA")); - СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("TEXT" , "Some varchar")); - СтруктураЗаписи.Вставить("tinytext_field" , Новый Структура("TEXT" , "Some tiny text")); - СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); - СтруктураЗаписи.Вставить("mediumtext_field", Новый Структура("TEXT" , "Some medium text")); - СтруктураЗаписи.Вставить("longtext_field" , Новый Структура("TEXT" , "Some looooooong text")); - СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("INT" , 127)); - СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("INT" , -32767)); - СтруктураЗаписи.Вставить("mediumint_field" , Новый Структура("INT" , 8388607)); - СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , -2147483647)); - СтруктураЗаписи.Вставить("uint_field" , Новый Структура("UINT" , 4294967295)); - СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("INT" , 9223372036854775807)); - СтруктураЗаписи.Вставить("float_field" , Новый Структура("FLOAT" , 100.50)); - СтруктураЗаписи.Вставить("double_field" , Новый Структура("FLOAT" , 100.512123)); - СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); - СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("timestamp_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("mediumblob_field", Новый Структура("BYTES" , Картинка)); - СтруктураЗаписи.Вставить("set_field" , Новый Структура("TEXT" , "one")); - - МассивЗаписей.Добавить(СтруктураЗаписи); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивЗаписей); - Опции.Вставить("trn" , Истина); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивЗаписей); - Опции.Вставить("trn" , Истина); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_ПолучитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - Если ЗначениеЗаполнено(Результат["data"]) Тогда // SKIP - Результат["data"][0]["mediumblob_field"]["BYTES"] = Лев(Результат["data"][0]["mediumblob_field"]["BYTES"], 10) + "..."; // SKIP - КонецЕсли; // SKIP - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи", "MySQL"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , "test_data"); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "test_data"; - - Поля = Новый Массив; - Поля.Добавить("first_name"); - Поля.Добавить("last_name"); - Поля.Добавить("email"); - - Фильтры = Новый Массив; - - СтруктураФильтра1 = Новый Структура; - - СтруктураФильтра1.Вставить("field", "gender"); - СтруктураФильтра1.Вставить("type" , "="); - СтруктураФильтра1.Вставить("value", "Male"); - СтруктураФильтра1.Вставить("union", "AND"); - СтруктураФильтра1.Вставить("raw" , Ложь); - - СтруктураФильтра2 = Новый Структура; - - СтруктураФильтра2.Вставить("field", "id"); - СтруктураФильтра2.Вставить("type" , "BETWEEN"); - СтруктураФильтра2.Вставить("value", "20 AND 50"); - СтруктураФильтра2.Вставить("raw" , Истина); - - Фильтры.Добавить(СтруктураФильтра1); - Фильтры.Добавить(СтруктураФильтра2); - - Сортировка = Новый Структура("ip_address", "DESC"); - Количество = 5; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", Поля); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("order" , Сортировка); - Опции.Вставить("limit" , Количество); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (отборы)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 5); - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"]); - -КонецПроцедуры - -Процедура CLI_MySQL_ОбновитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "test_data"; - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Количество = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Количество, "ОбновитьЗаписи (количество)", "MySQL"); // SKIP - Количество = Количество["data"].Количество(); // SKIP - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("values", СтруктураПолей); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОбновитьЗаписи", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЗаписи", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['ip_address']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "ОбновитьЗаписи (проверка)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], Количество); - - Для Н = 0 По Проверка["data"].ВГраница() Цикл - OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][Н], СтруктураПолей); - КонецЦикла; - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - База = "testbase1"; - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("varchar_field", Новый Структура("VARCHAR", "Another varchar")); - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - Опции = Новый Структура; - Опции.Вставить("table" , "testtable"); - Опции.Вставить("values", СтруктураПолей); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОбновитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЗаписи (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_УдалитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "test_data"; - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - СтруктураФильтра.Вставить("union", "AND"); - - Фильтры.Добавить(СтруктураФильтра); - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "ip_address"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Получение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьЗаписи", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Получение, "УдалитьЗаписи (получение)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Количество = Получение["data"].Количество(); - Остаток = 100 - Количество; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи (проверка)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], Остаток); - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - Опции = Новый Структура; - Опции.Вставить("table" , "testtable"); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_УдалитьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - База = "test_data"; - Таблица = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу (тест)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_УдалитьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБазуДанных", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("base" , База); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБазуДанных (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_ОчиститьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОчиститьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Адрес = "api.athenaeum.digital"; - Порт = "3307"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключенияTLS); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОчиститьТаблицу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу (TLS)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу (проверка)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0); - -КонецПроцедуры - -Процедура CLI_MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "MySQL"); - - Для Каждого Элемент Из Результат Цикл - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_MySQL_ПолучитьНастройкиTls(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиTls", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_MySQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); - СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); - - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 20); - - Таблица = "heyho"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице (ошибка)", "MySQL"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0); - -КонецПроцедуры - -#КонецОбласти - -#Область GreenAPI - -Процедура CLI_GreenAPI_СформироватьПараметрыДоступа(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - // END - - Результат.Вставить("apiTokenInstance", "***"); - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьПараметрыДоступа", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьНастройкиИнстанса", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиИнстанса", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринИнстанс(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОбАккаунте", Опции); - - Попытка - Результат["deviceId"] = "***"; - Результат["phone"] = "***"; - Исключение - Сообщить("Не удалось заменить секреты!"); - КонецПопытки; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбАккаунте", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринПрофиль(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекИнстанса", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекИнстанса (пустая)", "GreenAPI"); - - Для Каждого Элемент Из Результат Цикл - - Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_GreenAPI_УстановитьНастройкиИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - СтруктураНастроек = Новый Структура; - СтруктураНастроек.Вставить("pollMessageWebhook" , "yes"); - СтруктураНастроек.Вставить("incomingBlockWebhook" , "no"); - СтруктураНастроек.Вставить("incomingCallWebhook" , "no"); - СтруктураНастроек.Вставить("editedMessageWebhook" , "yes"); - СтруктураНастроек.Вставить("deletedMessageWebhook", "yes"); - - Опции = Новый Структура; - Опции.Вставить("settings", СтруктураНастроек); - Опции.Вставить("access" , ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьНастройкиИнстанса", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьНастройкиИнстанса", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСохранениеНастроек(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСостояниеИнстанса", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСостояниеИнстанса", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринАвторизован(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПерезапуститьИнстанс(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПерезапуститьИнстанс", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПерезапуститьИнстанс", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринПерезапуск(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьQR(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьQR", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьQR", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринАвторизован(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_РазлогинитьИнстанс(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазлогинитьИнстанс", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "РазлогинитьИнстанс", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринПерезапуск(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьКодАвторизации(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - НомерТелефона = 441234567890; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("phone" , НомерТелефона); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьКодАвторизации", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКодАвторизации", "GreenAPI"); - -КонецПроцедуры - -Процедура CLI_GreenAPI_УстановитьКартинкуПрофиля(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Картинка = ПараметрыФункции["Picture"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуПрофиля", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьКартинкуПрофиля", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринАватар(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_СоздатьГруппу(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Наименование = "New group"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("name" , Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СоздатьГруппу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьГруппу", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринНоваяГруппа(Результат); - - IDГруппы = Результат["chatId"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_GroupID", IDГруппы); - OPI_Инструменты.ДобавитьПоле("GreenAPI_GroupID", IDГруппы, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПокинутьГруппу(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПокинутьГруппу", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПокинутьГруппу", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринВыходГруппы(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОГруппе", Опции); - - Попытка - Результат["owner"] = "***"; - Результат["participants"][0]["id"] = "***"; - Исключение - Сообщить("Не удалось заменить секреты!"); - КонецПопытки; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОГруппе", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринГруппа(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ИзменитьИмяГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - Имя = "New name"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("name" , Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьИмяГруппы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьИмяГруппы", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринИмяГруппы(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - IDПользователя = "123123123@c.us"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ДобавитьУчастникаВГруппу", Опции); - - Попытка - Результат["addParticipant"] = Истина; - Исключение - Сообщить("Не удалось заменить секреты!"); - КонецПопытки; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьУчастникаВГруппу", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринДобавлениеПользователя(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ИсключитьУчастникаГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - IDПользователя = "123123123@c.us"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИсключитьУчастникаГруппы", Опции); - - Попытка - Результат["removeParticipant"] = Истина; - Исключение - Сообщить("Не удалось заменить секреты!"); - КонецПопытки; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИсключитьУчастникаГруппы", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринИсключениеПользователя(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_НазначитьПраваАдминистратора(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - IDПользователя = "123123123@c.us"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "НазначитьПраваАдминистратора", Опции); - - Попытка - Результат["setGroupAdmin"] = Истина; - Исключение - Сообщить("Не удалось заменить секреты!"); - КонецПопытки; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НазначитьПраваАдминистратора", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринНазначениеАдминистратора(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ОтозватьПраваАдминистратора(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - IDПользователя = "123123123@c.us"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтозватьПраваАдминистратора", Опции); - - Попытка - Результат["removeAdmin"] = Истина; - Исключение - Сообщить("Не удалось заменить секреты!"); - КонецПопытки; - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтозватьПраваАдминистратора", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринОтзывАдминистратора(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_УстановитьКартинкуГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуГруппы", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьКартинкуГруппы", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринКартинкаГруппы(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - Текст = "Новое сообщение"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - - IDСообщения = Результат["idMessage"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_MessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("GreenAPI_MessageID", IDСообщения, "Строка", ПараметрыФункции); - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("quoted", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (цитата)", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ОтправитьФайл(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - ИмяФайла = "photo.jpg"; - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - Описание = "Описание файла"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринФайл(Результат); - - IDСообщения = Результат["idMessage"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_FileMessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("GreenAPI_FileMessageID", IDСообщения, "Строка", ПараметрыФункции); - - Файл = ПараметрыФункции["Video"]; - ИмяФайла = "vid.mp4"; - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (цитата)", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринФайл(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ОтправитьФайлПоURL(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - ИмяФайла = "photo.jpg"; - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - Описание = "Описание файла"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("url" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайлПоURL", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - - IDСообщения = Результат["idMessage"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_FileMessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("GreenAPI_FileMessageID", IDСообщения, "Строка", ПараметрыФункции); - - Файл = ПараметрыФункции["Video"]; - ИмяФайла = "vid.mp4"; - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("url" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайлПоURL (цитата)", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ОтправитьОпрос(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - Текст = "Какой ваш любимый цвет?"; - - ВариантыОтвета = Новый Массив; - ВариантыОтвета.Добавить("Красный"); - ВариантыОтвета.Добавить("Желтый"); - ВариантыОтвета.Добавить("Зеленый"); - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("options", ВариантыОтвета); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьОпрос", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - - IDСообщения = Результат["idMessage"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_PollMessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("GreenAPI_PollMessageID", IDСообщения, "Строка", ПараметрыФункции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("options", ВариантыОтвета); - Опции.Вставить("multi" , Истина); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьОпрос (цитата)", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьОписаниеЛокации(ПараметрыФункции) - - Широта = 53.908522; - Долгота = 27.574821; - Адрес = "Площадь Победы, Минск"; - Название = "пл. Победы"; - - Опции = Новый Структура; - Опции.Вставить("lat" , Широта); - Опции.Вставить("long", Долгота); - Опции.Вставить("addr", Адрес); - Опции.Вставить("name", Название); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеЛокации", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ОтправитьЛокацию(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Широта = 53.908522; - Долгота = 27.574821; - Адрес = "Площадь Победы, Минск"; - Название = "пл. Победы"; - - Опции = Новый Структура; - Опции.Вставить("lat" , Широта); - Опции.Вставить("long", Долгота); - Опции.Вставить("addr", Адрес); - Опции.Вставить("name", Название); - - Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("loc" , Локация); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЛокацию", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - - IDСообщения = Результат["idMessage"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_LocMessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("GreenAPI_LocMessageID", IDСообщения, "Строка", ПараметрыФункции); - - Опции = Новый Структура; - Опции.Вставить("lat" , Широта); - Опции.Вставить("long", Долгота); - - Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("loc" , Локация); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЛокацию (цитата)", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыФункции) - - Телефон = 79001234568; - Имя = "Артем"; - Фамилия = "Евпаторийский"; - Отчество = "Петрович"; - Компания = "Велосипед"; - - Опции = Новый Структура; - Опции.Вставить("phone" , Телефон); - Опции.Вставить("name" , Имя); - Опции.Вставить("surname", Фамилия); - Опции.Вставить("midname", Отчество); - Опции.Вставить("company", Компания); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеКонтакта", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ОтправитьКонтакт(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Телефон = 79001234568; - Имя = "Артем"; - Фамилия = "Евпаторийский"; - Отчество = "Петрович"; - Компания = "Велосипед"; - - Опции = Новый Структура; - Опции.Вставить("phone" , Телефон); - Опции.Вставить("name" , Имя); - Опции.Вставить("surname", Фамилия); - Опции.Вставить("midname", Отчество); - Опции.Вставить("company", Компания); - - Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("contact", Контакт); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - - IDСообщения = Результат["idMessage"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_ContactMessageID", IDСообщения); - OPI_Инструменты.ДобавитьПоле("GreenAPI_ContactMessageID", IDСообщения, "Строка", ПараметрыФункции); - - Опции = Новый Структура; - Опции.Вставить("phone" , Телефон); - Опции.Вставить("company", Компания); - - Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("contact", Контакт); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт (цитата)", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПереслатьСообщения(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Откуда = "11001234567@c.us"; - Откуда = ПараметрыФункции["GreenAPI_TestGroupID"]; // SKIP - Куда = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Сообщение = ПараметрыФункции["GreenAPI_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("from" , Откуда); - Опции.Вставить("to" , Куда); - Опции.Вставить("msgs" , Сообщение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПереслатьСообщения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьСообщения", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщения(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьУведомление(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьУведомление", Опции); - - JSON = OPI_Инструменты.JSONСтрокой(Результат); - JSON = СтрЗаменить(JSON, ПараметрыФункции["GreenAPI_AccountID"], "1234567890@c.us"); - - Результат = OPI_Инструменты.JsonВСтруктуру(JSON, Истина); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьУведомление", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринУведомление(Результат); - - IDУведомления = Результат["receiptId"]; - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_ReceiptID", IDУведомления); - OPI_Инструменты.ДобавитьПоле("GreenAPI_ReceiptID", IDУведомления, "Строка", ПараметрыФункции); - -КонецПроцедуры - -Процедура CLI_GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDДоставки = ПараметрыФункции["GreenAPI_ReceiptID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("receipt", IDДоставки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьУведомлениеИзОчереди", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьУведомлениеИзОчереди", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_СкачатьФайлСообщения(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_DownloadMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СкачатьФайлСообщения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайлСообщения", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринВходнойФайл(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_УстановитьОтметкуПрочтения(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_DownloadMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьОтметкуПрочтения", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьОтметкуПрочтения", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринПрочтение(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьОчередьСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОчередьСообщений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОчередьСообщений", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ОчиститьОчередьСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОчиститьОчередьСообщений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьОчередьСообщений", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринОчисткаОчереди(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьИсториюЧата(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИсториюЧата", Опции); - - JSON = OPI_Инструменты.JSONСтрокой(Результат); - JSON = СтрЗаменить(JSON, ПараметрыФункции["GreenAPI_AccountID"], "1234567890@c.us"); - - Результат = OPI_Инструменты.JsonВСтруктуру(JSON, Истина); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьПараметрыДоступа", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьСообщение(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("msg" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСообщение", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСообщение", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналВходящихСообщений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЖурналВходящихСообщений", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналИсходящихСообщений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЖурналИсходящихСообщений", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_УдалитьСообщение(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьСообщение", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_ИзменитьТекстСообщения(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; - Текст = "Новый текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьТекстСообщения", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТекстСообщения", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_АрхивироватьЧат(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "АрхивироватьЧат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "АрхивироватьЧат", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -Процедура CLI_GreenAPI_РазархивироватьЧат(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазархивироватьЧат", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "РазархивироватьЧат", "GreenAPI"); - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область RCON - -Процедура CLI_RCON_СформироватьПараметрыСоединения(ПараметрыФункции) - - URL = ПараметрыФункции["RCON_URL"]; - Пароль = ПараметрыФункции["RCON_Password"]; - ТаймаутЗаписи = 20; - ТаймаутЧтения = 20; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("wtout", ТаймаутЗаписи); - Опции.Вставить("rtout", ТаймаутЧтения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); - - Результат["URL"] = "127.0.0.1:25565"; - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьПараметрыСоединения", "RCON"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_RCON_ВыполнитьКоманду(ПараметрыФункции) - - URL = ПараметрыФункции["RCON_URL"]; - Пароль = ПараметрыФункции["RCON_Password"]; - ТаймаутЗаписи = 20; - ТаймаутЧтения = 20; - Команда = "list"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("wtout", ТаймаутЗаписи); - Опции.Вставить("rtout", ТаймаутЧтения); - - ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); - - Опции.Вставить("exec", Команда); - Опции.Вставить("conn", ПараметрыСоединения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "ВыполнитьКоманду", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьКоманду", "RCON"); - OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); - -КонецПроцедуры - -#КонецОбласти - -#Область Ollama - -Процедура CLI_Ollama_ПолучитьОтвет(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Промпт = "What is 1C:Enterprise?"; - Модель = "tinyllama"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("prompt" , Промпт); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОтвет", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaОтвет(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьОтветВКонтексте(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Модель = "tinyllama"; - - МассивСообщений = Новый Массив; - - Вопрос1 = Новый Структура("role,content", "user", "What is 1C:Enterprise?"); - Вопрос2 = Новый Структура("role,content", "user", "When the first version was released?"); // Вопрос без конкретики - - // Добавляем первый вопрос в контекст - МассивСообщений.Добавить(Вопрос1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("msgs" , МассивСообщений); - Опции.Вставить("headers", ДопЗаголовки); - - Ответ1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Ответ1, "ПолучитьОтветВКонтексте (предварительный)", "Ollama"); // SKIP - OPI_ПолучениеДанныхТестов.Проверка_OllamaСообщение(Ответ1); // SKIP - - МассивСообщений.Добавить(Ответ1["message"]); // Добавляем ответ на первый вопрос в контекст - МассивСообщений.Добавить(Вопрос2); // Добавляем второй вопрос в контекст - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("msgs" , МассивСообщений); - Опции.Вставить("headers", ДопЗаголовки); - - Ответ2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); - - МассивСообщений.Добавить(Ответ2["message"]); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Ответ2, "ПолучитьОтветВКонтексте", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaСообщение(Ответ2); - -КонецПроцедуры - -Процедура CLI_Ollama_ЗагрузитьМодельВПамять(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "tinyllama"; - Период = 500; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("keep" , Период); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ЗагрузитьМодельВПамять", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьМодельВПамять", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaЗагрузкаВыгрузка(Результат, Ложь); - -КонецПроцедуры - -Процедура CLI_Ollama_ВыгрузитьМодельИзПамяти(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "tinyllama"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ВыгрузитьМодельИзПамяти", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыгрузитьМодельИзПамяти", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaЗагрузкаВыгрузка(Результат, Истина); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровЗапроса", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровЗапроса (пустая)", "Ollama"); - - Для Каждого Элемент Из Результат Цикл - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровВКонтексте", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровВКонтексте (пустая)", "Ollama"); - - Для Каждого Элемент Из Результат Цикл - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("role", "user"); - Опции.Вставить("text", "Hello!"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруСообщенияКонтекста", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСообщенияКонтекста", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_СкачатьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "tinyllama"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьМодель", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaУспех(Результат); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , "bayselonarrend/tinyllama:latest"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьМодель (bay)", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaУспех(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_УдалитьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "mario"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМодель", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaКод(Результат); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , "library/tinyllama:latest"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМодель (tiny)", "Ollama"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , "bayselonarrend/tinyllama:latest"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМодель (tiny, bay)", "Ollama"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМодель (список)", "Ollama"); - - OPI_ПолучениеДанныхТестов.Проверка_OllamaМодели(Результат); - OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["models"], 0); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьВерсию(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьВерсию", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВерсию", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaВерсия(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьПредставления(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("Why is the sky blue?"); - МассивСтрок.Добавить("Why is the grass green?"); - - Модель = "tinyllama"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("input" , МассивСтрок); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьПредставления", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПредставления", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaПривязки(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровПредставлений", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровПредставлений (пустая)", "Ollama"); - - Для Каждого Элемент Из Результат Цикл - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_Ollama_СоздатьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "mario"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Настройки = Новый Структура("from,system", "tinyllama", "You are Mario from Super Mario Bros."); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("settings", Настройки); - Опции.Вставить("headers" , ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СоздатьМодель", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьМодель", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaУспех(Результат); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("prompt" , "How are you?"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьМодель (запрос)", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaОтвет(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьИнформациюОМодели(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "mario"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("verbose", Ложь); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьИнформациюОМодели", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОМодели", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaИнформацияМодели(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьСписокМоделей(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокМоделей", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaМодели(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокЗапущенныхМоделей", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗапущенныхМоделей", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaМодели(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_КопироватьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "mario"; - Имя = "mario2"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("name" , Имя); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "КопироватьМодель", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "КопироватьМодель", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaКод(Результат); - - OPI_Ollama.УдалитьМодель(URL, Имя, ДопЗаголовки); - -КонецПроцедуры - -Процедура CLI_Ollama_ОтправитьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "bayselonarrend/tinyllama:latest"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьМодель", Опции); - - // END - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМодель", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaУспех(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекМодели", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекМодели (пустая)", "Ollama"); - - Для Каждого Элемент Из Результат Цикл - - OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура CLI_Ollama_ОтправитьBlob(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка, Истина); // SKIP - Рандом = ПолучитьДвоичныеДанныеИзСтроки(Строка(Новый УникальныйИдентификатор)); // SKIP - Картинка = OPI_Инструменты.СклеитьДанные(Картинка, Рандом); // SKIP - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("data" , Картинка); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьBlob", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьBlob", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaКод(Результат); - -КонецПроцедуры - -Процедура CLI_Ollama_ПроверитьBlob(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - SHA256 = ПараметрыФункции["Ollama_Blob"]; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("digest" , SHA256); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьBlob", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaКод(Результат); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("digest" , "yoyoyo"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); - - OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьBlob (ошибка)", "Ollama"); - OPI_ПолучениеДанныхТестов.Проверка_OllamaОшибка(Результат); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#КонецОбласти +// OneScript: ./OInt/tests/Modules/internal/OPI_ТестыCLI.os + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable + +// Раскомментировать, если выполняется OneScript +#Использовать "../../../tools" +#Использовать "../../../core" +#Использовать asserts + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯксCLI(); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертсCLI(); + +КонецФункции + +#Область ЗапускаемыеТесты + +#Область Telegram + +Процедура CLI_Телеграм_ПолучитьИнформациюБота() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + CLI_Telegram_ПолучитьИнформациюБота(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ПолучитьОбновления() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + CLI_Telegram_УдалитьWebhook(ПараметрыТеста); + CLI_Telegram_ПолучитьОбновления(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_УстановитьWebhook() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_URL" , ПараметрыТеста); + + CLI_Telegram_УстановитьWebhook(ПараметрыТеста); + CLI_Telegram_УдалитьWebhook(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьТекстовоеСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + + CLI_Telegram_ОтправитьТекстовоеСообщение(ПараметрыТеста); + CLI_Telegram_ЗаменитьТекстСообщения(ПараметрыТеста); + CLI_Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыТеста); + CLI_Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьКартинку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_Telegram_ОтправитьКартинку(ПараметрыТеста); + CLI_Telegram_ЗаменитьОписаниеСообщения(ПараметрыТеста); + CLI_Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьВидео() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + CLI_Telegram_ОтправитьВидео(ПараметрыТеста); + CLI_Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьАудио() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); + + CLI_Telegram_ОтправитьАудио(ПараметрыТеста); + CLI_Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьДокумент() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + CLI_Telegram_ОтправитьДокумент(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьГифку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); + + CLI_Telegram_ОтправитьГифку(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьМедиагруппу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + CLI_Telegram_ОтправитьМедиагруппу(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьМестоположение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Long" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Lat" , ПараметрыТеста); + + CLI_Telegram_ОтправитьМестоположение(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьКонтакт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Name" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Surname" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Phone" , ПараметрыТеста); + + CLI_Telegram_ОтправитьКонтакт(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ОтправитьОпрос() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + CLI_Telegram_ОтправитьОпрос(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ПереслатьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); + + CLI_Telegram_ПереслатьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_БанРазбан() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); + + CLI_Telegram_Бан(ПараметрыТеста); + CLI_Telegram_Разбан(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_СоздатьСсылкуПриглашение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + CLI_Telegram_СоздатьСсылкуПриглашение(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ЗакрепитьОткрепитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); + + CLI_Telegram_ЗакрепитьСообщение(ПараметрыТеста); + CLI_Telegram_ОткрепитьСообщение(ПараметрыТеста); + CLI_Telegram_УдалитьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ПолучитьЧислоУчастников() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + CLI_Telegram_ПолучитьЧислоУчастников(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ПолучитьСписокАватаровФорума() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + CLI_Telegram_ПолучитьСписокИконокАватаров(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_СоздатьУдалитьТемуФорума() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + + CLI_Telegram_СоздатьТемуФорума(ПараметрыТеста); + CLI_Telegram_ИзменитьТемуФорума(ПараметрыТеста); + CLI_Telegram_ЗакрытьТемуФорума(ПараметрыТеста); + CLI_Telegram_ОткрытьТемуФорума(ПараметрыТеста); + CLI_Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыТеста); + CLI_Telegram_УдалитьТемуФорума(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_СкрытьПоказатьГлавнуюТему() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + + CLI_Telegram_СкрытьГлавнуюТемуФорума(ПараметрыТеста); + CLI_Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Телеграм_ИзменитьИмяГлавнойТемы() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + + CLI_Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область VK + +Процедура CLI_ВК_СоздатьСсылкуТокена() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AppID", ПараметрыТеста); + + CLI_VK_СоздатьСсылкуПолученияТокена(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_СоздатьУдалитьПост() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + CLI_VK_СоздатьПост(ПараметрыТеста); + CLI_VK_УдалитьПост(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_СоздатьСоставнойПост() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + CLI_VK_СоздатьСоставнойПост(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_СоздатьОпрос() Экспорт + + CLI_VK_СоздатьОпрос(); + +КонецПроцедуры + +Процедура CLI_ВК_СохранитьУдалитьКартинку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_VK_СоздатьАльбом(ПараметрыТеста); + CLI_VK_СохранитьКартинкуВАльбом(ПараметрыТеста); + CLI_VK_УдалитьКартинку(ПараметрыТеста); + CLI_VK_УдалитьАльбом(ПараметрыТеста); + CLI_VK_ЗагрузитьФотоНаСервер(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_СоздатьИсторию() Экспорт + + ПараметрыТеста = Новый Соответствие; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_VK_СоздатьИсторию(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_МетодыОбсуждений() Экспорт + + ПараметрыТеста = Новый Структура; + Параметры = ПолучитьПараметрыВК(); + + CLI_VK_СоздатьОбсуждение(ПараметрыТеста); + CLI_VK_ЗакрытьОбсуждение(ПараметрыТеста); + CLI_VK_ОткрытьОбсуждение(ПараметрыТеста); + CLI_VK_НаписатьВОбсуждение(ПараметрыТеста); + + OPI_VK.ЗакрытьОбсуждение(ПараметрыТеста["VK_ConvID"], Истина, Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ВК_ЛайкРепостКоммент() Экспорт + + ПараметрыТеста = Новый Структура(); + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + + Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); + ИДПоста = Результат["response"]["post_id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID", ПараметрыТеста); + + CLI_VK_ПоставитьЛайк(ПараметрыТеста); + CLI_VK_СделатьРепост(ПараметрыТеста); + CLI_VK_НаписатьКомментарий(ПараметрыТеста); + CLI_VK_СократитьСсылку(ПараметрыТеста); + + OPI_VK.УдалитьПост(ИДПоста , Параметры); + OPI_VK.УдалитьПост(ПараметрыТеста["Repost"], Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ВК_ПолучитьСтатистику() Экспорт + + ПараметрыТеста = Новый Структура(); + + CLI_VK_ПолучитьСтатистику(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ВК_ПолучитьСтатистикуПостов() Экспорт + + ПараметрыТеста = Новый Структура(); + + CLI_VK_ПолучитьСтатистикуПостов(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ВК_СоздатьРекламнуюКампанию() Экспорт + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + + Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); + ИДПоста = Результат["response"]["post_id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); + + ПараметрыТеста = Новый Структура(); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AdsCabinetID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID" , ПараметрыТеста); + + CLI_VK_СоздатьРекламнуюКампанию(ПараметрыТеста); + CLI_VK_СоздатьРекламноеОбъявление(ПараметрыТеста); + CLI_VK_ПриостановитьРекламноеОбъявление(ПараметрыТеста); + CLI_VK_ПолучитьСписокРекламныхКатегорий(ПараметрыТеста); + + OPI_VK.УдалитьПост(ИДПоста, Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ВК_ОтправитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_UserID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_CommunityToken", ПараметрыТеста); + + CLI_VK_СформироватьКлавиатуру(ПараметрыТеста); + CLI_VK_НаписатьСообщение(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ВК_ПолучитьКатегорииТоваров() Экспорт + + ПараметрыТеста = Новый Структура; + + CLI_VK_ПолучитьСписокКатегорийТоваров(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ВК_СоздатьТоварПодборку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + CLI_VK_СоздатьПодборкуТоваров(ПараметрыТеста); + CLI_VK_ИзменитьПодборкуТоваров(ПараметрыТеста); + CLI_VK_ПолучитьПодборкиПоИД(ПараметрыТеста); + CLI_VK_ДобавитьТовар(ПараметрыТеста); + CLI_VK_ИзменитьТовар(ПараметрыТеста); + CLI_VK_ДобавитьТоварВПодборку(ПараметрыТеста); + CLI_VK_УдалитьТоварИзПодборки(ПараметрыТеста); + CLI_VK_УдалитьТовар(ПараметрыТеста); + CLI_VK_УдалитьПодборку(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ВК_СоздатьТоварСоСвойствами() Экспорт + + Параметры = ПолучитьПараметрыВК(); + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + CLI_VK_ПолучитьОписаниеТовара(ПараметрыТеста); + CLI_VK_СоздатьСвойствоТовара(ПараметрыТеста); + CLI_VK_ИзменитьСвойствоТовара(ПараметрыТеста); + CLI_VK_ДобавитьВариантСвойстваТовара(ПараметрыТеста); + CLI_VK_ИзменитьВариантСвойстваТовара(ПараметрыТеста); + CLI_VK_СоздатьТоварСоСвойством(ПараметрыТеста); + CLI_VK_ПолучитьТоварыПоИД(ПараметрыТеста); + CLI_VK_СгруппироватьТовары(ПараметрыТеста); + + OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID2"], Параметры); + OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID3"], Параметры); + + CLI_VK_УдалитьВариантСвойстваТовара(ПараметрыТеста); + CLI_VK_УдалитьСвойствоТовара(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_ПолучитьСписокТоваров() Экспорт + + ПараметрыТеста = Новый Структура; + + CLI_VK_ПолучитьСписокТоваров(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_ПолучитьСписокПодборок() Экспорт + + ПараметрыТеста = Новый Структура; + + CLI_VK_ПолучитьСписокПодборок(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_ПолучитьСписокСвойств() Экспорт + + ПараметрыТеста = Новый Структура; + + CLI_VK_ПолучитьСписокСвойств(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_ПолучитьСписокЗаказов() Экспорт + + ПараметрыТеста = Новый Структура; + + CLI_VK_ПолучитьСписокЗаказов(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВК_ЗагрузитьВидео() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video", ПараметрыТеста); + + CLI_VK_ЗагрузитьВидеоНаСервер(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область YandexDisk + +Процедура CLI_ЯДиск_ПолучитьИнформациюОДиске() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + CLI_YandexDisk_ПолучитьИнформациюОДиске(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ЯДиск_СоздатьПапку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + CLI_YandexDisk_СоздатьПапку(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_YandexDisk_ЗагрузитьФайлПоURL(ПараметрыТеста); + CLI_YandexDisk_ПолучитьОбъект(ПараметрыТеста); + CLI_YandexDisk_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ЯДиск_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_YandexDisk_ЗагрузитьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ЯДиск_СоздатьКопиюОбъекта() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + CLI_YandexDisk_СоздатьКопиюОбъекта(ПараметрыТеста); + + ПутьКопии = ПараметрыТеста["YandexDisk_CopyFilePath"]; + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьКопии , Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ЯДиск_ПолучитьСсылкуНаСкачивание() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, Путь, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_PathForLink", Путь); + ПараметрыТеста.Вставить("YandexDisk_PathForLink", Путь); + + CLI_YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыТеста); + CLI_YandexDisk_СкачатьФайл(ПараметрыТеста); + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); + +КонецПроцедуры + +Процедура CLI_ЯДиск_ПолучитьСписокФайлов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + CLI_YandexDisk_ПолучитьСписокФайлов(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ЯДиск_ПереместитьОбъект() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + CLI_YandexDisk_ПереместитьОбъект(ПараметрыТеста); + + ПутьНового = ПараметрыТеста["YandexDisk_NewFilePath"]; + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьНового , Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ЯДиск_ДействияПубличныхОбъектов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + CLI_YandexDisk_ОпубликоватьОбъект(ПараметрыТеста); + CLI_YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыТеста); + CLI_YandexDisk_ПолучитьПубличныйОбъект(ПараметрыТеста); + CLI_YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыТеста); + CLI_YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыТеста); + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ЯДиск_ПолучитьСписокОпубликованных() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + CLI_YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область Viber + +Процедура CLI_Вайбер_ПолучениеИнформации() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); + + CLI_Viber_ПолучитьИнформациюОКанале(ПараметрыТеста); + CLI_Viber_ПолучитьДанныеПользователя(ПараметрыТеста); + CLI_Viber_ПолучитьОнлайнПользователей(ПараметрыТеста); + CLI_Viber_УстановитьWebhook(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Вайбер_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_UserID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + CLI_Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыТеста); + + Возврат; + + //@skip-check unreachable-statement + // BSLLS:UnreachableCode-off + + CLI_Viber_ОтправитьТекстовоеСообщение(ПараметрыТеста); + CLI_Viber_ОтправитьКартинку(ПараметрыТеста); + CLI_Viber_ОтправитьФайл(ПараметрыТеста); + CLI_Viber_ОтправитьКонтакт(ПараметрыТеста); + CLI_Viber_ОтправитьЛокацию(ПараметрыТеста); + CLI_Viber_ОтправитьСсылку(ПараметрыТеста); + + // BSLLS:UnreachableCode-on + +КонецПроцедуры + +#КонецОбласти + +#Область GoogleWorkspace + +Процедура CLI_ГВ_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + + CLI_GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыТеста); + CLI_GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыТеста); + CLI_GoogleWorkspace_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область GoogleCalendar + +Процедура CLI_ГК_ПолучитьСписокКалендарей() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + CLI_GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ГК_СоздатьУдалитьКалендарь() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + CLI_GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); + CLI_GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыТеста); + CLI_GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыТеста); + CLI_GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыТеста); + CLI_GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыТеста); + CLI_GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыТеста); + CLI_GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыТеста); + CLI_GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыТеста); + CLI_GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ГК_СоздатьУдалитьСобытие() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_NewCalendarID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_CalendarID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + CLI_GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); + CLI_GoogleCalendar_СоздатьСобытие(ПараметрыТеста); + CLI_GoogleCalendar_ИзменитьСобытие(ПараметрыТеста); + CLI_GoogleCalendar_ПолучитьСобытие(ПараметрыТеста); + CLI_GoogleCalendar_ПереместитьСобытие(ПараметрыТеста); + CLI_GoogleCalendar_ПолучитьСписокСобытий(ПараметрыТеста); + CLI_GoogleCalendar_УдалитьСобытие(ПараметрыТеста); + CLI_GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); + CLI_GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +#КонецОбласти + +#Область GoogleDrive + +Процедура CLI_ГД_ПолучитьСписокКаталогов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + CLI_GoogleDrive_ПолучитьСписокКаталогов(ПараметрыТеста); + CLI_GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ГД_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); + + CLI_GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); + CLI_GoogleDrive_СкопироватьОбъект(ПараметрыТеста); + CLI_GoogleDrive_СкачатьФайл(ПараметрыТеста); + CLI_GoogleDrive_ОбновитьФайл(ПараметрыТеста); + CLI_GoogleDrive_ПолучитьСписокФайлов(ПараметрыТеста); + CLI_GoogleDrive_УдалитьОбъект(ПараметрыТеста); + CLI_GoogleDrive_ПолучитьОписаниеФайла(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_ГД_СоздатьУдалитьКомментарий() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); + + CLI_GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); + + CLI_GoogleDrive_СоздатьКомментарий(ПараметрыТеста); + CLI_GoogleDrive_ПолучитьКомментарий(ПараметрыТеста); + CLI_GoogleDrive_ПолучитьСписокКомментариев(ПараметрыТеста); + CLI_GoogleDrive_УдалитьКомментарий(ПараметрыТеста); + + CLI_GoogleDrive_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ГД_СоздатьКаталог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + + CLI_GoogleDrive_СоздатьПапку(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область GoogleSheets + +Процедура CLI_ГТ_СоздатьТаблицу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + CLI_GoogleSheets_СоздатьКнигу(ПараметрыТеста); + CLI_GoogleSheets_ПолучитьКнигу(ПараметрыТеста); + CLI_GoogleSheets_КопироватьЛист(ПараметрыТеста); + CLI_GoogleSheets_ДобавитьЛист(ПараметрыТеста); + CLI_GoogleSheets_УдалитьЛист(ПараметрыТеста); + CLI_GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыТеста); + CLI_GoogleSheets_ПолучитьТаблицу(ПараметрыТеста); + + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); + +КонецПроцедуры + +Процедура CLI_ГТ_ЗаполнитьОчиститьЯчейки() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token" , ПараметрыТеста); + + CLI_GoogleSheets_СоздатьКнигу(ПараметрыТеста); + CLI_GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыТеста); + CLI_GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыТеста); + CLI_GoogleSheets_ОчиститьЯчейки(ПараметрыТеста); + + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); + +КонецПроцедуры + +#КонецОбласти + +#Область Twitter + +Процедура CLI_Твиттер_ДанныеАккаунта() Экспорт + + ПараметрыТеста = Новый Структура; + + CLI_Twitter_ПолучитьТокен(ПараметрыТеста); + CLI_Twitter_ПолучитьСсылкуАвторизации(ПараметрыТеста); + CLI_Twitter_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Твиттер_Твиты() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + CLI_Twitter_СоздатьТекстовыйТвит(ПараметрыТеста); + CLI_Twitter_ЗагрузитьМассивВложений(ПараметрыТеста); + CLI_Twitter_СоздатьТвитВидео(ПараметрыТеста); + CLI_Twitter_СоздатьТвитКартинки(ПараметрыТеста); + CLI_Twitter_СоздатьТвитГифки(ПараметрыТеста); + CLI_Twitter_СоздатьТвитОпрос(ПараметрыТеста); + CLI_Twitter_СоздатьПроизвольныйТвит(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область Notion + +Процедура CLI_НоушнАпи_СоздатьСтраницу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + CLI_Notion_СоздатьСтраницу(ПараметрыТеста); + CLI_Notion_ПолучитьСтраницу(ПараметрыТеста); + CLI_Notion_ИзменитьСвойстваСтраницы(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_НоушнАпи_СоздатьИзменитьБазу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_Notion_СоздатьБазуДанных(ПараметрыТеста); + CLI_Notion_ИзменитьСвойстваБазы(ПараметрыТеста); + CLI_Notion_ПолучитьБазуДанных(ПараметрыТеста); + CLI_Notion_СоздатьСтраницуВБазу(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_НоушнАпи_СоздатьУдалитьБлок() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Block" , ПараметрыТеста); + + CLI_Notion_ВернутьБлок(ПараметрыТеста); + CLI_Notion_СоздатьБлок(ПараметрыТеста); + CLI_Notion_ВернутьДочерниеБлоки(ПараметрыТеста); + CLI_Notion_УдалитьБлок(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_НоушнАпи_ПолучитьПользователей() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_User" , ПараметрыТеста); + + CLI_Notion_СписокПользователей(ПараметрыТеста); + CLI_Notion_ПолучитьДанныеПользователя(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область Slack + +Процедура CLI_Слак_ПолучитьИнформацию() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); + + CLI_Slack_ПолучитьИнформациюОБоте(ПараметрыТеста); + CLI_Slack_ПолучитьСписокПользователей(ПараметрыТеста); + CLI_Slack_ПолучитьСписокРабочихОбластей(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Слак_ОтправитьУдалитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + CLI_Slack_ОтправитьСообщение(ПараметрыТеста); + CLI_Slack_ИзменитьСообщение(ПараметрыТеста); + CLI_Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыТеста); + CLI_Slack_ПолучитьСсылкуНаСообщение(ПараметрыТеста); + CLI_Slack_УдалитьСообщение(ПараметрыТеста); + CLI_Slack_ОтправитьЭфемерноеСообщение(ПараметрыТеста); + CLI_Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыТеста); + CLI_Slack_СформироватьБлокКартинку(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Слак_СоздатьАрхивироватьКанал() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + CLI_Slack_СоздатьКанал(ПараметрыТеста); + CLI_Slack_УстановитьТемуКанала(ПараметрыТеста); + CLI_Slack_УстановитьЦельКанала(ПараметрыТеста); + CLI_Slack_ПолучитьКанал(ПараметрыТеста); + CLI_Slack_ПригласитьПользователейВКанал(ПараметрыТеста); + CLI_Slack_ВыгнатьПользователяИзКанала(ПараметрыТеста); + CLI_Slack_ПолучитьИсториюКанала(ПараметрыТеста); + CLI_Slack_ПолучитьСписокПользователейКанала(ПараметрыТеста); + CLI_Slack_ПокинутьКанал(ПараметрыТеста); + CLI_Slack_ВступитьВКанал(ПараметрыТеста); + CLI_Slack_ПереименоватьКанал(ПараметрыТеста); + CLI_Slack_АрхивироватьКанал(ПараметрыТеста); + CLI_Slack_ПолучитьСписокКаналов(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Слак_ОткрытьЗакрытьДиалог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + CLI_Slack_ОткрытьДиалог(ПараметрыТеста); + CLI_Slack_ЗакрытьДиалог(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Слак_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + CLI_Slack_ПолучитьСписокФайлов(ПараметрыТеста); + CLI_Slack_ЗагрузитьФайл(ПараметрыТеста); + CLI_Slack_СделатьФайлПубличным(ПараметрыТеста); + CLI_Slack_СделатьФайлПриватным(ПараметрыТеста); + CLI_Slack_ПолучитьДанныеФайла(ПараметрыТеста); + CLI_Slack_УдалитьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Слак_ЗагрузитьУдалитьВФ() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + CLI_Slack_ПолучитьСписокВнешнихФайлов(ПараметрыТеста); + CLI_Slack_ДобавитьВнешнийФайл(ПараметрыТеста); + CLI_Slack_ПолучитьВнешнийФайл(ПараметрыТеста); + CLI_Slack_ОтправитьВнешнийФайл(ПараметрыТеста); + CLI_Slack_УдалитьВнешнийФайл(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область Airtable + +Процедура CLI_АТ_СоздатьБазу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Workspace", ПараметрыТеста); + + CLI_Airtable_СоздатьБазу(ПараметрыТеста); + CLI_Airtable_ПолучитьТаблицыБазы(ПараметрыТеста); + CLI_Airtable_ПолучитьСписокБаз(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_АТ_СоздатьТаблицу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); + + CLI_Airtable_ПолучитьПолеНомера(ПараметрыТеста); + CLI_Airtable_ПолучитьПолеСтроковое(ПараметрыТеста); + CLI_Airtable_ПолучитьПолеВложения(ПараметрыТеста); + CLI_Airtable_ПолучитьПолеФлажка(ПараметрыТеста); + CLI_Airtable_ПолучитьПолеДаты(ПараметрыТеста); + CLI_Airtable_ПолучитьПолеТелефона(ПараметрыТеста); + CLI_Airtable_ПолучитьПолеПочты(ПараметрыТеста); + CLI_Airtable_ПолучитьПолеСсылки(ПараметрыТеста); + CLI_Airtable_СоздатьТаблицу(ПараметрыТеста); + CLI_Airtable_ИзменитьТаблицу(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_АТ_СоздатьПоле() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); + + CLI_Airtable_СоздатьПоле(ПараметрыТеста); + CLI_Airtable_ИзменитьПоле(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_АТ_СоздатьУдалитьЗаписи() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); + + CLI_Airtable_СоздатьЗаписи(ПараметрыТеста); + CLI_Airtable_ПолучитьЗапись(ПараметрыТеста); + CLI_Airtable_СоздатьКомментарий(ПараметрыТеста); + CLI_Airtable_ИзменитьКомментарий(ПараметрыТеста); + CLI_Airtable_ПолучитьКомментарии(ПараметрыТеста); + CLI_Airtable_УдалитьКомментарий(ПараметрыТеста); + CLI_Airtable_ПолучитьСписокЗаписей(ПараметрыТеста); + CLI_Airtable_УдалитьЗаписи(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область Dropbox + +Процедура CLI_ДропБокс_ПолучитьОбновитьТокен() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appkey" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appsecret", ПараметрыТеста); + + CLI_Dropbox_ПолучитьСсылкуАвторизации(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Code", ПараметрыТеста); + + CLI_Dropbox_ПолучитьТокен(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Refresh", ПараметрыТеста); + + CLI_Dropbox_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ДропБокс_ЗагрузитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_Dropbox_ЗагрузитьФайл(ПараметрыТеста); + CLI_Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); + CLI_Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыТеста); + CLI_Dropbox_ВосстановитьОбъектКВерсии(ПараметрыТеста); + CLI_Dropbox_ПолучитьПревью(ПараметрыТеста); + CLI_Dropbox_СкачатьФайл(ПараметрыТеста); + CLI_Dropbox_ПереместитьОбъект(ПараметрыТеста); + CLI_Dropbox_КопироватьОбъект(ПараметрыТеста); + CLI_Dropbox_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ДропБокс_СоздатьКаталог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + CLI_Dropbox_СоздатьПапку(ПараметрыТеста); + CLI_Dropbox_СкачатьПапку(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ДропБокс_ПолучитьСписокФайловПапки() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + CLI_Dropbox_ПолучитьСписокФайловПапки(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ДропБокс_ЗагрузитьФайлПоURL() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + CLI_Dropbox_ЗагрузитьФайлПоURL(ПараметрыТеста); + CLI_Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ДропБокс_СоздатьУдалитьТег() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + CLI_Dropbox_ДобавитьТег(ПараметрыТеста); + CLI_Dropbox_ПолучитьСписокТегов(ПараметрыТеста); + CLI_Dropbox_УдалитьТег(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ДропБокс_ПолучитьАккаунт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + CLI_Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); + CLI_Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ДропБокс_РаботаСДоступами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_OtherUser", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_FileID" , ПараметрыТеста); + + CLI_Dropbox_ДобавитьПользователейКФайлу(ПараметрыТеста); + CLI_Dropbox_ОпубликоватьПапку(ПараметрыТеста); + CLI_Dropbox_ДобавитьПользователейКПапке(ПараметрыТеста); + CLI_Dropbox_ОтменитьПубликациюПапки(ПараметрыТеста); + CLI_Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыТеста); + CLI_Dropbox_ОтменитьПубликациюФайла(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область VkTeams + +Процедура CLI_ВКТ_ОбщиеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_FileID", ПараметрыТеста); + + CLI_VkTeams_ПроверитьТокен(ПараметрыТеста); + CLI_VkTeams_ПолучитьСобытия(ПараметрыТеста); + CLI_VKTeams_ПолучитьИнформациюОФайле(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВКТ_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_MessageID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio2" , ПараметрыТеста); + + CLI_VkTeams_ОтправитьТекстовоеСообщение(ПараметрыТеста); + OPI_Инструменты.Пауза(60); + + CLI_VKTeams_ПереслатьСообщение(ПараметрыТеста); + CLI_VKTeams_ОтправитьФайл(ПараметрыТеста); + CLI_VKTeams_ПереслатьФайл(ПараметрыТеста); + CLI_VKTeams_ИзменитьТекстСообщения(ПараметрыТеста); + CLI_VKTeams_ЗакрепитьСообщение(ПараметрыТеста); + CLI_VKTeams_ОткрепитьСообщение(ПараметрыТеста); + CLI_VKTeams_УдалитьСообщение(ПараметрыТеста); + CLI_VKTeams_ОтправитьГолосовоеСообщение(ПараметрыТеста); + CLI_VKTeams_ПереслатьГолосовоеСообщение(ПараметрыТеста); + CLI_VKTeams_СформироватьКнопкуДействия(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ВКТ_УправлениеЧатами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture3" , ПараметрыТеста); + + CLI_VKTeams_ИсключитьПользователейЧата(ПараметрыТеста); + CLI_VKTeams_ИзменитьАватарЧата(ПараметрыТеста); + CLI_VKTeams_ПолучитьИнформациюОЧате(ПараметрыТеста); + CLI_VKTeams_ПолучитьАдминистраторовЧата(ПараметрыТеста); + CLI_VKTeams_ПолучитьПользователейЧата(ПараметрыТеста); + CLI_VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыТеста); + CLI_VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыТеста); + CLI_VKTeams_ЗаблокироватьПользователяЧата(ПараметрыТеста); + CLI_VKTeams_РазблокироватьПользователяЧата(ПараметрыТеста); + CLI_VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыТеста); + CLI_VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыТеста); + CLI_VKTeams_УстановитьЗаголовокЧата(ПараметрыТеста); + CLI_VKTeams_УстановитьОписаниеЧата(ПараметрыТеста); + CLI_VKTeams_УстановитьПравилаЧата(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область OzonSeller + +Процедура CLI_ОзонАПИ_АтрибутыИХарактеристики() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); + + CLI_Ozon_ПолучитьДеревоКатегорийИТиповТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьХарактеристикиКатегории(ПараметрыТеста); + CLI_Ozon_ПолучитьЗначенияХарактеристики(ПараметрыТеста); + CLI_Ozon_НайтиЗначенияХарактеристики(ПараметрыТеста); + CLI_Ozon_ПолучитьЛимитыРаботыСТоварами(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ОзонАПИ_ЗагрузкаИОбновлениеТоваров() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + CLI_Ozon_ПолучитьСтруктуруТовара(ПараметрыТеста); + + // TODO: Вернуть позже + Возврат; + + CLI_Ozon_СоздатьОбновитьТовары(ПараметрыТеста); + CLI_Ozon_ПолучитьСтатусДобавленияТовара(ПараметрыТеста); + CLI_Ozon_ДобавитьВидеоТовара(ПараметрыТеста); + CLI_Ozon_ДобавитьВидеообложкуТовара(ПараметрыТеста); + CLI_Ozon_ДополнитьКомплексныйАтрибут(ПараметрыТеста); + CLI_Ozon_СоздатьТоварыПоOzonID(ПараметрыТеста); + CLI_Ozon_ПолучитьСокращеннуюСтруктуруТовара(ПараметрыТеста); + CLI_Ozon_ПолучитьСтруктуруОбновленияХарактеристик(ПараметрыТеста); + CLI_Ozon_ОбновитьХарактеристикиТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьСтруктуруФильтраТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьСписокТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьОписанияХарактеристикТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьИнформациюОТоварах(ПараметрыТеста); + CLI_Ozon_ПолучитьКонтентРейтингТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьОписаниеТовара(ПараметрыТеста); + CLI_Ozon_ОбновитьИзображенияТовара(ПараметрыТеста); + CLI_Ozon_ПроверитьЗагрузкуИзображенийТоваров(ПараметрыТеста); + CLI_Ozon_ИзменитьАртикулыТоваров(ПараметрыТеста); + CLI_Ozon_АрхивироватьТовары(ПараметрыТеста); + CLI_Ozon_РазархивироватьТовары(ПараметрыТеста); + CLI_Ozon_ЗагрузитьКодыАктивацииТовара(ПараметрыТеста); + CLI_Ozon_ПолучитьСтатусДобавленияКодов(ПараметрыТеста); + CLI_Ozon_ПолучитьКоличествоПодписчиковТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьСвязанныеSKU(ПараметрыТеста); + CLI_Ozon_УдалитьТоварыБезSKU(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ОзонАПИ_Штрихкоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ProductID", ПараметрыТеста); + + // TODO: Вернуть позже + Возврат; + + CLI_Ozon_ПривязатьШтрихкоды(ПараметрыТеста); + CLI_Ozon_СоздатьШтрихкоды(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ОзонАПИ_ЦеныИОстаткиТоваров() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ProductID", ПараметрыТеста); + + CLI_Ozon_ПолучитьКоличествоТоваров(ПараметрыТеста); + CLI_Ozon_ОбновитьЦеныТоваров(ПараметрыТеста); + CLI_Ozon_ОбновитьКоличествоТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьЦеныТоваров(ПараметрыТеста); + CLI_Ozon_ПолучитьИнформациюОбУценке(ПараметрыТеста); + CLI_Ozon_УстановитьСкидкуНаУцененныйТовар(ПараметрыТеста); + CLI_Ozon_ПолучитьСтруктуруОстатковТовара(ПараметрыТеста); + CLI_Ozon_ПолучитьСтруктуруЦеныТовара(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ОзонАПИ_РаботаСоСкладами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); + + CLI_Ozon_ПолучитьСписокСкладов(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ОзонАПИ_РаботаСАкциями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); + + CLI_Ozon_ПолучитьСписокАкций(ПараметрыТеста); + CLI_Ozon_ПолучитьУчаствующиеТоварыАкции(ПараметрыТеста); + CLI_Ozon_ПолучитьДоступныеТоварыАкции(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ОзонАПИ_СхемаFBO() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста); + + CLI_Ozon_ПолучитьСписокКластеров(ПараметрыТеста); + CLI_Ozon_ПолучитьСписокСкладовОтгрузки(ПараметрыТеста); + CLI_Ozon_СоздатьЧерновикЗаявкиFBO(ПараметрыТеста); + CLI_Ozon_ПолучитьЧерновикЗаявкиFBO(ПараметрыТеста); + CLI_Ozon_ПолучитьСтруктуруДопПолейОтправления(ПараметрыТеста); + CLI_Ozon_ПолучитьСтруктуруФильтраОтправлений(ПараметрыТеста); + CLI_Ozon_ПолучитьСписокОтправленийFBO(ПараметрыТеста); + CLI_Ozon_ПолучитьТаймслотыFBO(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область Neocities + +Процедура CLI_НС_РаботаСФайлами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Gif" , ПараметрыТеста); + + CLI_Neocities_ЗагрузитьФайл(ПараметрыТеста); + CLI_Neocities_ЗагрузитьФайлы(ПараметрыТеста); + CLI_Neocities_ПолучитьСписокФайлов(ПараметрыТеста); + CLI_Neocities_УдалитьВыбранныеФайлы(ПараметрыТеста); + CLI_Neocities_СинхронизироватьКаталоги(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_НС_ПолучениеДанных() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Login" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Password", ПараметрыТеста); + + CLI_Neocities_ПолучитьДанныеОСайте(ПараметрыТеста); + CLI_Neocities_ПолучитьТокен(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область Bitrix24 + +Процедура CLI_Б24_РаботаСТокеном() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientSecret", ПараметрыТеста); + + CLI_Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Code", ПараметрыТеста); + + CLI_Bitrix24_ПолучитьТокен(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Refresh", ПараметрыТеста); + + CLI_Bitrix24_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_СерверноеВремя() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + CLI_Bitrix24_СерверноеВремя(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСНовостями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + CLI_Bitrix24_СоздатьНовость(ПараметрыТеста); + CLI_Bitrix24_ИзменитьНовость(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыТеста); + CLI_Bitrix24_ПолучитьНовости(ПараметрыТеста); + CLI_Bitrix24_ДобавитьКомментарийНовости(ПараметрыТеста); + CLI_Bitrix24_ДобавитьПолучателейКНовости(ПараметрыТеста); + CLI_Bitrix24_УдалитьНовость(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСЗадачами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_UserID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыТеста); + CLI_Bitrix24_СоздатьЗадачу(ПараметрыТеста); + CLI_Bitrix24_СоздатьЗависимостьЗадач(ПараметрыТеста); + CLI_Bitrix24_УдалитьЗависимостьЗадач(ПараметрыТеста); + CLI_Bitrix24_ИзменитьЗадачу(ПараметрыТеста); + CLI_Bitrix24_ПолучитьЗадачу(ПараметрыТеста); + CLI_Bitrix24_ОтключитьЗвукЗадачи(ПараметрыТеста); + CLI_Bitrix24_ВключитьЗвукЗадачи(ПараметрыТеста); + CLI_Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыТеста); + CLI_Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыТеста); + CLI_Bitrix24_ДелегироватьЗадачу(ПараметрыТеста); + CLI_Bitrix24_ОтложитьЗадачу(ПараметрыТеста); + CLI_Bitrix24_ЗавершитьЗадачу(ПараметрыТеста); + CLI_Bitrix24_ОтклонитьЗадачу(ПараметрыТеста); + CLI_Bitrix24_ПринятьЗадачу(ПараметрыТеста); + CLI_Bitrix24_ВозобновитьЗадачу(ПараметрыТеста); + CLI_Bitrix24_НачатьВыполнениеЗадачи(ПараметрыТеста); + CLI_Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыТеста); + CLI_Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыТеста); + CLI_Bitrix24_ПриостановитьЗадачу(ПараметрыТеста); + CLI_Bitrix24_ПолучитьИсториюЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСписокЗадач(ПараметрыТеста); + CLI_Bitrix24_ПроверитьДоступКЗадаче(ПараметрыТеста); + CLI_Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыТеста); + CLI_Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыТеста); + CLI_Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыТеста); + CLI_Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыТеста); + CLI_Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыТеста); + + Наименование = "Картинка задачи.jpg"; + Картинка = ПараметрыТеста["Picture"]; + IDПриемника = 3; + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.ЗагрузитьФайлВХранилище(URL, Наименование, Картинка, IDПриемника); + IDФайла = Результат["result"]["ID"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TaskFileID", IDФайла); + ПараметрыТеста.Вставить("Bitrix24_TaskFileID", IDФайла); + + CLI_Bitrix24_ДобавитьФайлВЗадачу(ПараметрыТеста); + + OPI_Bitrix24.УдалитьФайл(URL, IDФайла); + + CLI_Bitrix24_УдалитьЗадачу(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСКомментариями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentsTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_CommentsTaskID", IDЗадачи); + + CLI_Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыТеста); + CLI_Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыТеста); + CLI_Bitrix24_СоздатьРезультатИзКомментария(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСписокРезультатов(ПараметрыТеста); + CLI_Bitrix24_УдалитьРезультатИзКомментария(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьКомменатрийЗадачи(ПараметрыТеста); + CLI_Bitrix24_УдалитьКомментарийЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСДиском() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + CLI_Bitrix24_ПолучитьСписокХранилищ(ПараметрыТеста); + CLI_Bitrix24_ПолучитьХранилищеПриложения(ПараметрыТеста); + CLI_Bitrix24_ПереименоватьХранилище(ПараметрыТеста); + CLI_Bitrix24_ПолучитьХранилище(ПараметрыТеста); + CLI_Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыТеста); + CLI_Bitrix24_ПолучитьИнформациюОФайле(ПараметрыТеста); + CLI_Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыТеста); + CLI_Bitrix24_ПереименоватьФайл(ПараметрыТеста); + CLI_Bitrix24_ПоместитьФайлВКорзину(ПараметрыТеста); + CLI_Bitrix24_ВосстановитьФайл(ПараметрыТеста); + CLI_Bitrix24_СоздатьКаталогВХранилище(ПараметрыТеста); + CLI_Bitrix24_ПереименоватьКаталог(ПараметрыТеста); + CLI_Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыТеста); + CLI_Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыТеста); + CLI_Bitrix24_СоздатьПодкаталог(ПараметрыТеста); + CLI_Bitrix24_ПереместитьФайлВКаталог(ПараметрыТеста); + CLI_Bitrix24_СкопироватьКаталог(ПараметрыТеста); + CLI_Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыТеста); + CLI_Bitrix24_СкопироватьФайл(ПараметрыТеста); + CLI_Bitrix24_УдалитьФайл(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыТеста); + CLI_Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыТеста); + CLI_Bitrix24_ПереместитьКаталог(ПараметрыТеста); + CLI_Bitrix24_ПоместитьКаталогВКорзину(ПараметрыТеста); + CLI_Bitrix24_ВосстановитьКаталог(ПараметрыТеста); + CLI_Bitrix24_УдалитьКаталог(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_УчетРабочегоВремени() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ElapsedTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_ElapsedTaskID", IDЗадачи); + + CLI_Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыТеста); + CLI_Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыТеста); + CLI_Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыТеста); + CLI_Bitrix24_НачатьУчетВремени(ПараметрыТеста); + CLI_Bitrix24_ПриостановитьУчетВремени(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыТеста); + CLI_Bitrix24_ЗавершитьУчетВремени(ПараметрыТеста); + CLI_Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + +КонецПроцедуры + +Процедура CLI_Б24_Канбан() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_KanbanTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_KanbanTaskID", IDЗадачи); + + CLI_Bitrix24_ДобавитьСтадиюКанбана(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтадииКанбана(ПараметрыТеста); + CLI_Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыТеста); + CLI_Bitrix24_ИзменитьСтадиюКанбана(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + + CLI_Bitrix24_УдалитьСтадиюКанбана(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСУведомлениями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + CLI_Bitrix24_СоздатьПерсональноеУведомление(ПараметрыТеста); + CLI_Bitrix24_СоздатьСистемноеУведомление(ПараметрыТеста); + CLI_Bitrix24_УдалитьУведомление(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСПолямиЗадач() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_HookTaskFieldID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_TaskFieldID" , ПараметрыТеста); + + CLI_Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыТеста); + CLI_Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыТеста); + CLI_Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_УправлениеПодразделениями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + CLI_Bitrix24_СоздатьПодразделение(ПараметрыТеста); + CLI_Bitrix24_ПолучитьПодразделения(ПараметрыТеста); + CLI_Bitrix24_ИзменитьПодразделение(ПараметрыТеста); + CLI_Bitrix24_УдалитьПодразделение(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСЧатами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + CLI_Bitrix24_ПолучитьСтатусПользователя(ПараметрыТеста); + CLI_Bitrix24_УстановитьСтатусПользователя(ПараметрыТеста); + CLI_Bitrix24_ПолучитьПользователей(ПараметрыТеста); + CLI_Bitrix24_СоздатьЧат(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + CLI_Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыТеста); + CLI_Bitrix24_ИсключитьПользователяИзЧата(ПараметрыТеста); + CLI_Bitrix24_ДобавитьПользователейВЧат(ПараметрыТеста); + CLI_Bitrix24_ИзменитьЗаголовокЧата(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + CLI_Bitrix24_ИзменитьЦветЧата(ПараметрыТеста); + CLI_Bitrix24_ИзменитьКартинкуЧата(ПараметрыТеста); + CLI_Bitrix24_ОтключитьУведомленияЧата(ПараметрыТеста); + CLI_Bitrix24_ВключитьУведомленияЧата(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + CLI_Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыТеста); + CLI_Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыТеста); + CLI_Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыТеста); + CLI_Bitrix24_ПолучитьДиалог(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + CLI_Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыТеста); + CLI_Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыТеста); + CLI_Bitrix24_ОтправитьСообщение(ПараметрыТеста); + CLI_Bitrix24_ИзменитьСообщение(ПараметрыТеста); + CLI_Bitrix24_ПолучитьБлокКартинки(ПараметрыТеста); + CLI_Bitrix24_ПолучитьБлокФайла(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + CLI_Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыТеста); + CLI_Bitrix24_УдалитьСообщение(ПараметрыТеста); + CLI_Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыТеста); + CLI_Bitrix24_ОтправитьФайл(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + CLI_Bitrix24_ПрочитатьВсе(ПараметрыТеста); + CLI_Bitrix24_СменитьВладельцаЧата(ПараметрыТеста); + CLI_Bitrix24_ПокинутьЧат(ПараметрыТеста); + + CLI_Bitrix24_ПолучитьСтруктуруЧата(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_УправлениеПользователями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + CLI_Bitrix24_ПолучитьТекущегоПользователя(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтурктуруПользователя(ПараметрыТеста); + CLI_Bitrix24_СоздатьПользователя(ПараметрыТеста); + CLI_Bitrix24_НайтиПользователей(ПараметрыТеста); + CLI_Bitrix24_ИзменитьПользователя(ПараметрыТеста); + CLI_Bitrix24_ПолучитьПользователя(ПараметрыТеста); + CLI_Bitrix24_ИзменитьСтатусПользователя(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСЛидами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + CLI_Bitrix24_ПолучитьСписокЛидов(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруЛида(ПараметрыТеста); + CLI_Bitrix24_СоздатьЛид(ПараметрыТеста); + CLI_Bitrix24_ПолучитьЛид(ПараметрыТеста); + CLI_Bitrix24_ИзменитьЛид(ПараметрыТеста); + CLI_Bitrix24_УдалитьЛид(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСоСделками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + CLI_Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруСделки(ПараметрыТеста); + CLI_Bitrix24_СоздатьСделку(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСделку(ПараметрыТеста); + CLI_Bitrix24_ИзменитьСделку(ПараметрыТеста); + CLI_Bitrix24_УдалитьСделку(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСписокСделок(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Б24_РаботаСКалендарями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + CLI_Bitrix24_СоздатьКалендарь(ПараметрыТеста); + CLI_Bitrix24_ИзменитьКалендарь(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСписокКалендарей(ПараметрыТеста); + CLI_Bitrix24_СоздатьСобытиеКалендаря(ПараметрыТеста); + CLI_Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСобытияКалендарей(ПараметрыТеста); + CLI_Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыТеста); + CLI_Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыТеста); + CLI_Bitrix24_УдалитьСобытиеКалендаря(ПараметрыТеста); + CLI_Bitrix24_УдалитьКалендарь(ПараметрыТеста); + CLI_Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); + CLI_Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКаледнаря(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыТеста); + CLI_Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область CDEK + +Процедура CLI_СдэкАПИ_ОбщиеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Account" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Password" , ПараметрыТеста); + + CLI_CDEK_ПолучитьТокен(ПараметрыТеста); + CLI_CDEK_ПолучитьЧекиНаДату(ПараметрыТеста); + CLI_CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыТеста); + CLI_CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыТеста); + CLI_CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыТеста); + CLI_CDEK_ПолучитьСписокОфисов(ПараметрыТеста); + CLI_CDEK_ПолучитьСписокРегионов(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_СдэкАПИ_РаботаСЗаказами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token" , ПараметрыТеста); + + CLI_CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста); + CLI_CDEK_СоздатьЗаказ(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CLI_CDEK_ПолучитьЗаказ(ПараметрыТеста); + CLI_CDEK_ПолучитьЗаказПоНомеру(ПараметрыТеста); + CLI_CDEK_СформироватьКвитанцию(ПараметрыТеста); + CLI_CDEK_СформироватьШтрихкод(ПараметрыТеста); + CLI_CDEK_СоздатьПреалерт(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CLI_CDEK_ПолучитьКвитанцию(ПараметрыТеста); + CLI_CDEK_ПолучитьШтрихкод(ПараметрыТеста); + CLI_CDEK_ПолучитьПреалерт(ПараметрыТеста); + CLI_CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыТеста); + CLI_CDEK_ПолучитьЧекЗаказа(ПараметрыТеста); + CLI_CDEK_ИзменитьЗаказ(ПараметрыТеста); + CLI_CDEK_ОформитьКлиентскийВозврат(ПараметрыТеста); + CLI_CDEK_СоздатьОтказ(ПараметрыТеста); + CLI_CDEK_УдалитьЗаказ(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token", ПараметрыТеста); + + CLI_CDEK_СоздатьЗаказ(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CLI_CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыТеста); + CLI_CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыТеста); + CLI_CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыТеста); + CLI_CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыТеста); + CLI_CDEK_ПолучитьОписаниеДоговоренности(ПараметрыТеста); + CLI_CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыТеста); + CLI_CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CLI_CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыТеста); + CLI_CDEK_УдалитьЗаказ(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область YandexMetrika + +Процедура CLI_ЯМетрика_УправлениеМетками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + CLI_YandexMetrika_СоздатьМетку(ПараметрыТеста); + CLI_YandexMetrika_ПолучитьСписокМеток(ПараметрыТеста); + CLI_YandexMetrika_ИзменитьМетку(ПараметрыТеста); + CLI_YandexMetrika_ПолучитьМетку(ПараметрыТеста); + CLI_YandexMetrika_УдалитьМетку(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ЯМетрика_УправлениеСчетчиками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + CLI_YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыТеста); + CLI_YandexMetrika_СоздатьСчетчик(ПараметрыТеста); + CLI_YandexMetrika_ПолучитьСчетчик(ПараметрыТеста); + CLI_YandexMetrika_ИзменитьСчетчик(ПараметрыТеста); + CLI_YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + CLI_YandexMetrika_ВосстановитьСчетчик(ПараметрыТеста); + CLI_YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыТеста); + CLI_YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_ЯМетрика_УправлениеОперациями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + CLI_YandexMetrika_СоздатьСчетчик(ПараметрыТеста); + CLI_YandexMetrika_ПолучитьСписокОпераций(ПараметрыТеста); + CLI_YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область S3 + +Процедура CLI_AWS_ОбщиеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста); + + CLI_S3_ПолучитьСтруктуруДанных(ПараметрыТеста); + CLI_S3_ОтправитьЗапросБезТела(ПараметрыТеста); + CLI_S3_ОтправитьЗапросСТелом(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_AWS_РаботаСБакетами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста); + + CLI_S3_СоздатьБакет(ПараметрыТеста); + CLI_S3_ПолучитьСписокБакетов(ПараметрыТеста); + CLI_S3_ПроверитьДоступностьБакета(ПараметрыТеста); + CLI_S3_УстановитьТегиБакета(ПараметрыТеста); + CLI_S3_ПолучитьТегиБакета(ПараметрыТеста); + CLI_S3_УдалитьТегиБакета(ПараметрыТеста); + CLI_S3_УстановитьШифрованиеБакета(ПараметрыТеста); + CLI_S3_ПолучитьШифрованиеБакета(ПараметрыТеста); + CLI_S3_УдалитьШифрованиеБакета(ПараметрыТеста); + CLI_S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста); + CLI_S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыТеста); + CLI_S3_УдалитьБакет(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_AWS_РаботаСОбъектами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); + + CLI_S3_СоздатьБакет(ПараметрыТеста); + CLI_S3_ЗагрузитьОбъект(ПараметрыТеста); + CLI_S3_ЗагрузитьОбъектЦеликом(ПараметрыТеста); + CLI_S3_ИнициализироватьЗагрузкуЧастями(ПараметрыТеста); + CLI_S3_ОтменитьЗагрузкуЧастями(ПараметрыТеста); + CLI_S3_ПолучитьОписаниеОбъекта(ПараметрыТеста); + CLI_S3_КопироватьОбъект(ПараметрыТеста); + CLI_S3_УстановитьТегиОбъекта(ПараметрыТеста); + CLI_S3_ПолучитьТегиОбъекта(ПараметрыТеста); + CLI_S3_УдалитьТегиОбъекта(ПараметрыТеста); + CLI_S3_ПолучитьСписокОбъектов(ПараметрыТеста); + CLI_S3_ПолучитьСписокВерсийОбъектов(ПараметрыТеста); + CLI_S3_ПолучитьОбъект(ПараметрыТеста); + CLI_S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыТеста); + CLI_S3_УдалитьОбъект(ПараметрыТеста); + CLI_S3_УдалитьБакет(ПараметрыТеста); + CLI_S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область TCP + +Процедура CLI_TC_Клиент() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_AddressTls", ПараметрыТеста); + + CLI_TCP_ОбработатьЗапрос(ПараметрыТеста); + CLI_TCP_ПолучитьНастройкиTls(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область SQLite + +Процедура CLI_SQLL_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + + База = ПолучитьИмяВременногоФайла("sqlite"); + ПолучитьДвоичныеДанныеИзСтроки("").Записать(База); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); + OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_Ext", ПараметрыТеста); + + CLI_SQLite_ВыполнитьЗапросSQL(ПараметрыТеста); + + Попытка + УдалитьФайлы(База); + Исключение + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite"); + КонецПопытки; + +КонецПроцедуры + +Процедура CLI_SQLL_ORM() Экспорт + + ПараметрыТеста = Новый Структура; + + База = ПолучитьИмяВременногоФайла("sqlite"); + ПолучитьДвоичныеДанныеИзСтроки("").Записать(База); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); + OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + CLI_SQLite_СоздатьТаблицу(ПараметрыТеста); + CLI_SQLite_ДобавитьЗаписи(ПараметрыТеста); + CLI_SQLite_ПолучитьЗаписи(ПараметрыТеста); + CLI_SQLite_ОбновитьЗаписи(ПараметрыТеста); + CLI_SQLite_УдалитьЗаписи(ПараметрыТеста); + CLI_SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); + CLI_SQLite_ОчиститьТаблицу(ПараметрыТеста); + CLI_SQLite_УдалитьТаблицу(ПараметрыТеста); + CLI_SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + Попытка + УдалитьФайлы(База); + Исключение + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite"); + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#Область PostgreSQL + +Процедура CLI_Postgres_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL" , ПараметрыТеста); + + CLI_PostgreSQL_СформироватьСтрокуПодключения(ПараметрыТеста); + CLI_PostgreSQL_ВыполнитьЗапросSQL(ПараметрыТеста); + CLI_PostgreSQL_ПолучитьНастройкиTls(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_Postgres_ORM() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_PostgreSQL_СоздатьБазуДанных(ПараметрыТеста); + CLI_PostgreSQL_СоздатьТаблицу(ПараметрыТеста); + CLI_PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + CLI_PostgreSQL_ДобавитьЗаписи(ПараметрыТеста); + CLI_PostgreSQL_ПолучитьЗаписи(ПараметрыТеста); + CLI_PostgreSQL_ОбновитьЗаписи(ПараметрыТеста); + CLI_PostgreSQL_УдалитьЗаписи(ПараметрыТеста); + CLI_PostgreSQL_ОчиститьТаблицу(ПараметрыТеста); + CLI_PostgreSQL_УдалитьТаблицу(ПараметрыТеста); + CLI_PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыТеста); + CLI_PostgreSQL_УдалитьБазуДанных(ПараметрыТеста); + CLI_PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область MySQL + +Процедура CLI_MYS_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL2" , ПараметрыТеста); + + CLI_MySQL_СформироватьСтрокуПодключения(ПараметрыТеста); + CLI_MySQL_ВыполнитьЗапросSQL(ПараметрыТеста); + CLI_MySQL_ПолучитьНастройкиTls(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_MYS_ORM() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_MySQL_СоздатьБазуДанных(ПараметрыТеста); + CLI_MySQL_СоздатьТаблицу(ПараметрыТеста); + CLI_MySQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + CLI_MySQL_ДобавитьЗаписи(ПараметрыТеста); + CLI_MySQL_ПолучитьЗаписи(ПараметрыТеста); + CLI_MySQL_ОбновитьЗаписи(ПараметрыТеста); + CLI_MySQL_УдалитьЗаписи(ПараметрыТеста); + CLI_MySQL_ОчиститьТаблицу(ПараметрыТеста); + CLI_MySQL_УдалитьТаблицу(ПараметрыТеста); + CLI_MySQL_УдалитьБазуДанных(ПараметрыТеста); + CLI_MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область GreenAPI + +Процедура CLI_GAPI_Аккаунт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_GreenAPI_АрхивироватьЧат(ПараметрыТеста); + CLI_GreenAPI_РазархивироватьЧат(ПараметрыТеста); + CLI_GreenAPI_СформироватьПараметрыДоступа(ПараметрыТеста); + CLI_GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыТеста); + CLI_GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); + CLI_GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыТеста); + CLI_GreenAPI_УстановитьНастройкиИнстанса(ПараметрыТеста); + CLI_GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыТеста); + CLI_GreenAPI_УстановитьКартинкуПрофиля(ПараметрыТеста); + CLI_GreenAPI_ПерезапуститьИнстанс(ПараметрыТеста); + // CLI_GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста); + // CLI_GreenAPI_РазлогинитьИнстанс(ПараметрыТеста); + // CLI_GreenAPI_ПолучитьQR(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_GAPI_УправлениеГруппами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_GreenAPI_СоздатьГруппу(ПараметрыТеста); + CLI_GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыТеста); + CLI_GreenAPI_ИзменитьИмяГруппы(ПараметрыТеста); + CLI_GreenAPI_УстановитьКартинкуГруппы(ПараметрыТеста); + CLI_GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыТеста); + CLI_GreenAPI_ИсключитьУчастникаГруппы(ПараметрыТеста); + CLI_GreenAPI_НазначитьПраваАдминистратора(ПараметрыТеста); + CLI_GreenAPI_ОтозватьПраваАдминистратора(ПараметрыТеста); + CLI_GreenAPI_ПокинутьГруппу(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_GAPI_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + CLI_GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыТеста); + CLI_GreenAPI_ОтправитьФайл(ПараметрыТеста); + CLI_GreenAPI_ОтправитьФайлПоURL(ПараметрыТеста); + CLI_GreenAPI_ОтправитьОпрос(ПараметрыТеста); + CLI_GreenAPI_ПолучитьОписаниеЛокации(ПараметрыТеста); + CLI_GreenAPI_ОтправитьЛокацию(ПараметрыТеста); + CLI_GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыТеста); + CLI_GreenAPI_ОтправитьКонтакт(ПараметрыТеста); + CLI_GreenAPI_ПереслатьСообщения(ПараметрыТеста); + CLI_GreenAPI_ИзменитьТекстСообщения(ПараметрыТеста); + CLI_GreenAPI_УдалитьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_GAPI_ПолучениеУведомлений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_FileMessageID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_DownloadMessageID", ПараметрыТеста); + + CLI_GreenAPI_ПолучитьУведомление(ПараметрыТеста); + CLI_GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыТеста); + CLI_GreenAPI_СкачатьФайлСообщения(ПараметрыТеста); + CLI_GreenAPI_УстановитьОтметкуПрочтения(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_GAPI_ОчередьСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + + CLI_GreenAPI_ПолучитьОчередьСообщений(ПараметрыТеста); + CLI_GreenAPI_ОчиститьОчередьСообщений(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_GAPI_ЖурналыСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MessageID" , ПараметрыТеста); + + CLI_GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста); + CLI_GreenAPI_ПолучитьСообщение(ПараметрыТеста); + CLI_GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста); + CLI_GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область RCON + +Процедура CLI_RC_ВыполнениеКоманд() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_Password", ПараметрыТеста); + + CLI_RCON_СформироватьПараметрыСоединения(ПараметрыТеста); + CLI_RCON_ВыполнитьКоманду(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область Ollama + +Процедура CLI_OLLM_ОбработкаЗапросов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + + CLI_Ollama_СкачатьМодель(ПараметрыТеста); + CLI_Ollama_ПолучитьВерсию(ПараметрыТеста); + CLI_Ollama_ПолучитьОтвет(ПараметрыТеста); + CLI_Ollama_ПолучитьОтветВКонтексте(ПараметрыТеста); + CLI_Ollama_ПолучитьПредставления(ПараметрыТеста); + CLI_Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыТеста); + CLI_Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыТеста); + CLI_Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыТеста); + CLI_Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_OLLM_РаботаСМоделями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + + CLI_Ollama_СкачатьМодель(ПараметрыТеста); + CLI_Ollama_ЗагрузитьМодельВПамять(ПараметрыТеста); + CLI_Ollama_ВыгрузитьМодельИзПамяти(ПараметрыТеста); + CLI_Ollama_СоздатьМодель(ПараметрыТеста); + CLI_Ollama_ПолучитьИнформациюОМодели(ПараметрыТеста); + CLI_Ollama_ПолучитьСписокМоделей(ПараметрыТеста); + CLI_Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыТеста); + CLI_Ollama_КопироватьМодель(ПараметрыТеста); + CLI_Ollama_ОтправитьМодель(ПараметрыТеста); + CLI_Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыТеста); + CLI_Ollama_УдалитьМодель(ПараметрыТеста); + +КонецПроцедуры + +Процедура CLI_OLLM_РаботаСBlob() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Blob" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + CLI_Ollama_ОтправитьBlob(ПараметрыТеста); + CLI_Ollama_ПроверитьBlob(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#Область HTTP + +Процедура CLI_HTTP_Инициализация() Экспорт + + ПараметрыТеста = Новый Структура; + +КонецПроцедуры + +Процедура CLI_HTTP_УстановкаТела() Экспорт + + ПараметрыТеста = Новый Структура; + +КонецПроцедуры + +Процедура CLI_HTTP_Настройки() Экспорт + + ПараметрыТеста = Новый Структура; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ПолучитьПараметрыВК() + + Параметры = Новый Структура; + НомерГруппы = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_GroupID"); + + Параметры.Вставить("access_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_Token")); + Параметры.Вставить("owner_id" , "-" + НомерГруппы); + Параметры.Вставить("app_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_AppID")); + Параметры.Вставить("group_id" , НомерГруппы); + + Возврат Параметры; + +КонецФункции + +Функция ПолучитьПараметрыАвторизацииТвиттер() + + Параметры = Новый Соответствие; + + Параметры.Вставить("redirect_uri" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Redirect")); + Параметры.Вставить("client_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClinetID")); + Параметры.Вставить("client_secret" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClientSecret")); + Параметры.Вставить("access_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Token")); + Параметры.Вставить("refresh_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Refresh")); + Параметры.Вставить("oauth_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthToken")); + Параметры.Вставить("oauth_token_secret" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthSecret")); + + Параметры.Вставить("oauth_consumer_key" + , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthConsumerKey")); + Параметры.Вставить("oauth_consumer_secret" + , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthConsumerSecret")); + + Возврат Параметры; + +КонецФункции + +#Область АтомарныеТесты + +#Область Telegram + +Процедура CLI_Telegram_ПолучитьИнформациюБота(ПараметрыФункции) + + Опции = Новый Структура("token", ПараметрыФункции["Telegram_Token"]); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьИнформациюБота", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюБота", "Telegram"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИнформацияБота(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ПолучитьОбновления(ПараметрыФункции) + + Опции = Новый Структура("token", ПараметрыФункции["Telegram_Token"]); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьОбновления", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбновления", "Telegram"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМассив(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_УстановитьWebhook(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("url" , ПараметрыФункции["Telegram_URL"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УстановитьWebhook", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьWebhook", "Telegram"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмУстановкаВебхук(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_УдалитьWebhook(ПараметрыФункции) + + Опции = Новый Структура("token", ПараметрыФункции["Telegram_Token"]); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьWebhook", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьWebhook", "Telegram"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмУдалениеВебхук(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Текст = ПараметрыФункции["String"]; + + Опции = Новый Структура; + Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); + + IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_MessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("Telegram_MessageID", IDСообщения, "Строка", ПараметрыФункции); + + Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (канал)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); + + IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_ChannelMessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("Telegram_ChannelMessageID", IDСообщения, "Строка", ПараметрыФункции); + + // Дополнительный тест 1 + Опции.Вставить("text" , "Текст html %%F0%%9F%%93%%9E 10%%"); + Опции.Вставить("parsemode", "HTML"); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (HTML)"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат); + + // Дополнительный тест 2 + Опции.Вставить("text" , "%%F0%%9F%%A4%%BC"); + Опции.Вставить("parsemode", "Markdown"); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (emoji)"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат); + + // Дополнительный тест 3 + Опции.Вставить("text" , "Текст %%F0%%9F%%A5%%9D и emoji \(10%%\)"); + Опции.Вставить("parsemode", "MarkdownV2"); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (текст и emoji)"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка1"); + МассивКнопок.Добавить("Кнопка2"); + МассивКнопок.Добавить("Кнопка3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьКлавиатуруПоМассивуКнопок", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьКартинку(ПараметрыФункции) + + Текст = ПараметрыФункции["String"]; + Картинка = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("text" , Текст); + Опции.Вставить("picture" , Картинка); + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКартинку", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Текст); + + IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_PicMessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("Telegram_PicMessageID", IDСообщения, "Строка", ПараметрыФункции); + + Опции.Вставить("picture" , КартинкаПуть); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКартинку (Путь)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Текст); + + УдалитьФайлы(КартинкаПуть); + + IDФайла = Результат["result"]["photo"][0]["file_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_FileID", IDФайла); + + ПараметрыФункции.Вставить("Telegram_FileID", IDФайла); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьВидео(ПараметрыФункции) + + Текст = ПараметрыФункции["String"]; + Видео = ПараметрыФункции["Video"]; + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("text" , Текст); + Опции.Вставить("video" , Видео); + + ВидеоПуть = ПолучитьИмяВременногоФайла("mp4"); + КопироватьФайл(Видео, ВидеоПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьВидео", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмВидео(Результат, Текст); + + Опции.Вставить("video" , ВидеоПуть); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьВидео (Путь)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмВидео(Результат, Текст); + + УдалитьФайлы(ВидеоПуть); + + IDФайла = Результат["result"]["video"]["file_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_FileID", IDФайла); + + ПараметрыФункции.Вставить("Telegram_FileID", IDФайла); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьАудио(ПараметрыФункции) + + Текст = ПараметрыФункции["String"]; + Аудио = ПараметрыФункции["Audio"]; + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("text" , Текст); + Опции.Вставить("audio" , Аудио); + + АудиоПуть = ПолучитьИмяВременногоФайла("mp3"); + КопироватьФайл(Аудио, АудиоПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьАудио", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмАудио(Результат, Текст); + + Опции.Вставить("audio" , АудиоПуть); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьАудио (Путь)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмАудио(Результат, Текст); + + УдалитьФайлы(АудиоПуть); + + IDФайла = Результат["result"]["audio"]["file_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_FileID", IDФайла); + + ПараметрыФункции.Вставить("Telegram_FileID", IDФайла); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьДокумент(ПараметрыФункции) + + Текст = ПараметрыФункции["String"]; + Документ = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("text" , Текст); + Опции.Вставить("doc" , Документ); + + ДокументПуть = ПолучитьИмяВременногоФайла("docx"); + КопироватьФайл(Документ, ДокументПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьДокумент", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмДокумент(Результат, Текст); + + Опции.Вставить("doc" , ДокументПуть); + Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьДокумент (Путь)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмДокумент(Результат, Текст); + + Опции.Вставить("filename", "custom.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьДокумент (Имя)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмДокумент(Результат, Текст); + + УдалитьФайлы(ДокументПуть); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьГифку(ПараметрыФункции) + + Текст = ПараметрыФункции["String"]; + Гифка = ПараметрыФункции["GIF"]; + + Опции = Новый Структура; + Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("text" , Текст); + Опции.Вставить("gif" , Гифка); + + ГифкаПуть = ПолучитьИмяВременногоФайла("gif"); + КопироватьФайл(Гифка, ГифкаПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьГифку", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмГифка(Результат, Текст); + + Опции.Вставить("gif" , ГифкаПуть); + Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьГифку (Путь)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмГифка(Результат, Текст); + + УдалитьФайлы(ГифкаПуть); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьМедиагруппу(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + Видео = ПараметрыФункции["Video"]; + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + Медиагруппа = Новый Соответствие; + Медиагруппа.Вставить(КартинкаПуть, "photo"); + Медиагруппа.Вставить(Видео , "video"); + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("text" , ПараметрыФункции["String"]); + Опции.Вставить("media" , Медиагруппа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМедиагруппу", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМедиагруппа(Результат); + + ДокументURL = ПараметрыФункции["Document"]; + ДокументПуть = ПолучитьИмяВременногоФайла("docx"); + + КопироватьФайл(ДокументURL, ДокументПуть); + + МедиаГруппа = Новый Соответствие; + Медиагруппа.Вставить(ДокументURL , "document"); + Медиагруппа.Вставить(ДокументПуть, "document"); + + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + Опции.Вставить("media" , Медиагруппа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМедиагруппу (доки)", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМедиагруппа(Результат); + + УдалитьФайлы(КартинкаПуть); + УдалитьФайлы(ДокументПуть); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьМестоположение(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("lat" , ПараметрыФункции["Lat"]); + Опции.Вставить("long" , ПараметрыФункции["Long"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМестоположение", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМестоположение(Результат); + + Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМестоположение (канал)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмМестоположение(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьКонтакт(ПараметрыФункции) + + Имя = ПараметрыФункции["Name"]; + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("surname", ПараметрыФункции["Surname"]); + Опции.Вставить("phone" , ПараметрыФункции["Phone"]); + Опции.Вставить("name" , Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКонтакт(Результат, Имя); + + Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт (канал)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКонтакт(Результат, Имя); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОтправитьОпрос(ПараметрыФункции) + + Вопрос = "Какой ваш любимый цвет?"; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("Красный"); + МассивОтветов.Добавить("Желтый"); + МассивОтветов.Добавить("Зеленый"); + МассивОтветов.Добавить("Синий"); + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("question", Вопрос); + Опции.Вставить("options" , МассивОтветов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьОпрос", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОпрос(Результат, Вопрос); + + Опции.Вставить("chat", ПараметрыФункции["Telegram_ChannelID"]); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьОпрос (канал)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОпрос(Результат, Вопрос); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_СкачатьФайл(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("fileid" , ПараметрыФункции["Telegram_FileID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкачатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайл", "Telegram"); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("ДвоичныеДанные"); + +КонецПроцедуры + +Процедура CLI_Telegram_ПереслатьСообщение(ПараметрыФункции) + + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("from" , ПараметрыФункции["Telegram_ChannelID"]); + Опции.Вставить("to" , ПараметрыФункции["Telegram_ChatID"]); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПереслатьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьСообщение", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмПереслать(Результат, IDСообщения); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_Бан(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + Опции.Вставить("user" , ПараметрыФункции["Telegram_ChatID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Бан", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "Бан", "Telegram"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмБан(Результат); + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_Разбан(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token", ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + Опции.Вставить("user" , ПараметрыФункции["Telegram_ChatID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Разбан", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "Разбан", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмБан(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_СоздатьСсылкуПриглашение(ПараметрыФункции) + + Сутки = 86400; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + Заголовок = "Ссылка " + Строка(ТекущаяДата); + Истечение = ТекущаяДата + Сутки; + UnixИстечение = OPI_Инструменты.UNIXTime(Истечение); + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + Опции.Вставить("expire", Истечение); + Опции.Вставить("title" , Заголовок); + Опции.Вставить("limit" , 200); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьСсылкуПриглашение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСсылкуПриглашение", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмПриглашение(Результат, Заголовок, UnixИстечение); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ЗакрепитьСообщение(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + Опции.Вставить("message", ПараметрыФункции["Telegram_ChannelMessageID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрепитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрепитьСообщение", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ОткрепитьСообщение(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + Опции.Вставить("message", ПараметрыФункции["Telegram_ChannelMessageID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрепитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрепитьСообщение", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ПолучитьЧислоУчастников(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьЧислоУчастников", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧислоУчастников", "Telegram"); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмЧисло(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ПолучитьСписокИконокАватаров(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьСписокИконокАватаров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокИконокАватаров", "Telegram"); + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено(); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_СоздатьТемуФорума(ПараметрыФункции) + + Имя = "Тестовая тема " + Строка(Новый УникальныйИдентификатор); + Иконка = "5357419403325481346"; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Токен = ПараметрыФункции["Telegram_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("forum" , Чат); + Опции.Вставить("icon" , Иконка); + Опции.Вставить("title" , Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТемуФорума", "Telegram"); + + Тема = Результат["result"]["message_thread_id"]; + + OPI_Инструменты.ДобавитьПоле("Telegram_TopicID", Тема, "Строка", ПараметрыФункции); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_TopicID", ПараметрыФункции["Telegram_TopicID"]); + + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСозданиеТемы(Результат, Имя, Иконка); + + ЧатТема = Чат + "*" + Тема; + Текст = ПараметрыФункции["String"]; + Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, ЧатТема, Текст); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (форум)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); + +КонецПроцедуры + +Процедура CLI_Telegram_ИзменитьТемуФорума(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); + Опции.Вставить("icon" , "5310132165583840589"); + Опции.Вставить("title" , "Новый тестовый заголовок"); + Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТемуФорума", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ЗакрытьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("forum" , Чат); + + OPI_Telegram.ОткрытьТемуФорума(Токен, Чат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрытьТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрытьТемуФорума (главная)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрытьТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрытьТемуФорума", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(25); + +КонецПроцедуры + +Процедура CLI_Telegram_ОткрытьТемуФорума(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрытьТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрытьТемуФорума (главная)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрытьТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрытьТемуФорума", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(25); + +КонецПроцедуры + +Процедура CLI_Telegram_УдалитьТемуФорума(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); + Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТемуФорума", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(25); + +КонецПроцедуры + +Процедура CLI_Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьСписокЗакрепленныхСообщенийТемы (главная)"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + Опции.Вставить("topic" , ПараметрыФункции["Telegram_TopicID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьСписокЗакрепленныхСообщенийТемы", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_СкрытьГлавнуюТемуФорума(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкрытьГлавнуюТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкрытьГлавнуюТемуФорума", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПоказатьГлавнуюТемуФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоказатьГлавнуюТемуФорума", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("forum" , ПараметрыФункции["Telegram_ForumID"]); + Опции.Вставить("title" , "Новое имя главной темы " + Строка(Новый УникальныйИдентификатор)); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьИмяГлавнойТемыФорума", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьИмяГлавнойТемыФорума", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_УдалитьСообщение(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("token" , ПараметрыФункции["Telegram_Token"]); + Опции.Вставить("chat" , ПараметрыФункции["Telegram_ChannelID"]); + Опции.Вставить("message", ПараметрыФункции["Telegram_ChannelMessageID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Telegram_ЗаменитьТекстСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьТекстСообщения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗаменитьТекстСообщения", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); + +КонецПроцедуры + +Процедура CLI_Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDСообщения = ПараметрыФункции["Telegram_MessageID"]; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("1"); + МассивКнопок.Добавить("2"); + МассивКнопок.Добавить("3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + Опции.Вставить("under" , Истина); + Опции.Вставить("column" , Ложь); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message" , IDСообщения); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьКлавиатуруСообщения", Опции); + + Клавиатура = OPI_Инструменты.JSONСтрокой(Клавиатура); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗаменитьКлавиатуруСообщения", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКлавиатураСообщения(Результат, Клавиатура); + +КонецПроцедуры + +Процедура CLI_Telegram_ЗаменитьОписаниеСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDСообщения = ПараметрыФункции["Telegram_PicMessageID"]; + + Описание = "Новое описание картинки"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message" , IDСообщения); + Опции.Вставить("caption" , Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьОписаниеСообщения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗаменитьОписаниеСообщения", "Telegram"); + OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Описание); + +КонецПроцедуры + +#КонецОбласти + +#Область VK + +Процедура CLI_VK_СоздатьСсылкуПолученияТокена(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("app" , ПараметрыФункции["VK_AppID"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСсылкуПолученияТокена", Опции); + + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСсылкуПолученияТокена", "VK"); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Строка").Заполнено(); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка2, ИВФ); + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка); + МассивКартинок.Добавить(ИВФ); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("pictures", МассивКартинок); + Опции.Вставить("ad" , Истина); + Опции.Вставить("url" , URL); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПост", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); + ИДПоста = Результат["response"]["post_id"]; + Результат = OPI_VK.УдалитьПост(ИДПоста, Параметры); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("ad" , Ложь); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПост (одна картинка)"); + OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); + + ИДПоста = Результат["response"]["post_id"]; + Результат = OPI_VK.УдалитьПост(ИДПоста, Параметры); + + OPI_Инструменты.Пауза(5); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("pictures", ИВФ); + Опции.Вставить("ad" , Истина); + Опции.Вставить("url" , URL); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПост (один путь)"); + OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); + + ИДПоста = Результат["response"]["post_id"]; + OPI_Инструменты.ДобавитьПоле("VK_PostID", ИДПоста, "Строка", ПараметрыФункции); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ПараметрыФункции["VK_PostID"]); + + УдалитьФайлы(ИВФ); + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_УдалитьПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДПоста = ПараметрыФункции["VK_PostID"]; + + Опции = Новый Структура; + Опции.Вставить("post", ИДПоста); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПост", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьПост", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьСоставнойПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Видео = ПараметрыФункции["Video"]; // URL, Путь или Двоичные данные + + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, ИВФ); + + ЗагрузкаКартинки = OPI_VK.ЗагрузитьФотоНаСервер(ИВФ, Параметры)["response"][0]; + ЗагрузкаВидео = OPI_VK.ЗагрузитьВидеоНаСервер(Видео, "Новое видео", , , Параметры); + + ВладелецКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["owner_id"]); + ВладелецВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["owner_id"]); + + IDКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["id"]); + IDВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["video_id"]); + + МассивВложений = Новый Массив; + МассивВложений.Добавить("photo" + ВладелецКартинки + "_" + IDКартинки); + МассивВложений.Добавить("video" + ВладелецВидео + "_" + IDВидео); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("objects", МассивВложений); + Опции.Вставить("ad" , Ложь); + Опции.Вставить("url" , URL); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСоставнойПост", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСоставнойПост", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); + УдалитьФайлы(ИВФ); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьОпрос() + + Параметры = ПолучитьПараметрыВК(); + Вопрос = "Какой ваш любимый цвет?"; + + МассивВариантов = Новый Массив; + МассивВариантов.Добавить("Красный"); + МассивВариантов.Добавить("Желтый"); + МассивВариантов.Добавить("Зеленый"); + + Опции = Новый Структура; + Опции.Вставить("question", Вопрос); + Опции.Вставить("options" , МассивВариантов); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьОпрос", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКПост(Результат); + + ИДПоста = Результат["response"]["post_id"]; + OPI_VK.УдалитьПост(ИДПоста, Параметры); + + OPI_Инструменты.Пауза(10); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Имя = "Альбом из автотеста"; + Описание = "Новый альбом из автотеста"; + + Опции = Новый Структура; + Опции.Вставить("title" , Имя); + Опции.Вставить("description" , Описание); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьАльбом", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьАльбом", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКАльбом(Результат, Описание); + + ИДАльбома = Результат["response"]["id"]; + ПараметрыФункции.Вставить("VK_AlbumID", ИДАльбома); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_AlbumID", ИДАльбома); + +КонецПроцедуры + +Процедура CLI_VK_СохранитьКартинкуВАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ОписаниеКартинки = "Картинка автотест"; + ИДАльбома = ПараметрыФункции["VK_AlbumID"]; + + Картинка = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("album" , ИДАльбома); + Опции.Вставить("picture" , Картинка); + Опции.Вставить("description" , ОписаниеКартинки); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СохранитьКартинкуВАльбом", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СохранитьКартинкуВАльбом", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВККартинкаАльбома(Результат, ОписаниеКартинки, ИДАльбома); + + ИДКартинки = Результат["response"][0]["id"]; + ПараметрыФункции.Вставить("VK_PictureID", ИДКартинки); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PictureID", ИДКартинки); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_УдалитьКартинку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДКартинки = ПараметрыФункции["VK_PictureID"]; + + Опции = Новый Структура; + Опции.Вставить("pictureid", ИДКартинки); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКартинку", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_УдалитьАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДАльбома = ПараметрыФункции["VK_AlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("album", ИДАльбома); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьАльбом", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьАльбом", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ЗагрузитьФотоНаСервер(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Вид = "Пост"; + + Опции = Новый Структура; + Опции.Вставить("file", Картинка); + Опции.Вставить("type", Вид); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьФотоНаСервер", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьВидеоНаСервер", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВККартинкаАльбома(Результат, ""); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьИсторию(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, ИВФ); + Картинка = Новый ДвоичныеДанные(ИВФ); + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("url" , URL); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьИсторию", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстория(Результат); + + Опции = Новый Структура; + Опции.Вставить("picture", ИВФ); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьИсторию (путь)"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстория(Результат); + + УдалитьФайлы(ИВФ); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьОбсуждение(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Название = "Обсуждаем: какой цвет лучше?"; + Сообщение = "Красный, желтый, синий или какой-то другой?"; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("text" , Сообщение); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОбсуждение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьОбсуждение", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКОбсуждение(Результат); + + ИДОбсуждения = Результат["response"]; + ПараметрыФункции.Вставить("VK_ConvID", ИДОбсуждения); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_ConvID", ИДОбсуждения); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ЗакрытьОбсуждение(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДОбсуждения = ПараметрыФункции["VK_ConvID"]; + + Опции = Новый Структура; + Опции.Вставить("topic" , ИДОбсуждения); + Опции.Вставить("remove", Ложь); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗакрытьОбсуждение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрытьОбсуждение", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ОткрытьОбсуждение(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДОбсуждения = ПараметрыФункции["VK_ConvID"]; + + Опции = Новый Структура; + Опции.Вставить("topic" , ИДОбсуждения); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ОткрытьОбсуждение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрытьОбсуждение", "VK"); + + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_НаписатьВОбсуждение(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДОбсуждения = ПараметрыФункции["VK_ConvID"]; + Сообщение = "Мне больше нравится желтый"; + + Опции = Новый Структура; + Опции.Вставить("topic" , ИДОбсуждения); + Опции.Вставить("text" , Сообщение); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьВОбсуждение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НаписатьВОбсуждение", "VK"); + + OPI_ПолучениеДанныхТестов.Проверка_ВКОбсуждение(Результат); + +КонецПроцедуры + +Процедура CLI_VK_ПоставитьЛайк(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + IDПоста = ПараметрыФункции["VK_PostID"]; + + Опции = Новый Структура; + Опции.Вставить("post" , IDПоста); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПоставитьЛайк", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоставитьЛайк", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКЛайк(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_СделатьРепост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + IDПоста = 2571; + IDСтены = -218704372; + + Опции = Новый Структура; + Опции.Вставить("post" , IDПоста); + Опции.Вставить("from" , IDСтены); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СделатьРепост", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СделатьРепост", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКРепост(Результат); + + ПараметрыФункции.Вставить("Repost", Результат["response"]["post_id"]); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_НаписатьКомментарий(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Новый комментарий"; + IDПоста = ПараметрыФункции["VK_PostID"]; + IDСтены = Параметры["owner_id"]; + + Опции = Новый Структура; + Опции.Вставить("post" , IDПоста); + Опции.Вставить("wall" , IDСтены); + Опции.Вставить("text" , Текст); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьКомментарий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НаписатьКомментарий", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВККомментарий(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_СократитьСсылку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("url" , "https://github.com/Bayselonarrend/OpenIntegrations"); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СократитьСсылку", Опции); + + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СократитьСсылку", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьСтатистику(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ДатаНачала = НачалоДня(ТекущаяДата); + ДатаОкончания = КонецДня(ДатаНачала); + + Опции = Новый Структура; + Опции.Вставить("datefrom", ДатаНачала); + Опции.Вставить("dateto" , ДатаОкончания); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистику", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатистику", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКСтатистика(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьСтатистикуПостов(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + МассивПостов = Новый Массив; + МассивПостов.Добавить(214); + МассивПостов.Добавить(215); + + Опции = Новый Структура; + Опции.Вставить("posts", МассивПостов); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистикуПостов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатистикуПостов", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКСтатистикаПостов(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьРекламнуюКампанию(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + Наименование = "Новая кампания"; + + Опции = Новый Структура; + Опции.Вставить("cabinet", IDКабинета); + Опции.Вставить("title" , Наименование); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламнуюКампанию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьРекламнуюКампанию", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + ИДКампании = Результат["response"][0]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_AdsCampaignID", ИДКампании); + ПараметрыФункции.Вставить("VK_AdsCampaignID", ИДКампании); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьРекламноеОбъявление(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + НомерКампании = ПараметрыФункции["VK_AdsCampaignID"]; + ДневнойЛимит = 150; + НомерКатегории = 126; + IDПоста = ПараметрыФункции["VK_PostID"]; + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + + Опции = Новый Структура; + Опции.Вставить("campaign", НомерКампании); + Опции.Вставить("limit" , ДневнойЛимит); + Опции.Вставить("category", НомерКатегории); + Опции.Вставить("post" , IDПоста); + Опции.Вставить("cabinet" , IDКабинета); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламноеОбъявление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьРекламноеОбъявление", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + ИДОбъявления = Результат["response"][0]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_AdsPostID", ИДОбъявления); + ПараметрыФункции.Вставить("VK_AdsPostID", ИДОбъявления); + +КонецПроцедуры + +Процедура CLI_VK_ПриостановитьРекламноеОбъявление(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + IDОбъявления = ПараметрыФункции["VK_AdsPostID"]; + + Опции = Новый Структура; + Опции.Вставить("adv" , IDОбъявления); + Опции.Вставить("cabinet" , IDКабинета); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПриостановитьРекламноеОбъявление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПриостановитьРекламноеОбъявление", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьСписокРекламныхКатегорий(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокРекламныхКатегорий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРекламныхКатегорий", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВККатегории(Результат); + +КонецПроцедуры + +Процедура CLI_VK_СформироватьКлавиатуру(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Button 1"); + МассивКнопок.Добавить("Button 2"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); + Клавиатура = OPI_Инструменты.JSONСтрокой(Клавиатура); + + OPI_ПолучениеДанныхТестов.Проверка_Строка(Клавиатура); + +КонецПроцедуры + +Процедура CLI_VK_НаписатьСообщение(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Текст = "Сообщение из автотеста"; + IDПользователя = ПараметрыФункции["VK_UserID"]; + Communitytoken = ПараметрыФункции["VK_CommunityToken"]; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Button 1"); + МассивКнопок.Добавить("Button 2"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ct" , Communitytoken); + Опции.Вставить("keyboard", Клавиатура); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НаписатьСообщение", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКЧисло(Результат); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьСписокКатегорийТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокКатегорийТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКатегорийТоваров", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьПодборкуТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Тестовая подборка"; + Картинка = ПараметрыФункции["Picture"]; + Основная = Истина; + Скрытая = Ложь; + + Опции = Новый Структура; + Опции.Вставить("title" , Название); + Опции.Вставить("picture", Картинка); + Опции.Вставить("main" , Основная); + Опции.Вставить("hidden" , Скрытая); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПодборкуТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодборкуТоваров", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКПодборка(Результат); + + OPI_Инструменты.Пауза(5); + + ИДПодборки = Результат["response"]["market_album_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_MarketAlbumID", ИДПодборки); + ПараметрыФункции.Вставить("VK_MarketAlbumID", ИДПодборки); + +КонецПроцедуры + +Процедура CLI_VK_ИзменитьПодборкуТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Измененная подборка"; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("sel" , Подборка); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьПодборкуТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПодборкуТоваров", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьПодборкиПоИД(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("sels" , Подборка); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьПодборкиПоИД", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПодборкиПоИД", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКЭлементы(Результат); + +КонецПроцедуры + +Процедура CLI_VK_ДобавитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + ОписаниеТовара = Новый Соответствие(); + ОписаниеТовара.Вставить("Имя" , "Тестовый товар"); + ОписаниеТовара.Вставить("Описание" , "Описание товара"); + ОписаниеТовара.Вставить("Категория" , "20173"); + ОписаниеТовара.Вставить("Цена" , 1); + ОписаниеТовара.Вставить("СтараяЦена" , 15); + ОписаниеТовара.Вставить("ОсновноеФото" , Картинка1); + ОписаниеТовара.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + ОписаниеТовара.Вставить("ДополнительныеФото" , МассивКартинок); + ОписаниеТовара.Вставить("ГлавныйВГруппе" , Истина); + ОписаниеТовара.Вставить("Ширина" , 20); + ОписаниеТовара.Вставить("Высота" , 30); + ОписаниеТовара.Вставить("Глубина" , 40); + ОписаниеТовара.Вставить("Вес" , 100); + ОписаниеТовара.Вставить("SKU" , "12345"); + ОписаниеТовара.Вставить("ДоступныйОстаток" , "10"); + + Опции = Новый Структура; + Опции.Вставить("product", ОписаниеТовара); + Опции.Вставить("sel" , Подборка); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТовар", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТовар(Результат); + + ИДТовара = Результат["response"]["market_item_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_MarketItemID", ИДТовара); + ПараметрыФункции.Вставить("VK_MarketItemID", ИДТовара); + +КонецПроцедуры + +Процедура CLI_VK_ИзменитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + + ОписаниеТовара = Новый Соответствие; + ОписаниеТовара.Вставить("Имя", "Тестовый товар измененный"); + + Опции = Новый Структура; + Опции.Вставить("product", ОписаниеТовара); + Опции.Вставить("item" , Товар); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьТовар", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТовар", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VK_ДобавитьТоварВПодборку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("sel" , Подборка); + Опции.Вставить("items", Товар); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТоварВПодборку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТоварВПодборку", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКЧисло(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_УдалитьТоварИзПодборки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("sel" , Подборка); + Опции.Вставить("item", Товар); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТоварИзПодборки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТоварИзПодборки", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_УдалитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + + Опции = Новый Структура; + Опции.Вставить("item", Товар); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТовар", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТовар", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_УдалитьПодборку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("sel" , Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПодборку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьПодборку", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Цвет"; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСвойствоТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСвойствоТовара", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКСвойство(Результат); + + OPI_Инструменты.Пауза(5); + + Свойство = Результат["response"]["property_id"]; + Свойство = OPI_Инструменты.ЧислоВСтроку(Свойство); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PropID", Свойство); + ПараметрыФункции.Вставить("VK_PropID", Свойство); + +КонецПроцедуры + +Процедура CLI_VK_ИзменитьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Цвет (изм.)"; + Свойство = ПараметрыФункции["VK_PropID"]; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("prop" , Свойство); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьСвойствоТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСвойствоТовара", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ДобавитьВариантСвойстваТовара(ПараметрыФункции) + + Счетчик = 1; + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + МассивВариантов = Новый Массив; + МассивВариантов.Добавить("Желтый"); + МассивВариантов.Добавить("Синий"); + МассивВариантов.Добавить("Красный"); + + Для Каждого Значение Из МассивВариантов Цикл + + Опции = Новый Структура; + Опции.Вставить("value", Значение); + Опции.Вставить("prop" , Свойство); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьВариантСвойстваТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьВариантСвойстваТовара", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКВариантСвойства(Результат); + OPI_Инструменты.Пауза(5); + + ИДВарианта = Результат["response"]["variant_id"]; + ИмяПараметра = "VK_PropVarID" + Строка(Счетчик); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр(ИмяПараметра, ИДВарианта); + ПараметрыФункции.Вставить(ИмяПараметра, ИДВарианта); + Счетчик = Счетчик + 1; + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_VK_ИзменитьВариантСвойстваТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + Вариант = ПараметрыФункции["VK_PropVarID1"]; + Значение = "Новое имя варианта"; + + Опции = Новый Структура; + Опции.Вставить("value" , Значение); + Опции.Вставить("prop" , Свойство); + Опции.Вставить("option", Вариант); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьВариантСвойстваТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьВариантСвойстваТовара", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VK_СоздатьТоварСоСвойством(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка1 = ПараметрыФункции["Picture"]; + Картинка2 = ПараметрыФункции["Picture2"]; + ВариантСвойства1 = ПараметрыФункции["VK_PropVarID1"]; + ВариантСвойства2 = ПараметрыФункции["VK_PropVarID2"]; + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Товар = Новый Соответствие(); + Товар.Вставить("Имя" , "Тестовый товар (со свойством)"); + Товар.Вставить("Описание" , "Описание товара"); + Товар.Вставить("Категория" , "20173"); + Товар.Вставить("Цена" , 1); + Товар.Вставить("СтараяЦена" , 15); + Товар.Вставить("ОсновноеФото" , Картинка1); + Товар.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + Товар.Вставить("ДополнительныеФото" , МассивКартинок); + Товар.Вставить("ГлавныйВГруппе" , Истина); + Товар.Вставить("НомерГруппы" , Неопределено); + Товар.Вставить("Ширина" , 20); + Товар.Вставить("Высота" , 30); + Товар.Вставить("Глубина" , 40); + Товар.Вставить("Вес" , 100); + Товар.Вставить("SKU" , 12345); + Товар.Вставить("ДоступныйОстаток" , "10"); + Товар.Вставить("ЗначенияСвойств" , ВариантСвойства1); + + Опции = Новый Структура; + Опции.Вставить("product", Товар); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ТоварСоСвойством1"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТовар(Результат); + + ИДТовара = Результат["response"]["market_item_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_MarketItemID2", ИДТовара); + ПараметрыФункции.Вставить("VK_MarketItemID2", ИДТовара); + + Товар.Вставить("Имя" , "Тестовый товар (другой)"); + Товар.Вставить("ЗначенияСвойств", ВариантСвойства2); + + Опции = Новый Структура; + Опции.Вставить("product", Товар); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ТоварСоСвойством2"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТовар(Результат); + + ИДТовара = Результат["response"]["market_item_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_MarketItemID3", ИДТовара); + ПараметрыФункции.Вставить("VK_MarketItemID3", ИДТовара); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьТоварыПоИД(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар1 = ПараметрыФункции["VK_MarketItemID2"]; + Товар2 = ПараметрыФункции["VK_MarketItemID3"]; + + МассивТоваров = Новый Массив; + МассивТоваров.Добавить(Товар1); + МассивТоваров.Добавить(Товар2); + + Опции = Новый Структура; + Опции.Вставить("items", МассивТоваров); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьТоварыПоИД", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТоварыПоИД", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИнформацияОТоварах(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_СгруппироватьТовары(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар1 = ПараметрыФункции["VK_MarketItemID2"]; + Товар2 = ПараметрыФункции["VK_MarketItemID3"]; + + МассивТоваров = Новый Массив; + МассивТоваров.Добавить(Товар1); + МассивТоваров.Добавить(Товар2); + + Опции = Новый Структура; + Опции.Вставить("items", МассивТоваров); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СгруппироватьТовары", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СгруппироватьТовары", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКГруппаТоваров(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_УдалитьВариантСвойстваТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Вариант = ПараметрыФункции["VK_PropVarID1"]; + + Опции = Новый Структура; + Опции.Вставить("option", Вариант); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьВариантСвойстваТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВариантСвойстваТовара", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_УдалитьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + + Опции = Новый Структура; + Опции.Вставить("prop", Свойство); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьСвойствоТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСвойствоТовара"); + OPI_ПолучениеДанныхТестов.Проверка_ВКИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьОписаниеТовара(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьОписаниеТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеТовара", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьСписокТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТоваров", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьСписокПодборок(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокПодборок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПодборок", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьСписокСвойств(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокСвойств", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСвойств", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ПолучитьСписокЗаказов(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокЗаказов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗаказов", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VK_ЗагрузитьВидеоНаСервер(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Видео = ПараметрыФункции["Video"]; // URL, Двоичные данные или Путь к файлу + Наименование = "Новое видео"; + Описание = "Описание видео"; + + Опции = Новый Структура; + Опции.Вставить("file" , Видео); + Опции.Вставить("title" , Наименование); + Опции.Вставить("description", Описание); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьВидеоНаСервер", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьВидеоНаСервер", "VK"); + OPI_ПолучениеДанныхТестов.Проверка_ВКВидео(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +#КонецОбласти + +#Область YandexDisk + +Процедура CLI_YandexDisk_ПолучитьИнформациюОДиске(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьИнформациюОДиске", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОДиске", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискДиск(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьПапку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПапку", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискКаталог(Результат, Путь); + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ЗагрузитьФайлПоURL(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Адрес = ПараметрыФункции["Picture"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + Опции.Вставить("url" , Адрес); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайлПоURL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлПоURL", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискПроцедура(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_FileByURLPath", Путь); + ПараметрыФункции.Вставить("YandexDisk_FileByURLPath", Путь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ПолучитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь); + +КонецПроцедуры + +Процедура CLI_YandexDisk_УдалитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + Опции.Вставить("can" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ЗагрузитьФайл(ПараметрыФункции) + + Путь1 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + Путь2 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Картинка = ПараметрыФункции["Picture"]; // URL + + ИВФ = ПолучитьИмяВременногоФайла("png"); // Путь + КопироватьФайл(Картинка, ИВФ); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь1); + Опции.Вставить("file" , Картинка); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл (URL)", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + OPI_Инструменты.Пауза(5); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь2); + Опции.Вставить("file" , ИВФ); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл", "YandexDisk"); + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + OPI_Инструменты.Пауза(5); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь1); + Опции.Вставить("can" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект (URL)", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь2); + Опции.Вставить("can" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект (Путь)", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + УдалитьФайлы(ИВФ); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_СоздатьКопиюОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("from" , Оригинал); + Опции.Вставить("to" , Путь); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьКопиюОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКопиюОбъекта", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_CopyFilePath", Путь); + ПараметрыФункции.Вставить("YandexDisk_CopyFilePath", Путь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_PathForLink"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуДляСкачивания", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуДляСкачивания", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискСсылка(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_PathForLink"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СкачатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайл", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Количество = 2; + СмещениеОтНачала = 1; + ОтборПоТипу = "image"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("amount", Количество); + Опции.Вставить("offset", СмещениеОтНачала); + Опции.Вставить("type" , ОтборПоТипу); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискСписокФайлов(Результат, Количество, СмещениеОтНачала); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ПереместитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("from" , Оригинал); + Опции.Вставить("to" , Путь); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПереместитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьОбъект", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_NewFilePath", Путь); + ПараметрыФункции.Вставить("YandexDisk_NewFilePath", Путь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ОпубликоватьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОпубликоватьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОпубликоватьОбъект", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь, Истина); + + URL = Результат["public_url"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_PublicURL", URL); + ПараметрыФункции.Вставить("YandexDisk_PublicURL", URL); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуСкачиванияПубличногоОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуСкачиванияПубличногоОбъекта", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискСсылка(Результат); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ПолучитьПубличныйОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьПубличныйОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПубличныйОбъект", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, "", Истина); + +КонецПроцедуры + +Процедура CLI_YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СохранитьПубличныйОбъектНаДиск", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СохранитьПубличныйОбъектНаДиск", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, "", Ложь); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОтменитьПубликациюОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтменитьПубликациюОбъекта", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискПуть(Результат, Путь, Ложь); + +КонецПроцедуры + +Процедура CLI_YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Количество = 2; + СмещениеОтНачала = 1; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("amount", Количество); + Опции.Вставить("offset", СмещениеОтНачала); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокОпубликованныхОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОпубликованныхОбъектов", "YandexDisk"); + OPI_ПолучениеДанныхТестов.Проверка_ЯДискСписокФайлов(Результат, Количество, СмещениеОтНачала); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +#КонецОбласти + +#Область Viber + +Процедура CLI_Viber_УстановитьWebhook(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + URL = "http://api.athenaeum.digital/hs/viber"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "УстановитьWebhook", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьWebhook", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Viber_ПолучитьИнформациюОКанале(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьИнформациюОКанале", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОКанале", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберОк(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Viber_ПолучитьДанныеПользователя(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("user" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьДанныеПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеПользователя", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберПользователь(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Viber_ПолучитьОнлайнПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("users", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьОнлайнПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОнлайнПользователей", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберОнлайн(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка 1"); + МассивКнопок.Добавить("Кнопка 2"); + МассивКнопок.Добавить("Кнопка 3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьКлавиатуруИзМассиваКнопок", "Viber"); + +КонецПроцедуры + +Процедура CLI_Viber_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Текст = "Тестовое сообщение"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка 1"); + МассивКнопок.Добавить("Кнопка 2"); + МассивКнопок.Добавить("Кнопка 3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("text" , Текст); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("keyboard" , Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("text" , Текст); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("keyboard" , Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (канал)", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Viber_ОтправитьКартинку(ПараметрыФункции) + + Описание = "Тестовое сообщение"; + URL = ПараметрыФункции["Picture"]; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("picture" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel" , ОтправкаВКанал); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКартинку", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("picture" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel" , ОтправкаВКанал); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКартинку (канал)", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Viber_ОтправитьФайл(ПараметрыФункции) + + Расширение = "docx"; + URL = ПараметрыФункции["Document"]; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("file" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("ext" , Расширение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("file" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("ext" , Расширение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (канал)", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Viber_ОтправитьКонтакт(ПараметрыФункции) + + Имя = "Петр Петров"; + Телефон = "+123456789"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("name" , Имя); + Опции.Вставить("phone" , Телефон); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("name" , Имя); + Опции.Вставить("phone" , Телефон); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт (канал)", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Viber_ОтправитьЛокацию(ПараметрыФункции) + + Широта = "48.87373649724122"; + Долгота = "2.2954639195323967"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("lat" , Широта); + Опции.Вставить("long" , Долгота); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЛокацию", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("lat" , Широта); + Опции.Вставить("long" , Долгота); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЛокацию (канал)", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Viber_ОтправитьСсылку(ПараметрыФункции) + + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("url" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСсылку", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("url" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСсылку (канал)", "Viber"); + OPI_ПолучениеДанныхТестов.Проверка_ВайберСообщение(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +#КонецОбласти + +#Область GoogleWorkspace + +Процедура CLI_GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + + Опции = Новый Структура; + Опции.Вставить("id" , ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "СформироватьСсылкуПолученияКода", Опции); + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_Link", Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id" , ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code" , Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ПолучитьТокенПоКоду", Опции); + + Если ЗначениеЗаполнено(Результат["access_token"]) + И ЗначениеЗаполнено(Результат["refresh_token"]) Тогда + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_Token" , Результат["access_token"]); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_Refresh", Результат["refresh_token"]); + + КонецЕсли; + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleWorkspace_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id" , ClientID); + Опции.Вставить("secret" , ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ОбновитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_ГуглТокен(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_Token", Результат["access_token"]); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +#КонецОбласти + +#Область GoogleCalendar + +Процедура CLI_GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКалендарей", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_СоздатьКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Наименование = "Тестовый календарь"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКалендарь", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглКалендарь(Результат, Наименование); + + Календарь = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_NewCalendarID", Календарь); + OPI_Инструменты.ДобавитьПоле("Google_NewCalendarID", Календарь, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar" , Календарь); + Опции.Вставить("title" , Наименование); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьМетаданныеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьМетаданныеКалендаря", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar" , Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьМетаданныеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьМетаданныеКалендаря", "GoogleCalendar"); + + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar" , Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ДобавитьКалендарьВСписок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКалендарьВСписок", "GoogleCalendar"); + + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + ОсновнойЦвет = "#000000"; + ДополнительныйЦвет = "#ffd800"; + Скрытый = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar" , Календарь); + Опции.Вставить("primary" , ОсновнойЦвет); + Опции.Вставить("secondary", ДополнительныйЦвет); + Опции.Вставить("hidden" , Скрытый); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьКалендарьСписка", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКалендарьСписка", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглЦветКалендаря(Результат, ОсновнойЦвет, ДополнительныйЦвет); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar" , Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьКалендарьСписка", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКалендарьСписка", "GoogleCalendar"); + + ОсновнойЦвет = "#000000"; + ДополнительныйЦвет = "#ffd800"; + + OPI_ПолучениеДанныхТестов.Проверка_ГуглЦветКалендаря(Результат, ОсновнойЦвет, ДополнительныйЦвет); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ОчиститьОсновнойКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьОсновнойКалендарь", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar" , Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарьИзСписка", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКалендарьИзСписка", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_УдалитьКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar" , Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКалендарь", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_СоздатьСобытие(ПараметрыФункции) + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Наименование = "Новое событие"; + Описание = "Описание тестового события"; + Час = 3600; + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + Вложения = Новый Соответствие; + + Вложения.Вставить("Картинка1", Картинка1); + Вложения.Вставить("Картинка2", Картинка2); + + ОписаниеСобытия = Новый Соответствие; + ОписаниеСобытия.Вставить("Описание" , Описание); + ОписаниеСобытия.Вставить("Заголовок" , Наименование); + ОписаниеСобытия.Вставить("МестоПроведения" , "В офисе"); + ОписаниеСобытия.Вставить("ДатаНачала" , ТекущаяДата); + ОписаниеСобытия.Вставить("ДатаОкончания" , ОписаниеСобытия["ДатаНачала"] + Час); + ОписаниеСобытия.Вставить("МассивURLФайловВложений" , Вложения); + ОписаниеСобытия.Вставить("ОтправлятьУведомления" , Истина); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("props" , ОписаниеСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьСобытие", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСобытие", "GoogleCalendar"); + + Событие = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Google_EventID", Событие); + OPI_Инструменты.ДобавитьПоле("Google_EventID", Событие, "Строка", ПараметрыФункции); + + OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ИзменитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + Описание = "Новое описание события"; + + ОписаниеСобытия = Новый Соответствие; + ОписаниеСобытия.Вставить("Описание", Описание); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("props" , ОписаниеСобытия); + Опции.Вставить("event" , Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьСобытие", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСобытие", "GoogleCalendar"); + + Наименование = "Новое событие"; + + OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ПолучитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("event" , Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСобытие", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытие", "GoogleCalendar"); + + Наименование = "Новое событие"; + Описание = "Новое описание события"; + + OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ПереместитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Событие = ПараметрыФункции["Google_EventID"]; + + КалендарьИсточник = ПараметрыФункции["Google_NewCalendarID"]; + КалендарьПриемник = ПараметрыФункции["Google_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from" , КалендарьИсточник); + Опции.Вставить("to" , КалендарьПриемник); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПереместитьСобытие", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьСобытие", "GoogleCalendar"); + + Наименование = "Новое событие"; + Описание = "Новое описание события"; + + OPI_ПолучениеДанныхТестов.Проверка_ГКОбъект(Результат, Наименование, Описание); + + OPI_GoogleCalendar.ПереместитьСобытие(Токен, КалендарьПриемник, КалендарьИсточник, Событие); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_УдалитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("event" , Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьСобытие", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСобытие", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ПолучитьСписокСобытий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокСобытий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСобытий", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьОписаниеСобытия", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеСобытия", "GoogleCalendar"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область GoogleDrive + +Процедура CLI_GoogleDrive_ПолучитьСписокКаталогов(ПараметрыФункции) + + Имя = "Тестовая папка"; + Токен = ПараметрыФункции["Google_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("querry", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКаталогов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКаталогов", "GoogleDrive"); + + Результат = Результат[0]; + + OPI_ПолучениеДанныхТестов.Проверка_ГуглКаталоги(Результат); + + Идентификатор = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GD_Catalog", Идентификатор); + OPI_Инструменты.ДобавитьПоле("GD_Catalog", Идентификатор, "Строка", ПараметрыФункции); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_Catalog"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьИнформациюОбОбъекте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбОбъекте", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглКаталог(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Картинка = ПараметрыФункции["Picture"]; + Каталог = ПараметрыФункции["GD_Catalog"]; + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); + Описание.Вставить("Родитель", Каталог); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file" , Картинка); + Опции.Вставить("props", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглОбъект(Результат, Описание); + + Идентификатор = Результат["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GD_File", Идентификатор); + OPI_Инструменты.ДобавитьПоле("GD_File", Идентификатор, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_СкопироватьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + НовоеИмя = "Скопированный файл.jpeg"; + НовыйРодитель = "root"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object" , Идентификатор); + Опции.Вставить("title" , НовоеИмя); + Опции.Вставить("catalog", НовыйРодитель); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкопироватьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьОбъект", "GoogleDrive"); + + Описание = Новый Структура("Имя,MIME", НовоеИмя, "image/jpeg"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглОбъект(Результат, Описание); + + Идентификатор = Результат["id"]; + + МассивУдаляемых = ПараметрыФункции["МассивУдаляемых"]; + МассивУдаляемых.Добавить(Идентификатор); + ПараметрыФункции.Вставить("МассивУдаляемых", МассивУдаляемых); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object" , Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкачатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайл", "GoogleDrive"); + + Размер = OPI_ЗапросыHTTP.Get(ПараметрыФункции["Picture"]).Размер(); + ЛишниеБайты = 2; + + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, Размер + ЛишниеБайты); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_ОбновитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + НовоеИмя = "Обновленный файл.jpg"; + Идентификатор = ПараметрыФункции["GD_File"]; + Файл = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object" , Идентификатор); + Опции.Вставить("file" , Файл); + Опции.Вставить("title" , НовоеИмя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ОбновитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьФайл", "GoogleDrive"); + + Описание = Новый Структура("Имя,MIME", НовоеИмя, "image/jpeg"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглОбъект(Результат, Описание); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Каталог = "root"; + ИмяСодержит = "data"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("querry" , ИмяСодержит); + Опции.Вставить("catalog", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_УдалитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object" , Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + Для Каждого Удаляемый Из ПараметрыФункции["МассивУдаляемых"] Цикл + + Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Удаляемый); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект"); + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + OPI_Инструменты.Пауза(2); + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_GoogleDrive_ПолучитьОписаниеФайла(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеФайла", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_СоздатьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + Комментарий = "Текст комментария"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object" , Идентификатор); + Опции.Вставить("text" , Комментарий); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьКомментарий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКомментарий", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглКомментарий(Результат, Комментарий); + + Идентификатор = Результат["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GD_Comment", Идентификатор); + OPI_Инструменты.ДобавитьПоле("GD_Comment", Идентификатор, "Строка", ПараметрыФункции); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_ПолучитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + ИДКомментария = ПараметрыФункции["GD_Comment"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object" , Идентификатор); + Опции.Вставить("comment", ИДКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьКомментарий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКомментарий", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглКомментарий(Результат, "Текст комментария"); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_ПолучитьСписокКомментариев(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object" , Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКомментариев", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКомментариев", "GoogleDrive"); + + Комментарии = Результат["comments"]; + ОбъектКомментарий = Комментарии[Комментарии.ВГраница()]; + + OPI_ПолучениеДанныхТестов.Проверка_ГуглКомментарий(ОбъектКомментарий, "Текст комментария"); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_УдалитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + ИДКомментария = ПараметрыФункции["GD_Comment"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("object" , Идентификатор); + Опции.Вставить("comment", ИДКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьКомментарий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКомментарий", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleDrive_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Каталог = ПараметрыФункции["GD_Catalog"]; + Имя = "Тестовая папка"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("title" , Имя); + Опции.Вставить("catalog", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПапку", "GoogleDrive"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглКаталог(Результат); + + ИДКаталога = Результат["id"]; + OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("title" , Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПапку (корень)"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглКаталог(Результат); + + ИДКаталога = Результат["id"]; + OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); + +КонецПроцедуры + +#КонецОбласти + +#Область GoogleSheets + +Процедура CLI_GoogleSheets_СоздатьКнигу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Наименование = "Тестовая таблица"; + + МассивЛистов = Новый Массив; + МассивЛистов.Добавить("Лист1"); + МассивЛистов.Добавить("Лист2"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("title" , Наименование); + Опции.Вставить("sheets", МассивЛистов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКнигу", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглКнига(Результат, Наименование, МассивЛистов); + + Книга = Результат["spreadsheetId"]; + Лист = Результат["sheets"][0]["properties"]["sheetId"]; + Лист = OPI_Инструменты.ЧислоВСтроку(Лист); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GS_Spreadsheet", Книга); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GS_Sheet" , Лист); + + OPI_Инструменты.ДобавитьПоле("GS_Spreadsheet", Книга, "Строка", ПараметрыФункции); + OPI_Инструменты.ДобавитьПоле("GS_Sheet" , Лист , "Строка", ПараметрыФункции); + + Наименование = "Тестовая таблица (доп.)"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("title" , Наименование); + Опции.Вставить("sheets", МассивЛистов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); + + Книга = Результат["spreadsheetId"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GS_Spreadsheet2", Книга); + OPI_Инструменты.ДобавитьПоле("GS_Spreadsheet2", Книга, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_ПолучитьКнигу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GS_Spreadsheet"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); + + Наименование = "Тестовая таблица"; + + МассивЛистов = Новый Массив; + МассивЛистов.Добавить("Лист1"); + МассивЛистов.Добавить("Лист2"); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКнигу", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглКнига(Результат, Наименование, МассивЛистов); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_КопироватьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Откуда = ПараметрыФункции["GS_Spreadsheet"]; + Куда = ПараметрыФункции["GS_Spreadsheet2"]; + Лист = ПараметрыФункции["GS_Sheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from" , Откуда); + Опции.Вставить("to" , Куда); + Опции.Вставить("sheet", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "КопироватьЛист", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "КопироватьЛист", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглЛист(Результат); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_ДобавитьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Наименование = "Тестовый лист"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("title" , Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ДобавитьЛист", Опции); + + НовыйЛист = Результат["replies"][0]["addSheet"]["properties"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЛист", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглЛист(НовыйЛист); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_УдалитьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = ПараметрыФункции["GS_Sheet"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("sheet" , Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УдалитьЛист", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЛист", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглЭлементКниги(Результат, Книга); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Наименование = "Тестовая таблица (изм.)"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("title" , Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ИзменитьНаименованиеКниги", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьНаименованиеКниги", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглЭлементКниги(Результат, Книга); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_ПолучитьТаблицу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Книга); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТаблицу", "GoogleSheets"); + + Наименование = "Тестовая таблица (изм.)"; + OPI_ПолучениеДанныхТестов.Проверка_ГуглИмяТаблицы(Результат, Наименование); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + СоответствиеЗначений = Новый Соответствие; + СоответствиеЗначений.Вставить("A1", "Это A1"); + СоответствиеЗначений.Вставить("A2", "Это A2"); + СоответствиеЗначений.Вставить("B2", "Это B2"); + СоответствиеЗначений.Вставить("B3", "Это B3"); + СоответствиеЗначений.Вставить("A3", "Это A3"); + СоответствиеЗначений.Вставить("A4", "Это A4"); + СоответствиеЗначений.Вставить("B1", "Это B1"); + СоответствиеЗначений.Вставить("B4", "Это B4"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("data" , СоответствиеЗначений); + Опции.Вставить("sheetname" , Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УстановитьЗначенияЯчеек", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьЗначенияЯчеек", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглОбновлениеЯчеек(Результат, СоответствиеЗначений.Количество()); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + МассивЯчеек = Новый Массив; + МассивЯчеек.Добавить("B2"); + МассивЯчеек.Добавить("A3"); + МассивЯчеек.Добавить("B4"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("cells" , МассивЯчеек); + Опции.Вставить("sheetname" , Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗначенияЯчеек", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглЗначенияЯчеек(Результат, МассивЯчеек.Количество()); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("sheetname" , Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗначенияЯчеек (все)"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглЭлементКниги(Результат, Книга); + +КонецПроцедуры + +Процедура CLI_GoogleSheets_ОчиститьЯчейки(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + МассивЯчеек = Новый Массив; + МассивЯчеек.Добавить("B2"); + МассивЯчеек.Добавить("A3"); + МассивЯчеек.Добавить("B4"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("cells" , МассивЯчеек); + Опции.Вставить("sheetname" , Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ОчиститьЯчейки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьЯчейки", "GoogleSheets"); + OPI_ПолучениеДанныхТестов.Проверка_ГуглОчисткаЯчеек(Результат, МассивЯчеек.Количество()); + +КонецПроцедуры + +#КонецОбласти + +#Область Twitter + +Процедура CLI_Twitter_ПолучитьТокен(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Код = "123456"; + + Опции = Новый Структура; + Опции.Вставить("code" , Код); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Twitter_ПолучитьСсылкуАвторизации(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + + Опции = Новый Структура; + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьСсылкуАвторизации", Опции); + + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуАвторизации", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Twitter_URL", Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Twitter_ОбновитьТокен(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + + Опции = Новый Структура; + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ОбновитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьТокен", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТокен(Результат); + + Рефреш = Результат["refresh_token"]; + Токен = Результат["access_token"]; + + Если ЗначениеЗаполнено(Рефреш) И Не Рефреш = "null" Тогда + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Twitter_Refresh", Рефреш); + КонецЕсли; + + Если ЗначениеЗаполнено(Токен) И Не Токен = "null" Тогда + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Twitter_Token" , Токен); + КонецЕсли; + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Twitter_СоздатьТекстовыйТвит(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТекстовыйТвит", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТекстовыйТвит", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Twitter_СоздатьТвитКартинки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("pictures", МассивКартинок); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитКартинки", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитКартинки (одиночная)"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + Картинка = OPI_ЗапросыHTTP.Get(Картинка); + + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитКартинки (ИВФ)"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + OPI_Инструменты.Пауза(20); + +КонецПроцедуры + +Процедура CLI_Twitter_СоздатьТвитВидео(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Видео = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу + Видео2 = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу + + МассивВидео = Новый Массив; + МассивВидео.Добавить(Видео); + МассивВидео.Добавить(Видео2); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("videos", МассивВидео); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитВидео", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("videos", Видео); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитВидео (одиночная)"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + Видео = OPI_ЗапросыHTTP.Get(Видео); + + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("videos", Видео); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитВидео (ИВФ)"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + OPI_Инструменты.Пауза(20); + +КонецПроцедуры + +Процедура CLI_Twitter_СоздатьТвитГифки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Гифка = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу + Гифка2 = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу + + МассивГифок = Новый Массив; + МассивГифок.Добавить(Гифка); + МассивГифок.Добавить(Гифка2); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", МассивГифок); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитГифки", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", Гифка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитГифки (одиночная)"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + Гифка = OPI_ЗапросыHTTP.Get(Гифка); + + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", Гифка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитГифки (ИВФ)"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + OPI_Инструменты.Пауза(15); + + OPI_Инструменты.Пауза(20); + +КонецПроцедуры + +Процедура CLI_Twitter_СоздатьТвитОпрос(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("Вариант 1"); + МассивОтветов.Добавить("Вариант 2"); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("options" , МассивОтветов); + Опции.Вставить("duration", 60); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитОпрос", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТвитОпрос", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + + OPI_Инструменты.Пауза(20); + +КонецПроцедуры + +Процедура CLI_Twitter_СоздатьПроизвольныйТвит(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твитт" + Строка(Новый УникальныйИдентификатор); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + МассивКартинок = Новый Массив(); + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("files", МассивКартинок); + Опции.Вставить("type" , "tweet_image"); + Опции.Вставить("auth" , Параметры); + + МассивМедиа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); + + Опции = Новый Структура; + Опции.Вставить("text" , Текст); + Опции.Вставить("media" , МассивМедиа); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьПроизвольныйТвит", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПроизвольныйТвит", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_ТвиттерТекст(Результат, Текст); + + OPI_Инструменты.Пауза(20); + +КонецПроцедуры + +Процедура CLI_Twitter_ЗагрузитьМассивВложений(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + МассивКартинок = Новый Массив(); + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("files", МассивКартинок); + Опции.Вставить("type" , "tweet_image"); + Опции.Вставить("auth" , Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьМассивВложений", "Twitter"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область Notion + +Процедура CLI_Notion_СоздатьСтраницу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Заголовок = "Тестовый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page" , Родитель); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСтраницу", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат); + + Страница = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Notion_Page", Страница); + OPI_Инструменты.ДобавитьПоле("Notion_Page", Страница, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Notion_СоздатьБазуДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Заголовок = "Тестовый заголовок"; + + Свойства = Новый Соответствие; + Свойства.Вставить("Имя" , "title"); + Свойства.Вставить("Описание" , "rich_text"); + Свойства.Вставить("Номер" , "number"); + Свойства.Вставить("Статус" , "status"); + Свойства.Вставить("Дата создания" , "date"); + Свойства.Вставить("Картинка" , "files"); + Свойства.Вставить("Активен" , "checkbox"); + Свойства.Вставить("Сайт" , "url"); + Свойства.Вставить("Почта" , "email"); + Свойства.Вставить("Телефон" , "phone_number"); + Свойства.Вставить("Пользователь" , "people"); + + ВыборЗначения = Новый Соответствие; + ВыборЗначения.Вставить("Новый" , "green"); + ВыборЗначения.Вставить("В работе" , "yellow"); + ВыборЗначения.Вставить("Удаленный", "red"); + + Свойства.Вставить("Статус", ВыборЗначения); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page" , Родитель); + Опции.Вставить("title", Заголовок); + Опции.Вставить("props", Свойства); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "database"); + + База = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Notion_Base", База); + OPI_Инструменты.ДобавитьПоле("Notion_Base", База, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Notion_ИзменитьСвойстваБазы(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + + Заголовок = "Тестовый заголовок"; + Описание = "Тестовое описание"; + + Свойства = Новый Соответствие; + Свойства.Вставить("Почта", "rich_text"); // Тип поля "Почта" будет изменен с email на текст + Свойства.Вставить("Сайт"); // Поле "Сайт" будет удалено + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("props" , Свойства); + Опции.Вставить("title" , Заголовок); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваБазы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСвойстваБазы", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "database"); + +КонецПроцедуры + +Процедура CLI_Notion_ПолучитьСтраницу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Страница = ПараметрыФункции["Notion_Page"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("page" , Страница); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьСтраницу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтраницу", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Notion_ПолучитьБазуДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьБазуДанных", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "database"); + +КонецПроцедуры + +Процедура CLI_Notion_СоздатьСтраницуВБазу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + Картинка_ = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + + Картинка = Новый Соответствие; + Картинка.Вставить("Лого", Картинка_); + + Свойства = Новый Соответствие; + Свойства.Вставить("Имя" , "ООО Вектор"); + Свойства.Вставить("Описание" , "Наш первый клиент"); + Свойства.Вставить("Номер" , 1); + Свойства.Вставить("Статус" , "Обычный"); + Свойства.Вставить("Дата создания" , OPI_Инструменты.ПолучитьТекущуюДату()); + Свойства.Вставить("Картинка" , Картинка); + Свойства.Вставить("Активен" , Истина); + Свойства.Вставить("Сайт" , "https://vector.ru"); + Свойства.Вставить("Почта" , "mail@vector.ru"); + Свойства.Вставить("Телефон" , "88005553535"); + Свойства.Вставить("Статус" , "Новый"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base" , База); + Опции.Вставить("data" , Свойства); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницуВБазу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСтраницуВБазу", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнСтраницаБазы(Результат, База); + +КонецПроцедуры + +Процедура CLI_Notion_ИзменитьСвойстваСтраницы(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Страница = ПараметрыФункции["Notion_Page"]; + Иконка = ПараметрыФункции["Picture"]; + Обложка = ПараметрыФункции["Picture2"]; + Архивировать = Ложь; + + Свойства = Новый Соответствие; + Свойства.Вставить("Активен" , Ложь); + Свойства.Вставить("Почта" , "vector@mail.ru"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("page" , Страница); + Опции.Вставить("data" , Свойства); + Опции.Вставить("icon" , Иконка); + Опции.Вставить("cover" , Обложка); + Опции.Вставить("archive", Архивировать); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваСтраницы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСвойстваСтраницы", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Notion_ВернутьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_Block"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("block" , Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВернутьБлок", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "block"); + +КонецПроцедуры + +Процедура CLI_Notion_СоздатьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Блок = ПараметрыФункции["Notion_Block"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("block" , Блок); + + ДанныеБлока = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("page" , Родитель); + Опции.Вставить("block" , ДанныеБлока); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБлок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБлок", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "list"); + + Блок = Результат["results"][0]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Notion_NewBlock", Блок); + OPI_Инструменты.ДобавитьПоле("Notion_NewBlock", Блок, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Notion_ВернутьДочерниеБлоки(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_NewBlock"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("block" , Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьДочерниеБлоки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВернутьДочерниеБлоки", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "list"); + +КонецПроцедуры + +Процедура CLI_Notion_УдалитьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_NewBlock"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("block" , Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "УдалитьБлок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБлок", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "block"); + +КонецПроцедуры + +Процедура CLI_Notion_СписокПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СписокПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СписокПользователей", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "list"); + +КонецПроцедуры + +Процедура CLI_Notion_ПолучитьДанныеПользователя(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Пользователь = ПараметрыФункции["Notion_User"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("user" , Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьДанныеПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеПользователя", "Notion"); + OPI_ПолучениеДанныхТестов.Проверка_НоушнОбъект(Результат, "user"); + +КонецПроцедуры + +#КонецОбласти + +#Область Slack + +Процедура CLI_Slack_ПолучитьИнформациюОБоте(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИнформациюОБоте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОБоте", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакБот(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСписокПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователей", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакПользователи(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСписокРабочихОбластей(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокРабочихОбластей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРабочихОбластей", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОбласти(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ОтправитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + // Текстовое + + Текст = "Тестовое сообщение 1"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСообщение(Результат, Текст, Канал); + + Отметка = Результат["ts"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_MessageTS", Отметка); + OPI_Инструменты.ДобавитьПоле("Slack_MessageTS", Отметка, "Строка", ПараметрыФункции); + + // С вложениями (в примере: блок с картинкой) + + Текст = "Сообщение с картинкой"; + Картинка = ПараметрыФункции["Picture"]; + МассивБлоков = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt" , "Картинка"); + + Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + + МассивБлоков.Добавить(Блок); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text" , Текст); + Опции.Вставить("blocks" , МассивБлоков); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение (картинка)"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСообщение(Результат, Текст, Канал); + + // Отложенное + + Текст = "Отложенное сообщение"; + Час = 3600; + Сутки = 24; + + ДатаОтправки = OPI_Инструменты.ПолучитьТекущуюДату() + (Сутки * Час); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text" , Текст); + Опции.Вставить("date" , ДатаОтправки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение (отложенное)"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОтложенноеСообщение(Результат, Канал); + + Отметка = Результат["scheduled_message_id"]; + Результат = OPI_Slack.УдалитьСообщение(Токен, Канал, Отметка, Истина); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение (отложенное)"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_СформироватьБлокКартинку(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt" , "Картинка"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьБлокКартинку", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ИзменитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Текст = "Тестовое сообщение 2"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp" , Отметка); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ИзменитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСообщение", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСообщение(Результат, Текст, Канал); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp" , Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтветовНаСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОтветовНаСообщение", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСообщения(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСсылкуНаСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp" , Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСсылкуНаСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуНаСообщение", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСсылкаСообщения(Результат, Канал); + +КонецПроцедуры + +Процедура CLI_Slack_УдалитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp" , Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ОтправитьЭфемерноеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + Картинка = ПараметрыФункции["Picture"]; + Текст = "Эфимерное сообщение"; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt" , "Картинка"); + + Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text" , Текст); + Опции.Вставить("user" , Пользователь); + Опции.Вставить("blocks" , Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьЭфемерноеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЭфемерноеСообщение", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакЭфемерное(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтложенныхСообщений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОтложенныхСообщений", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОтложенные(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_СоздатьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Имя = "testconv" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("title" , Имя); + Опции.Вставить("private", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СоздатьКанал", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКанал", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, Имя); + + Канал = Результат["channel"]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_NewChannel", Канал); + OPI_Инструменты.ДобавитьПоле("Slack_NewChannel", Канал, "Строка", ПараметрыФункции); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_NewChannelName", Имя); + OPI_Инструменты.ДобавитьПоле("Slack_NewChannelName", Имя, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Slack_УстановитьТемуКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Тема = "Тестовая тема"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("theme" , Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьТемуКанала", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьТемуКанала", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакТемаКанала(Результат, Тема); + +КонецПроцедуры + +Процедура CLI_Slack_УстановитьЦельКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Цель = "Тестовая цель"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("purpose", Цель); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьЦельКанала", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьЦельКанала", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьКанал", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКанал", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура CLI_Slack_ПригласитьПользователейВКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("users" , Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПригласитьПользователейВКанал", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПригласитьПользователейВКанал", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура CLI_Slack_ВыгнатьПользователяИзКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("user" , Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВыгнатьПользователяИзКанала", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыгнатьПользователяИзКанала", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьИсториюКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИсториюКанала", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИсториюКанала", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакИсторияКанала(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСписокПользователейКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователейКанала", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейКанала", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакПользователиКанала(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПокинутьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПокинутьКанал", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПокинутьКанал", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ВступитьВКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВступитьВКанал", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВступитьВКанал", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура CLI_Slack_ПереименоватьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Название = "testconv" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("title" , Название); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПереименоватьКанал", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьКанал", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакКанал(Результат, Название); + +КонецПроцедуры + +Процедура CLI_Slack_АрхивироватьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "АрхивироватьКанал", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "АрхивироватьКанал", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСписокКаналов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокКаналов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКаналов", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСписокКаналов(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ОткрытьДиалог(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("users", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОткрытьДиалог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрытьДиалог", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакДиалог(Результат); + + Диалог = Результат["channel"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_Dialog", Диалог); + OPI_Инструменты.ДобавитьПоле("Slack_Dialog", Диалог, "Строка", ПараметрыФункции); + + Результат = OPI_Slack.ОтправитьСообщение(Токен, Диалог, "Тест диалог"); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение (диалог)"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ЗакрытьДиалог(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Диалог = ПараметрыФункции["Slack_Dialog"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("conv" , Диалог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗакрытьДиалог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрытьДиалог", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСписокФайлов(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов (все)"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСписокФайлов(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Файл = ПараметрыФункции["Document"]; // URL, Двоичные данные или Путь к файлу + + ИмяФайла = "megadoc.docx"; + Заголовок = "Новый файл"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("file" , Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("title" , Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл" , "Slack"); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СделатьФайлПубличным", "Slack"); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СделатьФайлПриватным", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакФайл(Результат, ИмяФайла); + + ЗагруженныйФайл = Результат["files"][0]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_FileID", ЗагруженныйФайл); + OPI_Инструменты.ДобавитьПоле("Slack_FileID", ЗагруженныйФайл, "Строка", ПараметрыФункции); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("file" , Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("title" , Заголовок); + Опции.Вставить("channel" , Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл (в канал)"); + OPI_ПолучениеДанныхТестов.Проверка_СлакФайл(Результат, ИмяФайла); + OPI_Slack.УдалитьФайл(Токен, Результат["files"][0]["id"]); + +КонецПроцедуры + +Процедура CLI_Slack_СделатьФайлПубличным(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПубличным", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_СделатьФайлПриватным(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПриватным", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьДанныеФайла(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьДанныеФайла", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеФайла", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакФайл(Результат, "megadoc.docx"); + +КонецПроцедуры + +Процедура CLI_Slack_УдалитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьФайл", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьСписокВнешнихФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("channel" , Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокВнешнихФайлов", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСписокФайлов(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокВнешнихФайлов (все)"); + OPI_ПолучениеДанныхТестов.Проверка_СлакСписокФайлов(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_ДобавитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Заголовок = "Новый файл"; + Файл = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("url" , Файл); + Опции.Вставить("title" , Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ДобавитьВнешнийФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьВнешнийФайл", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакВнешнийФайл(Результат, Заголовок); + + ЗагруженныйФайл = Результат["file"]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Slack_ExtFileID", ЗагруженныйФайл); + OPI_Инструменты.ДобавитьПоле("Slack_ExtFileID", ЗагруженныйФайл, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Slack_ПолучитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьВнешнийФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнийФайл", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакВнешнийФайл(Результат, "Новый файл"); + +КонецПроцедуры + +Процедура CLI_Slack_ОтправитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , ИдентификаторФайла); + Опции.Вставить("channels", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьВнешнийФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьВнешнийФайл", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура CLI_Slack_УдалитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьВнешнийФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВнешнийФайл", "Slack"); + OPI_ПолучениеДанныхТестов.Проверка_СлакОк(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область Airtable + +Процедура CLI_Airtable_СоздатьБазу(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + Область = ПараметрыФункции["Airtable_Workspace"]; + Наименование = "Тестовая база"; + + МассивПолей = Новый Массив; + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); + + ИмяТаблицы = "Тестовая таблица"; + + СоответствиеТаблиц = Новый Соответствие; + СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("ws" , Область); + Опции.Вставить("title" , Наименование); + Опции.Вставить("tablesdata", СоответствиеТаблиц); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьБазу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазу", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТБазаСТаблицей(Результат, ИмяТаблицы); + + База = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Base", База); + OPI_Инструменты.ДобавитьПоле("Airtable_Base", База, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьТаблицыБазы(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьТаблицыБазы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТаблицыБазы", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТСписокТаблиц(Результат); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьСписокБаз(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокБаз", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокБаз", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТСписокБаз(Результат); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьПолеНомера(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Номер"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеНомера", "Airtable"); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьПолеСтроковое(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Строковое"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСтроковое", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеСтроковое", "Airtable"); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьПолеВложения(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Вложение"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеВложения", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеВложения", "Airtable"); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьПолеФлажка(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Флажок"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеФлажка", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеФлажка", "Airtable"); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьПолеДаты(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Дата"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеДаты", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеДаты", "Airtable"); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьПолеТелефона(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Телефон"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеТелефона", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеТелефона", "Airtable"); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьПолеПочты(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Почта"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеПочты", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеПочты", "Airtable"); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьПолеСсылки(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Ссылка"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСсылки", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПолеСсылки", "Airtable"); + +КонецПроцедуры + +Процедура CLI_Airtable_СоздатьТаблицу(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + + МассивПолей = Новый Массив; + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеВложения("Вложение")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеФлажка("Флажок")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеДаты("Дата")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеТелефона("Телефон")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеПочты("Почта")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСсылки("Ссылка")); + + Наименование = "Тестовая таблица 2"; + Описание = "Новая таблица"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("title" , Наименование); + Опции.Вставить("fieldsdata" , МассивПолей); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТТаблица(Результат, Наименование, Описание); + + Таблица = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Table", Таблица); + OPI_Инструменты.ДобавитьПоле("Airtable_Table", Таблица, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Airtable_ИзменитьТаблицу(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Наименование = "Тестовая таблица 2 (изм.)"; + Описание = "Новая таблица (изм.)"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("title" , Наименование); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТаблицу", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТТаблица(Результат, Наименование, Описание); + +КонецПроцедуры + +Процедура CLI_Airtable_СоздатьПоле(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Имя = Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("title", Имя); + + Поле = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("title" , Имя); + Опции.Вставить("fielddata", Поле); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьПоле", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПоле", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТПоле(Результат, Имя); + + Поле = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Field", Поле); + OPI_Инструменты.ДобавитьПоле("Airtable_Field", Поле, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Airtable_ИзменитьПоле(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Поле = ПараметрыФункции["Airtable_Field"]; + + Имя = Строка(Новый УникальныйИдентификатор) + "(изм.)"; + Описание = "Новое описание"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("field" , Поле); + Опции.Вставить("title" , Имя); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьПоле", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПоле", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТТаблица(Результат, Имя, Описание); + +КонецПроцедуры + +Процедура CLI_Airtable_СоздатьЗаписи(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + + Номер = 10; + Строковое = "Привет"; + + ОписаниеСтроки1 = Новый Структура("Номер,Строковое", Номер, Строковое); + ОписаниеСтроки2 = Новый Структура("Номер,Строковое", Номер, Строковое); + + МассивОписаний = Новый Массив; + МассивОписаний.Добавить(ОписаниеСтроки1); + МассивОписаний.Добавить(ОписаниеСтроки2); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("data" , МассивОписаний); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗаписи", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТЗаписи(Результат); + + МассивУдаляемых = Новый Массив; + + Для Каждого Запись Из Результат["records"] Цикл + + ТекущаяЗапись = Запись["id"]; + МассивУдаляемых.Добавить(ТекущаяЗапись); + + КонецЦикла; + + OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, МассивУдаляемых); + + // Одиночное + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("data" , ОписаниеСтроки1); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗаписи (одна)"); + OPI_ПолучениеДанныхТестов.Проверка_АТЗаписьНомерСтрока(Результат, Номер, Строковое); + + Запись = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Record", Запись); + OPI_Инструменты.ДобавитьПоле("Airtable_Record", Запись, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьЗапись(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("record", Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьЗапись", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗапись", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТЗапись(Результат, Запись); + +КонецПроцедуры + +Процедура CLI_Airtable_СоздатьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + Текст = "Тестовый комментарий"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("record", Запись); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьКомментарий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКомментарий", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТТекст(Результат, Текст); + + Комментарий = Результат["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Comment", Комментарий); + OPI_Инструменты.ДобавитьПоле("Airtable_Comment", Комментарий, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_Airtable_ИзменитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + Комментарий = ПараметрыФункции["Airtable_Comment"]; + + Текст = "Тестовый комментарий (изм.)"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("record" , Запись); + Опции.Вставить("comment", Комментарий); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьКомментарий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКомментарий", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТТекст(Результат, Текст); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьКомментарии(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("record" , Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьКомментарии", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКомментарии", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТКомментарии(Результат); + +КонецПроцедуры + +Процедура CLI_Airtable_УдалитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + Комментарий = ПараметрыФункции["Airtable_Comment"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("record" , Запись); + Опции.Вставить("comment", Комментарий); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьКомментарий", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКомментарий", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТУдалениеКомментария(Результат, Комментарий); + +КонецПроцедуры + +Процедура CLI_Airtable_ПолучитьСписокЗаписей(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗаписей", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТЗаписи(Результат); + +КонецПроцедуры + +Процедура CLI_Airtable_УдалитьЗаписи(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("base" , База); + Опции.Вставить("table" , Таблица); + Опции.Вставить("records", Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи", "Airtable"); + OPI_ПолучениеДанныхТестов.Проверка_АТЗаписи(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область Dropbox + +Процедура CLI_Dropbox_ПолучитьСсылкуАвторизации(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + + Опции = Новый Структура; + Опции.Вставить("appkey", КлючПриложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСсылкуАвторизации", Опции); + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуАвторизации", "Dropbox"); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Строка"); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьТокен(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; + Код = ПараметрыФункции["Dropbox_Code"]; + + Опции = Новый Структура; + Опции.Вставить("appkey" , КлючПриложения); + Опции.Вставить("appsecret", СекретПриложения); + Опции.Вставить("code" , Код); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен"); + + Токен = Результат["access_token"]; + Рефреш = Результат["refresh_token"]; + + Если ЗначениеЗаполнено(Токен) Тогда + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_Token", Токен); + КонецЕсли; + + Если ЗначениеЗаполнено(Рефреш) Тогда + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_Refresh", Рефреш); + КонецЕсли; + +КонецПроцедуры + +Процедура CLI_Dropbox_ОбновитьТокен(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; + РефрешТокен = ПараметрыФункции["Dropbox_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("appkey" , КлючПриложения); + Опции.Вставить("appsecret", СекретПриложения); + Опции.Вставить("refresh" , РефрешТокен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОбновитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьТокен"); + + Токен = Результат["access_token"]; + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Токен).Заполнено(); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_Token", Токен); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + Опции.Вставить("detail", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбОбъекте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбОбъекте", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксФайл(Результат, Путь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьПревью(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьПревью", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПревью", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 120000); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ЗагрузитьФайл(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Картинка = ПараметрыФункции["Picture"]; + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("file" , КартинкаПуть); + Опции.Вставить("path" , Путь); + Опции.Вставить("overwrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксФайл(Результат, Путь); + УдалитьФайлы(КартинкаПуть); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ЗагрузитьФайлПоURL(ПараметрыФункции) + + Путь = "/New/url_doc.docx"; + Токен = ПараметрыФункции["Dropbox_Token"]; + URL = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("url" , URL); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайлПоURL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлПоURL", "Dropbox"); + + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксРабота(Результат); + + Работа = Результат["async_job_id"]; + + ПараметрыФункции.Вставить("Dropbox_Job", Работа); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_Job", Работа); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + ИДРаботы = ПараметрыФункции["Dropbox_Job"]; + Статус = "in_progress"; + + Пока Статус = "in_progress" Цикл + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("job" , ИДРаботы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусЗагрузкиПоURL", Опции); + Статус = Результат[".tag"]; + + OPI_Инструменты.Пауза(5); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусЗагрузкиПоURL", "Dropbox"); + + КонецЦикла; + + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксСтатус(Результат); + + Путь = "/New/url_doc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Путь); + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_УдалитьОбъект(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Путь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_КопироватьОбъект(ПараметрыФункции) + + Оригинал = "/New/pic.png"; + Копия = "/New/pic_copy.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("from" , Оригинал); + Опции.Вставить("to" , Копия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "КопироватьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "КопироватьОбъект", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Копия); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Копия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Копия); + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПереместитьОбъект(ПараметрыФункции) + + ОригиналныйПуть = "/New/pic.png"; + ЦелевойПуть = "/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("from" , ОригиналныйПуть); + Опции.Вставить("to" , ЦелевойПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьОбъект", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, ЦелевойПуть); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("from" , ЦелевойПуть); + Опции.Вставить("to" , ОригиналныйПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, ОригиналныйПуть); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/Новый каталог"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СоздатьПапку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПапку", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Путь); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМетаданные(Результат, Путь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайл", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 2000000); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_СкачатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьПапку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьПапку", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьСписокФайловПапки(ПараметрыФункции) + + Путь = "/New"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокФайловПапки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайловПапки", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМассив(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + Опции.Вставить("amount", 1); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокВерсийОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокВерсийОбъекта", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксМассив(Результат, 1); + + Ревизия = Результат["entries"][0]["rev"]; + + ПараметрыФункции.Вставить("Dropbox_FileRevision", Ревизия); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_FileRevision", Ревизия); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ВосстановитьОбъектКВерсии(ПараметрыФункции) + + Версия = ПараметрыФункции["Dropbox_FileRevision"]; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + Опции.Вставить("rev" , Версия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ВосстановитьОбъектКВерсии", Опции); + + OPI_Инструменты.Пауза(30); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьОбъектКВерсии", "Dropbox"); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьСписокТегов(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + МассивПутей = Новый Массив; + МассивПутей.Добавить("/New/Dogs.mp3"); + МассивПутей.Добавить("/New/mydoc.docx"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("paths" , МассивПутей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокТегов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТегов", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксТеги(Результат, МассивПутей.Количество()); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("paths" , "/New/mydoc.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокТегов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТегов (одиночный)"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксТеги(Результат, 1); + + ЕстьТег = Ложь; + + Для Каждого Тег Из Результат["paths_to_tags"][0]["tags"] Цикл + Если Тег["tag_text"] = "важное" Тогда + ЕстьТег = Истина; + КонецЕсли; + КонецЦикла; + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЕстьТег).Равно(Истина); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ДобавитьТег(ПараметрыФункции) + + Тег = "Важное"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + Опции.Вставить("tag" , Тег); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьТег", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТег", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_УдалитьТег(ПараметрыФункции) + + Тег = "Важное"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("path" , Путь); + Опции.Вставить("tag" , Тег); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьТег", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТег", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбАккаунте", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропбоксАккаунт(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("account", Результат["account_id"]); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбАккаунте (сторонний)"); + OPI_ПолучениеДанныхТестов.Проверка_ДропбоксАккаунт(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьДанныеИспользованияПространства", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеИспользованияПространства", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропбоксПространство(Результат); + +КонецПроцедуры + +Процедура CLI_Dropbox_ДобавитьПользователейКФайлу(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Почта = ПараметрыФункции["Dropbox_OtherUser"]; + Файл = ПараметрыФункции["Dropbox_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , Файл); + Опции.Вставить("emails" , Почта); + Опции.Вставить("readonly", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейКФайлу", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропбоксУчастник(Результат, Почта, Ложь); + + Почты = Новый Массив; + Почты.Добавить(Почта); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , Файл); + Опции.Вставить("emails" , Почты); + Опции.Вставить("readonly", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейКФайлу (доп.) "); + OPI_ПолучениеДанныхТестов.Проверка_ДропбоксУчастник(Результат, Почта, Истина); + +КонецПроцедуры + +Процедура CLI_Dropbox_ОпубликоватьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОпубликоватьПапку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОпубликоватьПапку", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксПубличнаяПапка(Результат); + + IDПапки = Результат["shared_folder_id"]; + + ПараметрыФункции.Вставить("Dropbox_SharedFolder", IDПапки); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_SharedFolder", IDПапки); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ОтменитьПубликациюПапки(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Папка = ПараметрыФункции["Dropbox_SharedFolder"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("folder", Папка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюПапки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтменитьПубликациюПапки", "Dropbox"); + + ТекущийСтатус = "in_progress"; + IDРаботы = Результат["async_job_id"]; + + Пока ТекущийСтатус = "in_progress" Цикл + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("job" , IDРаботы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусАсинхронногоИзменения", Опции); + + ТекущийСтатус = Результат[".tag"]; + OPI_Инструменты.Пауза(3); + + КонецЦикла; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусАсинхронногоИзменения", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_ДропБоксСтатус(Результат); + + ПараметрыФункции.Вставить("Dropbox_NewJobID", IDРаботы); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Dropbox_NewJobID", IDРаботы); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + IDРаботы = ПараметрыФункции["Dropbox_NewJobID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("job" , IDРаботы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусАсинхронногоИзменения", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Dropbox_ДобавитьПользователейКПапке(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Почта = ПараметрыФункции["Dropbox_OtherUser"]; + Папка = ПараметрыФункции["Dropbox_SharedFolder"]; // shared_folder_id + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("folder" , Папка); + Опции.Вставить("emails" , Почта); + Опции.Вставить("readonly", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейКПапке", "Dropbox"); + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + + Почты = Новый Массив; + Почты.Добавить(Почта); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("folder" , Папка); + Опции.Вставить("emails" , Почты); + Опции.Вставить("readonly", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_Dropbox_ОтменитьПубликациюФайла(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Файл = ПараметрыФункции["Dropbox_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюФайла", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтменитьПубликациюФайла", "Dropbox"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область VKTeams + +Процедура CLI_VKTeams_ПроверитьТокен(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПроверитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьТокен", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТПользователь(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПолучитьСобытия(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDПоследнего = 0; + + Для Н = 1 По 5 Цикл // В реальной работе - бесконечный цикл + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("last" , IDПоследнего); + Опции.Вставить("timeout", 3); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьСобытия", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытия", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСобытия(Результат); + + События = Результат["events"]; + + // Обработка событий... + + Если Не События.Количество() = 0 Тогда + + IDПоследнего = События[События.ВГраница()]["eventId"]; + + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.Пауза(3); + +КонецПроцедуры + +Процедура CLI_VKTeams_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + Текст = "Текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (простое)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; + Текст = "Полужирный текст сообщения"; + Разметка = "HTML"; + + Клавиатура = Новый Массив; + МассивСтрокиКнопок = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("text" , "Кнопка1"); + Опции.Вставить("data" , "НажатиеКнопки1"); + Опции.Вставить("style", "attention"); + + Кнопка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "СформироватьКнопкуДействия", Опции); + МассивСтрокиКнопок.Добавить(Кнопка); + + Опции = Новый Структура; + Опции.Вставить("text" , "Кнопка2"); + Опции.Вставить("url" , "https://openintegrations.dev"); + + Кнопка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "СформироватьКнопкуДействия", Опции); + МассивСтрокиКнопок.Добавить(Кнопка); + + Клавиатура.Добавить(МассивСтрокиКнопок); + Клавиатура.Добавить(МассивСтрокиКнопок); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("text" , Текст); + Опции.Вставить("reply" , IDЦитируемого); + Опции.Вставить("keyboard", Клавиатура); + Опции.Вставить("parsemod", Разметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + + IDСообщения = Результат["msgId"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VkTeams_MessageID", IDСообщения); + ПараметрыФункции.Вставить("VkTeams_MessageID", IDСообщения); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПереслатьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDЧатаИсточника = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("fromid" , IDЧатаИсточника); + Опции.Вставить("chatid" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьСообщение (простое)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + + Текст = "Дополнительный текст"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("fromid" , IDЧатаИсточника); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьСообщение", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ОтправитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + Текст = "Подпись к файлу"; + + Файл = ПараметрыФункции["Document"]; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("docx"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("file" , Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (URL)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("file" , ФайлПуть); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (Путь)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("file" , ФайлДД); + Опции.Вставить("text" , Текст); + Опции.Вставить("filename" , "ВажныйДокумент.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + + УдалитьФайлы(ФайлПуть); + + IDФайла = Результат["fileId"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VkTeams_FileID", IDФайла); + ПараметрыФункции.Вставить("VkTeams_FileID", IDФайла); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПереслатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDФайла = ПараметрыФункции["VkTeams_FileID"]; + Текст = "Подпись к файлу"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьФайл", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПолучитьИнформациюОФайле(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDФайла = ПараметрыФункции["VkTeams_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fileid" , IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОФайле", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТФайл(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ИзменитьТекстСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТекстСообщения (простое)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + + Текст = "Новый полужирный текст сообщения"; + Разметка = "HTML"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("text" , Текст); + Опции.Вставить("parsemod" , Разметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТекстСообщения", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VKTeams_УдалитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("messageid", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УдалитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VKTeams_ОтправитьГолосовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; + + Файл = ПараметрыФункции["Audio2"] ; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("m4a"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file" , Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьГолосовоеСообщение (URL)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file" , ФайлПуть); + Опции.Вставить("reply" , IDЦитируемого); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьГолосовоеСообщение (Путь)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + + УдалитьФайлы(ФайлПуть); + + IDФайла = Результат["fileId"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VkTeams_VoiceID", IDФайла); + ПараметрыФункции.Вставить("VkTeams_VoiceID", IDФайла); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПереслатьГолосовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDФайла = ПараметрыФункции["VkTeams_VoiceID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьГолосовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьГолосовоеСообщение", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ИсключитьПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("members", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИсключитьПользователейЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИсключитьПользователейЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ИзменитьАватарЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Файл = ПараметрыФункции["Picture3"]; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("png"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("file" , Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьАватарЧата (URL)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("file" , ФайлПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьАватарЧата (Путь)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + + УдалитьФайлы(ФайлПуть); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПолучитьИнформациюОЧате(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОЧате", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОЧате", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТЧат(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПолучитьАдминистраторовЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьАдминистраторовЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьАдминистраторовЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСписок(Результат, "admins"); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПолучитьПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьПользователейЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователейЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСписок(Результат, "members"); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗаблокированныхПользователейЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаблокированныхПользователейЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСписок(Результат, "users"); + +КонецПроцедуры + +Процедура CLI_VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗапросыВступленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗапросыВступленияЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТСписок(Результат, "users"); + +КонецПроцедуры + +Процедура CLI_VKTeams_ЗаблокироватьПользователяЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("userid" , Пользователь); + Опции.Вставить("dellast", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗаблокироватьПользователяЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗаблокироватьПользователяЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_РазблокироватьПользователяЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("userid" , Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "РазблокироватьПользователяЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "РазблокироватьПользователяЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ЗакрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("messageid" , IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗакрепитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗакрепитьСообщение", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ОткрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("messageid" , IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОткрепитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОткрепитьСообщение", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("userid" , Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОдобритьЗаявкуНаВступление (один)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТЗаявки(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОдобритьЗаявкуНаВступление", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТЗаявки(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("userid" , Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтклонитьЗаявкуНаВступление (один)", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТЗаявки(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтклонитьЗаявкуНаВступление", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТЗаявки(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_УстановитьЗаголовокЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Новый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьЗаголовокЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьЗаголовокЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_УстановитьОписаниеЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Новое описание"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьОписаниеЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьОписаниеЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_УстановитьПравилаЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Текст новых правил"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("chatid" , IDЧата); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьПравилаЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьПравилаЧата", "VkTeams"); + OPI_ПолучениеДанныхТестов.Проверка_ВКТИстина(Результат); + +КонецПроцедуры + +Процедура CLI_VKTeams_СформироватьКнопкуДействия(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("text" , "Кнопка1"); + Опции.Вставить("data" , "НажатиеКнопки1"); + Опции.Вставить("style" , "attention"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьПравилаЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьКнопкуДействия", "VkTeams"); + +КонецПроцедуры + +#КонецОбласти + +#Область Ozon + +Процедура CLI_Ozon_ПолучитьДеревоКатегорийИТиповТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + Опции = Новый Структура; + Опции.Вставить("clientid", IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("lang" , "EN"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьДеревоКатегорийИТиповТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДеревоКатегорийИТиповТоваров (EN)", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокКатегорий(Результат); + + Опции = Новый Структура; + Опции.Вставить("clientid", IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьДеревоКатегорийИТиповТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДеревоКатегорийИТиповТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокКатегорий(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьХарактеристикиКатегории(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDКатегории = 17029016; + IDТипа = 970778135; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("categoryid", IDКатегории); + Опции.Вставить("typeid" , IDТипа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьХарактеристикиКатегории", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьХарактеристикиКатегории", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокХарактеристик(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьЗначенияХарактеристики(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDКатегории = 17054869; + IDТипа = 97311; + IDХарактеристики = 85; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("categoryid" , IDКатегории); + Опции.Вставить("typeid" , IDТипа); + Опции.Вставить("attributeid", IDХарактеристики); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьЗначенияХарактеристики", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗначенияХарактеристики", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокЗначенийХарактеристики(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_НайтиЗначенияХарактеристики(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDКатегории = 17054869; + IDТипа = 97311; + IDХарактеристики = 85; + Значение = "Sunshine"; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("categoryid" , IDКатегории); + Опции.Вставить("typeid" , IDТипа); + Опции.Вставить("attributeid", IDХарактеристики); + Опции.Вставить("value" , Значение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "НайтиЗначенияХарактеристики", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НайтиЗначенияХарактеристики", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонСписокЗначенийХарактеристики(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтруктуруТовара(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруТовара", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_СоздатьОбновитьТовары(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + Картинка1 = ПараметрыФункции["Picture"]; + Картинка2 = ПараметрыФункции["Picture2"]; + Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/"; + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + // Стандартные реквизиты + + СтруктураТовара = Новый Структура; + СтруктураТовара.Вставить("description_category_id", 17028922); + СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); + СтруктураТовара.Вставить("offer_id" , "143210609"); + СтруктураТовара.Вставить("barcode" , "112772873170"); + СтруктураТовара.Вставить("price" , "1300"); + СтруктураТовара.Вставить("old_price" , "1300"); + СтруктураТовара.Вставить("vat" , "0.1"); + СтруктураТовара.Вставить("height" , 250); + СтруктураТовара.Вставить("width" , 150); + СтруктураТовара.Вставить("depth" , 10); + СтруктураТовара.Вставить("dimension_unit" , "mm"); + СтруктураТовара.Вставить("weight" , 100); + СтруктураТовара.Вставить("weight_unit" , "g"); + СтруктураТовара.Вставить("images" , МассивКартинок); + + // Видео + + Опции = Новый Структура; + Опции.Вставить("item" , СтруктураТовара); + Опции.Вставить("url" , Видео); + Опции.Вставить("title" , "video1"); + + СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДобавитьВидеоТовара", Опции); + + // Атрибуты, индивидуальные для разных категорий + + АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы"); + АтрибутКатегории2 = Новый Структура("dictionary_value_id,value", 5060050 , "Samsung"); + АтрибутКатегории3 = Новый Структура("dictionary_value_id,value", 61576 , "серый"); + АтрибутКатегории4 = Новый Структура("dictionary_value_id,value", 95911 , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); + + АтрибутКатегории5 = Новый Структура("value", "Комплект защитных плёнок для X3 NFC. Темный хлопок"); + + Опции = Новый Структура; + Опции.Вставить("object" , СтруктураТовара); + Опции.Вставить("attributeid", 5076); + Опции.Вставить("complexid" , 0); + Опции.Вставить("values" , АтрибутКатегории1); + + СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДополнитьКомплексныйАтрибут", Опции); + + OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 85 , 0, АтрибутКатегории2); + OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 10096, 0, АтрибутКатегории3); + OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 8229 , 0, АтрибутКатегории4); + OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 9048 , 0, АтрибутКатегории5); + + Опции = Новый Структура; + Опции.Вставить("clientid", IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("items" , СтруктураТовара); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "СоздатьОбновитьТовары", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьОбновитьТовары", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат); + + IDЗадания = Результат["result"]["task_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_TaskID", IDЗадания); + ПараметрыФункции.Вставить("Ozon_TaskID", IDЗадания); + + OPI_Инструменты.Пауза(120); + +КонецПроцедуры + +Процедура CLI_Ozon_ДобавитьВидеоТовара(ПараметрыФункции) + + Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/"; + + СтруктураТовара = Новый Структура; + СтруктураТовара.Вставить("description_category_id", 17028922); + СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); + СтруктураТовара.Вставить("offer_id" , "143210608"); + СтруктураТовара.Вставить("barcode" , "112772873170"); + СтруктураТовара.Вставить("price" , "1000"); + СтруктураТовара.Вставить("old_price" , "1100"); + СтруктураТовара.Вставить("vat" , "0.1"); + СтруктураТовара.Вставить("height" , 250); + СтруктураТовара.Вставить("width" , 150); + СтруктураТовара.Вставить("depth" , 10); + СтруктураТовара.Вставить("dimension_unit" , "mm"); + СтруктураТовара.Вставить("weight" , 100); + СтруктураТовара.Вставить("weight_unit" , "g"); + + // Видео + + Опции = Новый Структура; + Опции.Вставить("item" , СтруктураТовара); + Опции.Вставить("url" , Видео); + Опции.Вставить("title" , "video1"); + + СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДобавитьВидеоТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(СтруктураТовара, "ДобавитьВидеоТовара", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(СтруктураТовара); + +КонецПроцедуры + +Процедура CLI_Ozon_ДобавитьВидеообложкуТовара(ПараметрыФункции) + + Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/"; + + СтруктураТовара = Новый Структура; + СтруктураТовара.Вставить("description_category_id", 17028922); + СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); + СтруктураТовара.Вставить("offer_id" , "143210608"); + СтруктураТовара.Вставить("barcode" , "112772873170"); + СтруктураТовара.Вставить("price" , "1000"); + СтруктураТовара.Вставить("old_price" , "1100"); + СтруктураТовара.Вставить("vat" , "0.1"); + СтруктураТовара.Вставить("height" , 250); + СтруктураТовара.Вставить("width" , 150); + СтруктураТовара.Вставить("depth" , 10); + СтруктураТовара.Вставить("dimension_unit" , "mm"); + СтруктураТовара.Вставить("weight" , 100); + СтруктураТовара.Вставить("weight_unit" , "g"); + + // Видеообложка + + Опции = Новый Структура; + Опции.Вставить("item" , СтруктураТовара); + Опции.Вставить("url" , Видео); + + СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДобавитьВидеообложкуТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(СтруктураТовара, "ДобавитьВидеообложкуТовара", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(СтруктураТовара); + +КонецПроцедуры + +Процедура CLI_Ozon_ДополнитьКомплексныйАтрибут(ПараметрыФункции) + + СтруктураТовара = Новый Структура; + СтруктураТовара.Вставить("description_category_id", 17028922); + СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок"); + СтруктураТовара.Вставить("offer_id" , "143210608"); + СтруктураТовара.Вставить("barcode" , "112772873170"); + СтруктураТовара.Вставить("price" , "1000"); + СтруктураТовара.Вставить("old_price" , "1100"); + СтруктураТовара.Вставить("vat" , "0.1"); + СтруктураТовара.Вставить("height" , 250); + СтруктураТовара.Вставить("width" , 150); + СтруктураТовара.Вставить("depth" , 10); + СтруктураТовара.Вставить("dimension_unit" , "mm"); + СтруктураТовара.Вставить("weight" , 100); + СтруктураТовара.Вставить("weight_unit" , "g"); + + АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы"); + + Опции = Новый Структура; + Опции.Вставить("object" , СтруктураТовара); + Опции.Вставить("attributeid", 5076); + Опции.Вставить("complexid" , 0); + Опции.Вставить("values" , АтрибутКатегории1); + + СтруктураТовара = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ДополнитьКомплексныйАтрибут", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(СтруктураТовара, "ДополнитьКомплексныйАтрибут", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(СтруктураТовара); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтатусДобавленияТовара(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDЗадачи = ПараметрыФункции["Ozon_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("taskid" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусДобавленияТовара", "Ozon"); + + Пока Результат["result"]["items"][0]["status"] = "pending" Цикл + + OPI_Инструменты.Пауза(30); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияТовара", Опции); + + КонецЦикла; + + OPI_ПолучениеДанныхТестов.Проверка_ОзонНовыеТовары(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_СоздатьТоварыПоOzonID(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + СтруктураТовара = Новый Структура; + СтруктураТовара.Вставить("name" , "Новый импортированный товар"); + СтруктураТовара.Вставить("sku" , 1626044001); + СтруктураТовара.Вставить("offer_id" , "91132"); + СтруктураТовара.Вставить("price" , "1100"); + СтруктураТовара.Вставить("old_price" , "1100"); + СтруктураТовара.Вставить("vat" , "0.1"); + СтруктураТовара.Вставить("currency_code", "RUB"); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("items" , СтруктураТовара); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "СоздатьТоварыПоOzonID", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТоварыПоOzonID", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат); + + IDЗадачи = Результат["result"]["task_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_SkuTaskID", IDЗадачи); + ПараметрыФункции.Вставить("Ozon_SkuTaskID", IDЗадачи); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("taskid" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияТовара", Опции); + + Пока Результат["result"]["items"][0]["status"] = "pending" Цикл + + OPI_Инструменты.Пауза(30); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияТовара", Опции); + + КонецЦикла; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусДобавленияТовара (SKU)", "Ozon"); + + OPI_ПолучениеДанныхТестов.Проверка_ОзонНовыеТовары(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСокращеннуюСтруктуруТовара(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСокращеннуюСтруктуруТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСокращеннуюСтруктуруТовара", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтруктуруОбновленияХарактеристик(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруОбновленияХарактеристик", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруОбновленияХарактеристик", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ОбновитьХарактеристикиТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + СтруктураХаракетристик = Новый Структура("offer_id", "143210609"); + + АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы"); + АтрибутКатегории2 = Новый Структура("dictionary_value_id,value", 5060050 , "Samsung"); + АтрибутКатегории3 = Новый Структура("dictionary_value_id,value", 61576 , "красный"); + + OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураХаракетристик, 5076 , 0, АтрибутКатегории1); + OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураХаракетристик, 85 , 0, АтрибутКатегории2); + OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураХаракетристик, 10096, 0, АтрибутКатегории3); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("items" , СтруктураХаракетристик); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ОбновитьХарактеристикиТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьХарактеристикиТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат, Ложь); + + IDЗадачи = Результат["task_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_AttUpdateTaskID", IDЗадачи); + ПараметрыФункции.Вставить("Ozon_AttUpdateTaskID", IDЗадачи); + + Результат = OPI_Ozon.ПолучитьСтатусДобавленияТовара(IDКлиента, КлючAPI, IDЗадачи); + + Пока Результат["result"]["items"][0]["status"] = "pending" Цикл + + OPI_Инструменты.Пауза(30); + Результат = OPI_Ozon.ПолучитьСтатусДобавленияТовара(IDКлиента, КлючAPI, IDЗадачи); + + КонецЦикла; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусДобавленияТовара (хар.)", "Ozon"); + + OPI_ПолучениеДанныхТестов.Проверка_ОзонНовыеТовары(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтруктуруФильтраТоваров(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруФильтраТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСписокТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + МассивID = Новый Массив; + МассивID.Добавить("143210609"); + + Фильтр = Новый Структура; + Фильтр.Вставить("visibility" , "ALL"); + Фильтр.Вставить("offer_id" , МассивID); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("filter" , Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонМассивОбъектов(Результат); + + IDТовара = Результат["result"]["items"][0]["product_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_ProductID", IDТовара); + ПараметрыФункции.Вставить("Ozon_ProductID", IDТовара); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьОписанияХарактеристикТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + МассивID = Новый Массив; + МассивID.Добавить("143210609"); + + Фильтр = Новый Структура; + Фильтр.Вставить("visibility", "ALL"); + Фильтр.Вставить("offer_id" , МассивID); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("filter" , Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьОписанияХарактеристикТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписанияХарактеристикТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьКонтентРейтингТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + SKU = 1626044001; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("sku" , SKU); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьКонтентРейтингТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКонтентРейтингТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонМассивРейтингов(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьИнформациюОТоварах(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + Артикул = "143210609"; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("offerid" , Артикул); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьИнформациюОТоварах", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТоварах", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонТовары(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьОписаниеТовара(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + Артикул = "143210609"; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("offerid" , Артикул); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьОписаниеТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеТовара", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонТовар(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьЛимитыРаботыСТоварами(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьЛимитыРаботыСТоварами", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЛимитыРаботыСТоварами", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонЛимиты(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ОбновитьИзображенияТовара(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Картинка1 = ПараметрыФункции["Picture"]; + Картинка2 = ПараметрыФункции["Picture2"]; + + МаркетинговыйЦвет = "GREEN"; + + МассивИзображений = Новый Массив; + МассивИзображений.Добавить(Картинка1); + МассивИзображений.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("productid", IDТовара); + Опции.Вставить("images" , МассивИзображений); + Опции.Вставить("color" , МаркетинговыйЦвет); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ОбновитьИзображенияТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьИзображенияТовара", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонКартинки(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПроверитьЗагрузкуИзображенийТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("products" , IDТовара); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПроверитьЗагрузкуИзображенийТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьЗагрузкуИзображенийТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонОбъекты(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ИзменитьАртикулыТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + СоответствиеАртикулов = Новый Соответствие; + СоответствиеАртикулов.Вставить("143210609", "143210613"); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("offers" , СоответствиеАртикулов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ИзменитьАртикулыТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьАртикулыТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонБезОшибок(Результат); + + СоответствиеАртикулов = Новый Соответствие; + СоответствиеАртикулов.Вставить("143210613", "143210609"); + + Результат = OPI_Ozon.ИзменитьАртикулыТоваров(IDКлиента, КлючAPI, СоответствиеАртикулов); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьАртикулыТоваров (обратный)", "Ozon"); + + OPI_ПолучениеДанныхТестов.Проверка_ОзонБезОшибок(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_АрхивироватьТовары(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("products" , IDТовара); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "АрхивироватьТовары", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "АрхивироватьТовары", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_РазархивироватьТовары(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("products" , IDТовара); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "РазархивироватьТовары", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "РазархивироватьТовары", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_УдалитьТоварыБезSKU(ПараметрыФункции) + + OPI_Инструменты.Пауза(30); + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Результат = OPI_Ozon.АрхивироватьТовары(IDКлиента, КлючAPI, IDТовара); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "АрхивироватьТовары (для удаления)", "Ozon"); + OPI_Инструменты.Пауза(15); + + Артикул = "143210609"; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("articles" , Артикул); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "УдалитьТоварыБезSKU", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТоварыБезSKU", "Ozon"); + +КонецПроцедуры + +Процедура CLI_Ozon_ЗагрузитьКодыАктивацииТовара(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Коды = Новый Массив; + Коды.Добавить("11111111"); + Коды.Добавить("22222222"); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("productid", IDТовара); + Опции.Вставить("codes" , Коды); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ЗагрузитьКодыАктивацииТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьКодыАктивацииТовара", "Ozon"); + + IDЗадания = 1; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_CodesTaskID", IDЗадания); + ПараметрыФункции.Вставить("Ozon_CodesTaskID", IDЗадания); + + OPI_Инструменты.Пауза(120); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтатусДобавленияКодов(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDЗадачи = ПараметрыФункции["Ozon_CodesTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("taskid" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияКодов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусДобавленияКодов", "Ozon"); + + Если ЗначениеЗаполнено(Результат["result"]) Тогда + Пока Результат["result"]["status"] = "pending" Цикл + + OPI_Инструменты.Пауза(30); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтатусДобавленияКодов", Опции); + + КонецЦикла; + КонецЕсли; + + //OPI_ПолучениеДанныхТестов.Проверка_ОзонДобавлениеКодов(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьКоличествоПодписчиковТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + SKU = 1626044001; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("sku" , 1626044001); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьКоличествоПодписчиковТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКоличествоПодписчиковТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонПодписчики(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСвязанныеSKU(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + SKU = 1626044001; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("sku" , 1626044001); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСвязанныеSKU", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСвязанныеSKU", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонSKU(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПривязатьШтрихкоды(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + СоответствиеШтрихкодов = Новый Соответствие; + СоответствиеШтрихкодов.Вставить("1626044001", "112233"); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("barcodes" , СоответствиеШтрихкодов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПривязатьШтрихкоды", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПривязатьШтрихкоды", "Ozon"); + +КонецПроцедуры + +Процедура CLI_Ozon_СоздатьШтрихкоды(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("productids", IDТовара); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "СоздатьШтрихкоды", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьШтрихкоды", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонБезОшибок(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСписокСкладов(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокСкладов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСкладов", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьКоличествоТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + МассивID = Новый Массив; + МассивID.Добавить("143210608"); + + Фильтр = Новый Структура; + Фильтр.Вставить("visibility" , "ALL"); + Фильтр.Вставить("offer_id" , МассивID); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("filter" , Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьКоличествоТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКоличествоТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонОбъекты(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ОбновитьЦеныТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Цены = Новый Структура; + Цены.Вставить("auto_action_enabled" , "DISABLED"); + Цены.Вставить("currency_code" , "RUB"); + Цены.Вставить("min_price" , "1300"); + Цены.Вставить("offer_id" , "143210610"); + Цены.Вставить("old_price" , "1400"); + Цены.Вставить("price" , "1300"); + Цены.Вставить("price_strategy_enabled", "DISABLED"); + Цены.Вставить("product_id" , IDТовара); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("prices" , Цены); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ОбновитьЦеныТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЦеныТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонМассивОбновлено(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ОбновитьКоличествоТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = ПараметрыФункции["Ozon_ProductID"]; + + Остатки = Новый Структура; + Остатки.Вставить("offer_id" , "143210610"); + Остатки.Вставить("product_id" , IDТовара); + Остатки.Вставить("stock" , 20); + Остатки.Вставить("warehouse_id", 1); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("stocks" , Остатки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ОбновитьКоличествоТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьКоличествоТоваров", "Ozon"); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьЦеныТоваров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьЦеныТоваров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЦеныТоваров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонОбъекты(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьИнформациюОбУценке(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + SKU = 1626044001; + + Опции = Новый Структура; + Опции.Вставить("clientid", IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("sku" , SKU); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьИнформациюОбУценке", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбУценке", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат, "items"); + +КонецПроцедуры + +Процедура CLI_Ozon_УстановитьСкидкуНаУцененныйТовар(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDТовара = 1156646653; + + Скидка = 10; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("productid", IDТовара); + Опции.Вставить("discount" , Скидка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "УстановитьСкидкуНаУцененныйТовар", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСкидкуНаУцененныйТовар", "Ozon"); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСписокАкций(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокАкций", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокАкций", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьДоступныеТоварыАкции(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDАкции = 111111111; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("actionid" , IDАкции); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьДоступныеТоварыАкции", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДоступныеТоварыАкции", "Ozon"); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьУчаствующиеТоварыАкции(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDАкции = 111111111; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("actionid" , IDАкции); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьУчаствующиеТоварыАкции", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьУчаствующиеТоварыАкции", "Ozon"); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтруктуруОстатковТовара(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруОстатковТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруОстатковТовара", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтруктуруЦеныТовара(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруЦеныТовара", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЦеныТовара", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСписокКластеров(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокКластеров", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКластеров", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонКластеры(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСписокСкладовОтгрузки(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + Поиск = "ТВЕРЬ"; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("search" , Поиск); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокСкладовОтгрузки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСкладовОтгрузки", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонПоиск(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_СоздатьЧерновикЗаявкиFBO(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + Кластер = 2; + + Позиции = Новый Соответствие; + Позиции.Вставить("1783161863", 5); + Позиции.Вставить("1784654052", 2); + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("clusters" , Кластер); + Опции.Вставить("items" , Позиции); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "СоздатьЧерновикЗаявкиFBO", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЧерновикЗаявкиFBO", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонЧерновик(Результат); + + IDЧерновика = Результат["operation_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_FBOOperID", IDЧерновика); + ПараметрыФункции.Вставить("Ozon_FBOOperID", IDЧерновика); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьЧерновикЗаявкиFBO(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + IDОперации = ПараметрыФункции["Ozon_FBOOperID"]; + + Статус = "CALCULATION_STATUS_IN_PROGRESS"; + + Опции = Новый Структура; + Опции.Вставить("clientid" , IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("oper" , IDОперации); + + Пока Статус = "CALCULATION_STATUS_IN_PROGRESS" Цикл + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьЧерновикЗаявкиFBO", Опции); + Статус = Результат["status"]; + + OPI_Инструменты.Пауза(20); + + КонецЦикла; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧерновикЗаявкиFBO", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонГотовыйЧерновик(Результат); + + IDЧерновика = Результат["draft_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_Draft", IDЧерновика); + ПараметрыФункции.Вставить("Ozon_Draft", IDЧерновика); + + IDСклада = Результат["clusters"][0]["warehouses"][0]["supply_warehouse"]["warehouse_id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_FBOWarehouse", IDСклада); + ПараметрыФункции.Вставить("Ozon_FBOWarehouse", IDСклада); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтруктуруДопПолейОтправления(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруДопПолейОтправления", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруДопПолейОтправления", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСтруктуруФильтраОтправлений(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСтруктуруФильтраОтправлений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраОтправлений", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьСписокОтправленийFBO(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + + ДопПоля = Новый Структура; + ДопПоля.Вставить("analytics_data", Истина); + ДопПоля.Вставить("financial_data", Истина); + + Фильтр = Новый Структура; + Фильтр.Вставить("since", XMLСтрока('20230101') + "Z"); + Фильтр.Вставить("to" , XMLСтрока('20240101') + "Z"); + + Опции = Новый Структура; + Опции.Вставить("clientid", IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("filter" , Фильтр); + Опции.Вставить("with" , ДопПоля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьСписокОтправленийFBO", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОтправленийFBO", "Ozon"); + OPI_ПолучениеДанныхТестов.Проверка_ОзонМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Ozon_ПолучитьТаймслотыFBO(ПараметрыФункции) + + IDКлиента = ПараметрыФункции["Ozon_ClientID"]; + КлючAPI = ПараметрыФункции["Ozon_ApiKey"]; + Сутки = 86400; + + ДатаОт = OPI_Инструменты.ПолучитьТекущуюДату(); + ДатаПо = ДатаОт + Сутки; + Черновик = ПараметрыФункции["Ozon_Draft"]; + Склад = ПараметрыФункции["Ozon_FBOWarehouse"]; + + Опции = Новый Структура; + Опции.Вставить("clientid", IDКлиента); + Опции.Вставить("apikey" , КлючAPI); + Опции.Вставить("from" , ДатаОт); + Опции.Вставить("to" , ДатаПо); + Опции.Вставить("draft" , Черновик); + Опции.Вставить("whs" , Склад); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьТаймслотыFBO", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТаймслотыFBO", "Ozon"); + //OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область Neocities + +Процедура CLI_Neocities_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Данные = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Путь = "testfolder/test_pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + Опции.Вставить("file" , Данные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл", "Neocities"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + +КонецПроцедуры + +Процедура CLI_Neocities_ЗагрузитьФайлы(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + Гифка = ПараметрыФункции["Gif"]; // URL, Путь или Двоичные данные + + СоответствиеФайлов = Новый Соответствие; + СоответствиеФайлов.Вставить("test/pic1.png", Картинка1); + СоответствиеФайлов.Вставить("test/gif.gif" , Картинка2); + СоответствиеФайлов.Вставить("pic2.png" , Гифка); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("files", СоответствиеФайлов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайлы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлы", "Neocities"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + +КонецПроцедуры + +Процедура CLI_Neocities_УдалитьВыбранныеФайлы(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + Пути = Новый Массив; + Пути.Добавить("/test/pic1.png"); + Пути.Добавить("/test/gif.gif"); + Пути.Добавить("/pic2.png"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", Пути); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВыбранныеФайлы", "Neocities"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + + Результат = OPI_Neocities.УдалитьВыбранныеФайлы(Токен, "/testfolder"); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВыбранныеФайлы (каталог 1)"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + + Результат = OPI_Neocities.УдалитьВыбранныеФайлы(Токен, "/test"); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьВыбранныеФайлы (каталог 2)"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + +КонецПроцедуры + +Процедура CLI_Neocities_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Путь = "test"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов (Все)"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path" , Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокФайлов", "Neocities"); + OPI_ПолучениеДанныхТестов.Проверка_НСФайлыКаталога(Результат, 2); + +КонецПроцедуры + +Процедура CLI_Neocities_ПолучитьДанныеОСайте(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Сайт = "2athenaeum"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеОСайте", "Neocities"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("sitename", Сайт); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДанныеОСайте (Сайт)"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + +КонецПроцедуры + +Процедура CLI_Neocities_ПолучитьТокен(ПараметрыФункции) + + Логин = ПараметрыФункции["NC_Login"]; + Пароль = ПараметрыФункции["NC_Password"]; + + Опции = Новый Структура; + Опции.Вставить("login" , Логин); + Опции.Вставить("password", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьТокен", Опции); + + Результат["api_key"] = "***"; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен", "Neocities"); + OPI_ПолучениеДанныхТестов.Проверка_НСУспех(Результат); + +КонецПроцедуры + +Процедура CLI_Neocities_СинхронизироватьКаталоги(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + ЛокальныйКаталог = "C:\test_site"; + УдаленныйКаталог = "test_sync"; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("local" , ЛокальныйКаталог); + Опции.Вставить("remote", УдаленныйКаталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "СинхронизироватьКаталоги", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СинхронизироватьКаталоги", "Neocities"); + OPI_ПолучениеДанныхТестов.Проверка_НССинхронизация(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область Bitrix24 + +Процедура CLI_Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыФункции) + + Домен = ПараметрыФункции["Bitrix24_Domain"]; + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + + Опции = Новый Структура; + Опции.Вставить("domain" , Домен); + Опции.Вставить("clientid", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСсылкуАвторизацииПриложения", Опции); + + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуАвторизацииПриложения", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_AuthURL", Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; + Code = ПараметрыФункции["Bitrix24_Code"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , ClientID); + Опции.Вставить("clientsecret", ClientSecret); + Опции.Вставить("code" , Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен", "Bitrix24"); + + Если ЗначениеЗаполнено(Результат["access_token"]) И ЗначениеЗаполнено(Результат["refresh_token"]) Тогда + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_Token" , Результат["access_token"]); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_Refresh", Результат["refresh_token"]); + КонецЕсли; + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; + Refresh = ПараметрыФункции["Bitrix24_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("clientid" , ClientID); + Опции.Вставить("clientsecret", ClientSecret); + Опции.Вставить("refresh" , Refresh); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОбновитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьТокен", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксАвторизация(Результат); + + Если ЗначениеЗаполнено(Результат["access_token"]) И ЗначениеЗаполнено(Результат["refresh_token"]) Тогда + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_Token" , Результат["access_token"]); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_Refresh", Результат["refresh_token"]); + КонецЕсли; + +КонецПроцедуры + +Процедура CLI_Bitrix24_СерверноеВремя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СерверноеВремя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксВремя(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СерверноеВремя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксВремя(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьНовость(ПараметрыФункции) + + Текст = "Текст новости"; + Заголовок = "Заголовок новости"; + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + + Файлы = Новый Соответствие; + Файлы.Вставить("1.png", Картинка1); + Файлы.Вставить("2.png", Картинка2); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("text" , Текст); + Опции.Вставить("files" , Файлы); + Опции.Вставить("title" , Заголовок); + Опции.Вставить("important", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьНовость (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDНовости = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookPostID", IDНовости); + ПараметрыФункции.Вставить("Bitrix24_HookPostID", IDНовости); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("text" , Текст); + Опции.Вставить("files" , Файлы); + Опции.Вставить("title" , Заголовок); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьНовость", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDНовости = Результат["result"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_PostID", IDНовости); + ПараметрыФункции.Вставить("Bitrix24_PostID", IDНовости); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьНовость(ПараметрыФункции) + + Текст = "Новый текст новости"; + Заголовок = "Новый заголовок новости"; + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + + Файлы = Новый Соответствие; + Файлы.Вставить("1.png", Картинка1); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("text" , Текст); + Опции.Вставить("files" , Файлы); + Опции.Вставить("title" , Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьНовость (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("text" , Текст); + Опции.Вставить("files" , Файлы); + Опции.Вставить("title" , Заголовок); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьНовость", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьНовость(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьНовость (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьНовость", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПросмотревшихВажное (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПросмотревшихВажное", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьНовости(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНовости (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассивОбъектов(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНовости", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассивОбъектов(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьКомментарийНовости(ПараметрыФункции) + + Текст = "Комментарий к новости"; + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКомментарийНовости (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + Текст = "Другой комментарий к новости"; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("text" , Текст); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКомментарийНовости", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьПолучателейКНовости(ПараметрыФункции) + + Видимость = "UA"; + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("vision" , Видимость); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПолучателейКНовости (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("postid" , IDНовости); + Опции.Вставить("vision" , Видимость); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПолучателейКНовости", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксПоля(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксПоля(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьЗадачу(ПараметрыФункции) + + // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields" , СтруктураЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookTaskID", IDЗадачи); + ПараметрыФункции.Вставить("Bitrix24_HookTaskID", IDЗадачи); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields" , СтруктураЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TaskID", IDЗадачи); + ПараметрыФункции.Вставить("Bitrix24_TaskID", IDЗадачи); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьЗадачу(ПараметрыФункции) + + // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Другой заголовок задачи"); + СтруктураЗадачи.Вставить("DESCRIPTION", "Другое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "1"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("fields" , СтруктураЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("fields" , СтруктураЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПринятьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПринятьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПринятьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтклонитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтклонитьЗадачу (хук)", "Bitrix24"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтклонитьЗадачу", "Bitrix24"); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ЗавершитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗавершитьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗавершитьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ВозобновитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВозобновитьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВозобновитьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтложитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтложитьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтложитьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_НачатьВыполнениеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НачатьВыполнениеЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НачатьВыполнениеЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НачатьНаблюдатьЗаЗадачей (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НачатьНаблюдатьЗаЗадачей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПрекратитьНаблюдатьЗаЗадачей (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПрекратитьНаблюдатьЗаЗадачей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПриостановитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПриостановитьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПриостановитьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДелегироватьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("user" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДелегироватьЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДелегироватьЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗадачуВИзбранное (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗадачуВИзбранное", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УбратьЗадачуИзИзбранного (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УбратьЗадачуИзИзбранного", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьИсториюЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИсториюЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСписок(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИсториюЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСписок(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокЗадач(ПараметрыФункции) + + // Полную структуру фильтра можно найти в функции ПолучитьСтруктуруФильтраЗадач + Фильтр = Новый Структура; + Фильтр.Вставить("CREATED_BY" , 1); + Фильтр.Вставить("RESPONSIBLE_ID", 10); + + Отступ = 1; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("filter" , Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗадач (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокЗадач(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("offset" , Отступ); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗадач", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокЗадач(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Текст = "Пункт чек-листа"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("text" , Текст); + Опции.Вставить("complete", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЭлемента = Результат["result"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCheckElementID", IDЭлемента); + ПараметрыФункции.Вставить("Bitrix24_HookCheckElementID", IDЭлемента); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("text" , Текст); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЭлементЧеклистаЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЭлемента = Результат["result"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CheckElementID", IDЭлемента); + ПараметрыФункции.Вставить("Bitrix24_CheckElementID", IDЭлемента); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Текст = "Новый текст пункта чек-листа"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + Опции.Вставить("text" , Текст); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЭлементЧеклистаЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЭлементЧеклистаЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧеклистЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧеклистЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЭлементЧеклистаЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЭлементЧеклистаЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВозобновитьЭлементЧеклистаЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("element" , IDЭлемента); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВозобновитьЭлементЧеклистаЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьФайлВЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDФайла = ПараметрыФункции["Bitrix24_TaskFileID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("fileid" , IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьФайлВЗадачу (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксВложение(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьФайлВЗадачу", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксВложение(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПроверитьДоступКЗадаче(ПараметрыФункции) + + МассивПользователей = Новый Массив; + МассивПользователей.Добавить("1"); + МассивПользователей.Добавить("10"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("users" , МассивПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьДоступКЗадаче (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксДоступныеДействия(Результат, МассивПользователей.Количество()); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("users" , МассивПользователей); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьДоступКЗадаче", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксДоступныеДействия(Результат, МассивПользователей.Количество()); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтключитьЗвукЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьЗвукЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьЗвукЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ВключитьЗвукЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВключитьЗвукЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВключитьЗвукЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЗадача(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьЗависимостьЗадач(ПараметрыФункции) + + IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; + ТипСвязи = 0; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("taskfrom" , IDИсточника); + Опции.Вставить("taskto" , IDПриемника); + Опции.Вставить("linktype" , ТипСвязи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗависимостьЗадач (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + Результат = OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); + + IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; + ТипСвязи = 2; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("taskfrom" , IDИсточника); + Опции.Вставить("taskto" , IDПриемника); + Опции.Вставить("linktype" , ТипСвязи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗависимостьЗадач", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + Результат = OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьЗависимостьЗадач(ПараметрыФункции) + + IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; + ТипСвязи = 0; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("taskfrom" , IDИсточника); + Опции.Вставить("taskto" , IDПриемника); + Опции.Вставить("linktype" , ТипСвязи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗависимостьЗадач (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; + ТипСвязи = 2; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("taskfrom" , IDИсточника); + Опции.Вставить("taskto" , IDПриемника); + Опции.Вставить("linktype" , ТипСвязи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗависимостьЗадач", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПланЗадачНаДень (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПланЗадачНаДень", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЗадач", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗадач", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Текст = "Задача невыполнима, расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКомментарийЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDКомментария = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCommentID", IDКомментария); + ПараметрыФункции.Вставить("Bitrix24_HookCommentID", IDКомментария); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Текст = "Задача выполнима, не расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("text" , Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКомментарийЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDКомментария = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentID", IDКомментария); + ПараметрыФункции.Вставить("Bitrix24_CommentID", IDКомментария); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКомментарийЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКомментарийЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьРезультатИзКомментария(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьРезультатИзКомментария (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксРезультат(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьРезультатИзКомментария", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксРезультат(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьРезультатИзКомментария(ПараметрыФункции) Экспорт + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьРезультатИзКомментария (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьРезультатИзКомментария", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокРезультатов(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРезультатов (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокРезультатов(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРезультатов", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокРезультатов(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКомментариевЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокКомментариев(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКомментариевЗадачи", "Bitrix24"); + + OPI_ПолучениеДанныхТестов.Проверка_БитриксСписокКомментариев(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьКомменатрийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомменатрийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКомменатрийЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксКомментарий(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомменатрийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКомменатрийЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксКомментарий(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Текст = "Задача изменена, не расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКомментарийЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Текст = "Задача изменена, расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("text" , Текст); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКомментарийЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКомментария", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруКомментария", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокХранилищ(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокХранилищ (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксХранилища(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокХранилищ", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксХранилища(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьХранилищеПриложения(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилищеПриложения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьХранилищеПриложения", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDХранилища = Результат["result"]["ID"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_StorageID", IDХранилища); + ПараметрыФункции.Вставить("Bitrix24_StorageID", IDХранилища); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыФункции) + + Наименование2 = "Картинка2.jpg"; + Наименование = "Картинка1.jpg"; + + Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные + Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные + + IDПриемника = 3; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование2); + Опции.Вставить("file" , Картинка2); + Опции.Вставить("storageid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлВХранилище (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDФайла = Результат["result"]["ID"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookFileID", IDФайла); + ПараметрыФункции.Вставить("Bitrix24_HookFileID", IDФайла); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование); + Опции.Вставить("file" , Картинка); + Опции.Вставить("storageid", IDПриемника); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлВХранилище", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDФайла = Результат["result"]["ID"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_FileID", IDФайла); + ПараметрыФункции.Вставить("Bitrix24_FileID", IDФайла); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_HookFileID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьФайл (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьФайл", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьКаталогВХранилище(ПараметрыФункции) + + IDХранилища = 3; + Наименование = "Новый каталог"; + Наименование2 = "Новый каталог 2"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("title" , Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКаталогВХранилище (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDКаталога = Результат["result"]["ID"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookFolderID", IDКаталога); + ПараметрыФункции.Вставить("Bitrix24_HookFolderID", IDКаталога); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("title" , Наименование); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКаталогВХранилище", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDКаталога = Результат["result"]["ID"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_FolderID", IDКаталога); + ПараметрыФункции.Вставить("Bitrix24_FolderID", IDКаталога); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьКаталог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКаталог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКаталог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьХранилище(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDХранилища = 3; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("storageid" , IDХранилища); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьХранилище (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("storageid" , IDХранилища); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьХранилище", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDХранилища = 3; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("storageid" , IDХранилища); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСодержимоеХранилища (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("storageid" , IDХранилища); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСодержимоеХранилища", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПереименоватьХранилище(ПараметрыФункции) + + Наименование = "Новое имя хранилища"; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDХранилища = ПараметрыФункции["Bitrix24_StorageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("storageid" , IDХранилища); + Опции.Вставить("title" , Наименование); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьХранилище", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьХранилище", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОКаталоге (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОКаталоге", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьПодкаталог(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + Наименование = "Новый подкаталог"; + Наименование2 = "Новый подкаталог 2"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("title" , Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодкаталог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDПодкаталога = Результат["result"]["ID"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookSubfolderID", IDПодкаталога); + ПараметрыФункции.Вставить("Bitrix24_HookSubfolderID", IDПодкаталога); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("title" , Наименование); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодкаталог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDПодкаталога = Результат["result"]["ID"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_SubfolderID", IDПодкаталога); + ПараметрыФункции.Вставить("Bitrix24_SubfolderID", IDПодкаталога); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СкопироватьКаталог(ПараметрыФункции) + + IDПриемника = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("tagetid" , IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьКаталог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDПриемника = ПараметрыФункции["Bitrix24_SubfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("tagetid" , IDПриемника); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьКаталог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнююСсылкуКаталога (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнююСсылкуКаталога", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраКаталога (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраКаталога", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДочерниеЭлементыКаталога (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДочерниеЭлементыКаталога", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПоместитьКаталогВКорзину(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоместитьКаталогВКорзину (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоместитьКаталогВКорзину", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ВосстановитьКаталог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьКаталог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьКаталог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПереместитьКаталог(ПараметрыФункции) + + IDПриемника = ПараметрыФункции["Bitrix24_HookfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("tagetid" , IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьКаталог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("tagetid" , IDПриемника); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьКаталог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПереименоватьКаталог(ПараметрыФункции) + + Наименование = "Новый каталог"; + Наименование2 = "Новый каталог 2"; + + IDКаталога2 = ПараметрыФункции["Bitrix24_HookFolderID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога2); + Опции.Вставить("title" , Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьКаталог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("title" , Наименование); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьКаталог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыФункции) + + Наименование2 = "Картинка2.jpg"; + Наименование = "Картинка1.jpg"; + + Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные + Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные + + IDПриемника = ПараметрыФункции["Bitrix24_FolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование2); + Опции.Вставить("file" , Картинка2); + Опции.Вставить("folderid" , IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлВКаталог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDФайла = Результат["result"]["ID"]; + OPI_Bitrix24.УдалитьФайл(URL, IDФайла); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование); + Опции.Вставить("file" , Картинка); + Опции.Вставить("folderid" , IDПриемника); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайлВКаталог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDФайла = Результат["result"]["ID"]; + Результат = OPI_Bitrix24.УдалитьФайл(URL, IDФайла, Токен); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СкопироватьФайл(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("folderid" , IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьФайл (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкопироватьФайл", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьИнформациюОФайле(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОФайле (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОФайле", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыФункции) + + OPI_Инструменты.Пауза(20); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнююСсылкуФайла (хук)", "Bitrix24"); + + // OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВнешнююСсылкуФайла", "Bitrix24"); + + // OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПоместитьФайлВКорзину(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоместитьФайлВКорзину (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПоместитьФайлВКорзину", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ВосстановитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьФайл (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьФайл", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПереименоватьФайл(ПараметрыФункции) + + Наименование = "Новое имя файла.jpg"; + Наименование2 = "Новое имя файла 2.jpg"; + + IDФайла2 = ПараметрыФункции["Bitrix24_HookFileID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла2); + Опции.Вставить("title" , Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьФайл (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("title" , Наименование); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьФайл", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПереместитьФайлВКаталог(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_HookSubFolderID"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("folderid" , IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьФайлВКаталог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + IDКаталога = ПараметрыФункции["Bitrix24_SubFolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("folderid" , IDКаталога); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереместитьФайлВКаталог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + + Время = 3600; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("amount" , Время); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТрудозатратыЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЗатрат = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookTimeID", IDЗатрат); + ПараметрыФункции.Вставить("Bitrix24_HookTimeID", IDЗатрат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Текст = "Трудозатраты по обработке"; + IDПользователя = 10; + Время = 7200; + ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("amount" , Время); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("text" , Текст); + Опции.Вставить("date" , ДатаУстановки); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьТрудозатратыЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЗатрат = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TimeID", IDЗатрат); + ПараметрыФункции.Вставить("Bitrix24_TimeID", IDЗатрат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Текст = "Забытый в прошлый раз текст"; + Время = 4800; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("record" , IDЗаписи); + Опции.Вставить("amount" , Время); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТрудозатратыЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Текст = "Новые трудозатраты по обработке"; + Время = 4800; + ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("record" , IDЗаписи); + Опции.Вставить("amount" , Время); + Опции.Вставить("text" , Текст); + Опции.Вставить("date" , ДатаУстановки); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТрудозатратыЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("record" , IDЗаписи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТрудозатратыЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("record" , IDЗаписи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТрудозатратыЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксНеопределено(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("record" , IDЗаписи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТрудозатратыЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("record" , IDЗаписи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТрудозатратыЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТрудозатратЗадачи (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассивОбъектов(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокТрудозатратЗадачи", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассивОбъектов(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_НачатьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); + + Час = 3600; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + Время = OPI_Инструменты.ПолучитьТекущуюДату() - Час; + Отчет = "Опоздание"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid" , IDПользователя); + Опции.Вставить("time" , Время); + Опции.Вставить("report" , Отчет); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ЗавершитьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + Время = OPI_Инструменты.ПолучитьТекущуюДату(); + Отчет = "Отгул"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid" , IDПользователя); + Опции.Вставить("time" , Время); + Опции.Вставить("report" , Отчет); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПриостановитьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьСтадиюКанбана(ПараметрыФункции) + + Наименование = "Новая стадия"; + Цвет = "0026FF"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование); + Опции.Вставить("color" , Цвет); + Опции.Вставить("prevstage", 6); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьСтадиюКанбана (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDПредыдущей = Результат["result"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookStageID", IDПредыдущей); + ПараметрыФункции.Вставить("Bitrix24_HookStageID", IDПредыдущей); + + Наименование = "Новая стадия 2"; + Цвет = "0026FF"; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование); + Опции.Вставить("color" , Цвет); + Опции.Вставить("prevstage", IDПредыдущей); + Опции.Вставить("admin" , Истина); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьСтадиюКанбана", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСтадии = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_StageID", IDСтадии); + ПараметрыФункции.Вставить("Bitrix24_StageID", IDСтадии); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьСтадиюКанбана(ПараметрыФункции) + + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("stage" , IDСтадии); + Опции.Вставить("admin" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСтадиюКанбана (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("stage" , IDСтадии); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСтадиюКанбана", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтадииКанбана(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("admin" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтадииКанбана (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтадииКанбана", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыФункции) + + IDЗадачи = ПараметрыФункции["Bitrix24_KanbanTaskID"]; + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("stage", IDСтадии); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПеренестиЗадачуВСтадиюКанбана (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("task" , IDЗадачи); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПеренестиЗадачуВСтадиюКанбана", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + OPI_Bitrix24.ПеренестиЗадачуВСтадиюКанбана(URL, IDЗадачи, 2, , , Токен); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьСтадиюКанбана(ПараметрыФункции) + + Наименование = "Новое имя стадии стадии"; + Цвет = "000000"; + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("color", Цвет); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСтадиюКанбана (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + Наименование = "Новое имя стадии стадии 2"; + Цвет = "000000"; + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование); + Опции.Вставить("stage" , IDСтадии); + Опции.Вставить("color" , Цвет); + Опции.Вставить("prevstage", 6); + Опции.Вставить("admin" , Истина); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСтадиюКанбана", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьПерсональноеУведомление(ПараметрыФункции) + + IDПользователя = 1; + + URL = ПараметрыФункции["Bitrix24_URL"]; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("text" , Текст); + Опции.Вставить("blocks", Вложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПерсональноеУведомление (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСообщения = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_PersoalHookNotifyID", IDСообщения); + ПараметрыФункции.Вставить("Bitrix24_PersoalHookNotifyID", IDСообщения); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Тег = "Новый"; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("text" , Текст); + Опции.Вставить("tag" , Тег); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПерсональноеУведомление", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСообщения = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_PersoalNotifyID", IDСообщения); + ПараметрыФункции.Вставить("Bitrix24_PersoalNotifyID", IDСообщения); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьСистемноеУведомление(ПараметрыФункции) + + IDПользователя = 1; + + URL = ПараметрыФункции["Bitrix24_URL"]; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("text" , Текст); + Опции.Вставить("blocks", Вложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСистемноеУведомление (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСообщения = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_SystemHookNotifyID", IDСообщения); + ПараметрыФункции.Вставить("Bitrix24_SystemHookNotifyID", IDСообщения); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Тег = "Новый"; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("text" , Текст); + Опции.Вставить("tag" , Тег); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСистемноеУведомление", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСообщения = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_SystemNotifyID", IDСообщения); + ПараметрыФункции.Вставить("Bitrix24_SystemNotifyID", IDСообщения); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьУведомление(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDУведомления = ПараметрыФункции["Bitrix24_PersoalHookNotifyID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("notif" , IDУведомления); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьУведомление", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDУведомления = ПараметрыФункции["Bitrix24_PersoalNotifyID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("notif" , IDУведомления); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьУведомление (приложение)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксБулево(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Тип = "date"; + Имя = "BIRTHDAY_FIELD"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("type" , Тип); + Опции.Вставить("fieldname", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Тип = "string"; + Имя = "TEXT_FIELD"; + ВнешнийКод = "BITRIX_TEXT_FIELD"; + Заголовок = "Поле для текста"; + Подпись = Новый Структура("en,ru", "Some field", "Некоторое поле"); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("type" , Тип); + Опции.Вставить("fieldname" , Имя); + Опции.Вставить("externalid", ВнешнийКод); + Опции.Вставить("title" , Заголовок); + Опции.Вставить("label" , Подпись); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + Заголовок = "Новый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fieldid" , IDПоля); + Опции.Вставить("title" , Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + ВнешнийКод = "NEW_TEXT_FIELD"; + Подпись = Новый Структура("en,ru", "Updated field", "Измененное поле"); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fieldid" , IDПоля); + Опции.Вставить("externalid", ВнешнийКод); + Опции.Вставить("label" , Подпись); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fieldid" , IDПоля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fieldid" , IDПоля); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fieldid", IDПоля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Наименование = "Главное подразделение"; + IDРодителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование); + Опции.Вставить("parentid", IDРодителя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодразделение (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDПодразделения = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookDepID", IDПодразделения); + ПараметрыФункции.Вставить("Bitrix24_HookDepID", IDПодразделения); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Наименование = "Подчиненное подразделение"; + IDРодителя = ПараметрыФункции["Bitrix24_HookDepID"]; + IDРуководителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , Наименование); + Опции.Вставить("parentid", IDРодителя); + Опции.Вставить("headid" , IDРуководителя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПодразделение", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDПодразделения = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_DepID", IDПодразделения); + ПараметрыФункции.Вставить("Bitrix24_DepID", IDПодразделения); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; + IDРодителя = 7; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("depid" , IDПодразделения); + Опции.Вставить("parentid", IDРодителя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПодразделение (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + Наименование = "Новое подразделение"; + IDРодителя = 1; + IDРуководителя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("depid" , IDПодразделения); + Опции.Вставить("title" , Наименование); + Опции.Вставить("parentid", IDРодителя); + Опции.Вставить("headid" , IDРуководителя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПодразделение", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("depid" , IDПодразделения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьПодразделение (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("depid" , IDПодразделения); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьПодразделение", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьПодразделения(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("depid" , IDПодразделения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПодразделения (хук)", "Bitrix24"); + + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDРуководителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("headid" , IDРуководителя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПодразделения", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьЧат(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + + B64Картинка = ПолучитьBase64СтрокуИзДвоичныхДанных(Картинка); + + МассивУчастников = Новый Массив; + МассивУчастников.Добавить(10); + МассивУчастников.Добавить(1); + + СтруктураЧата = Новый Структура; + СтруктураЧата.Вставить("TYPE" , "OPEN"); + СтруктураЧата.Вставить("TITLE" , "Новый чат"); + СтруктураЧата.Вставить("DESCRIPTION", "Это новый чат"); + СтруктураЧата.Вставить("COLOR" , "GREEN"); + СтруктураЧата.Вставить("MESSAGE" , "Добро пожаловать в новый чат"); + СтруктураЧата.Вставить("USERS" , МассивУчастников); + СтруктураЧата.Вставить("OWNER_ID" , 1); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЧат (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЧата = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookChatID", IDЧата); + ПараметрыФункции.Вставить("Bitrix24_HookChatID", IDЧата); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + СтруктураЧата = Новый Структура; + СтруктураЧата.Вставить("TYPE" , "CHAT"); + СтруктураЧата.Вставить("TITLE" , "Закрытый чат"); + СтруктураЧата.Вставить("USERS" , МассивУчастников); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураЧата); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЧат", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЧата = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ChatID", IDЧата); + ПараметрыФункции.Вставить("Bitrix24_ChatID", IDЧата); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПокинутьЧат(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПокинутьЧат (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПокинутьЧат", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИсключитьПользователяИзЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("user" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИсключитьПользователяИзЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИсключитьПользователяИзЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ДобавитьПользователейВЧат(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователя = 10; + IDПользователей = Новый Массив; + IDПользователей.Добавить(10); + IDПользователей.Добавить(12); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("users" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейВЧат (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("users" , IDПользователей); + Опции.Вставить("hide" , Истина); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьПользователейВЧат", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьЗаголовокЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Заголовок = "Новый заголовок чата"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("title" , Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗаголовокЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Заголовок = "Другой заголовок чата"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("title" , Заголовок); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗаголовокЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьЦветЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Цвет = "AZURE"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("color" , Цвет); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЦветЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + OPI_Инструменты.Пауза(10); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Цвет = "PURPLE"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("color" , Цвет); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЦветЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьКартинкуЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Картинка = ПараметрыФункции["Picture2"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКартинкуЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("picture", Картинка); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКартинкуЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтключитьУведомленияЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьУведомленияЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьУведомленияЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ВключитьУведомленияЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВключитьУведомленияЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВключитьУведомленияЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СменитьВладельцаЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("user" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СменитьВладельцаЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("user" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СменитьВладельцаЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat4"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСообщенийЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСообщения(Результат); + + IDСообщения = Результат["result"]["messages"][0]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ChatMessageID", IDСообщения); + ПараметрыФункции.Вставить("Bitrix24_ChatMessageID", IDСообщения); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDПользователя); + Опции.Вставить("first" , 0); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСообщенийЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСообщения(Результат); + + IDСообщения = Результат["result"]["messages"][0]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_UserMessageID", IDСообщения); + ПараметрыФункции.Вставить("Bitrix24_UserMessageID", IDСообщения); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтметитьСообщениеКакПрочитанное (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксДиалог(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDПользователя); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтметитьСообщениеКакПрочитанное", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксДиалог(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтметитьСообщениеКакНепрочитанное (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDПользователя); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтметитьСообщениеКакНепрочитанное", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьДиалог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДиалог (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСообщение(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДиалог", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейДиалога (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокПользователейДиалога", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьУведомлениеОВводе (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьУведомлениеОВводе", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПрочитатьВсе(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПрочитатьВсе (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПрочитатьВсе", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтправитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat" + ПараметрыФункции["Bitrix24_HookChatID"]; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("title" , "Картинка1"); + Опции.Вставить("url" , Картинка); + + Вложение1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокКартинки", Опции); + + Опции = Новый Структура; + Опции.Вставить("title" , "Файл1.docx"); + Опции.Вставить("url" , Файл); + + Вложение2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокФайла", Опции); + + Вложения.Добавить(Вложение1); + Вложения.Добавить(Вложение2); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСообщения = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ChatMessageID", IDСообщения); + ПараметрыФункции.Вставить("Bitrix24_ChatMessageID", IDСообщения); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDПользователя); + Опции.Вставить("text" , Текст); + Опции.Вставить("blocks" , Вложения); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьСообщение", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСообщения = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_UserMessageID", IDСообщения); + ПараметрыФункции.Вставить("Bitrix24_UserMessageID", IDСообщения); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСообщение (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text" , Текст); + Опции.Вставить("blocks" , Вложения); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСообщение", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьРеакциюНаСообщение (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьРеакциюНаСообщение", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКаталогФайловЧата (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКаталогФайловЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ОтправитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + Файл = ПараметрыФункции["Document"]; // Двоичные данные, URL или путь к файлу + Описание = "Очень важный файл"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + + Каталог = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + IDКаталога = Каталог["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("title" , "Важный документ.docx"); + Опции.Вставить("file" , Файл); + Опции.Вставить("folderid", IDКаталога); + + ЗагруженныйФайл = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + IDФайла = ЗагруженныйФайл["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксФайлСообщение(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Каталог = OPI_Bitrix24.ПолучитьКаталогФайловЧата(URL, IDЧата, Токен); + IDКаталога = Каталог["result"]["ID"]; + + ЗагруженныйФайл = OPI_Bitrix24.ЗагрузитьФайлВКаталог(URL, "Важный документ.docx", Файл, IDКаталога, Токен); + IDФайла = ЗагруженныйФайл["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("fileid" , IDФайла); + Опции.Вставить("description", Описание); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксФайлСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + IDПользователя = 10; + МассивПользователей = Новый Массив; + + МассивПользователей.Добавить(1); + МассивПользователей.Добавить(10); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("users" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователей (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("users" , МассивПользователей); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусПользователя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УстановитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + Статус = "dnd"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("status" , Статус); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСтатусПользователя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Статус = "away"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("status" , Статус); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСтатусПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьБлокКартинки(ПараметрыФункции) + + Наименование = "Картинка"; + URL = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("title", Наименование); + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокКартинки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьБлокКартинки", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьБлокФайла(ПараметрыФункции) + + Наименование = "Картинка"; + URL = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("title", Наименование); + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокФайла", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьБлокФайла", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруЧата(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЧата", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЧата", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьТекущегоПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТекущегоПользователя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТекущегоПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтурктуруПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтурктуруПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтурктуруПользователя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтурктуруПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтурктуруПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксОбъект(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@exepmple.org"; + // Полную структуру можно получить функцией ПолучитьСтурктуруПользователя + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("UF_DEPARTMENT", 7); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПользователя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDПользователя = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookUserID", IDПользователя); + ПараметрыФункции.Вставить("Bitrix24_HookUserID", IDПользователя); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@exepmple.org"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("NAME" , "Виталий"); + СтруктураПользователя.Вставить("LAST_NAME" , "Альпака"); + СтруктураПользователя.Вставить("PERSONAL_MOBILE", "88003553535"); + СтруктураПользователя.Вставить("UF_DEPARTMENT" , 1); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDПользователя = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_UserID", IDПользователя); + ПараметрыФункции.Вставить("Bitrix24_UserID", IDПользователя); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@exepmple.org"; + + // Полную структуру можно получить функцией ПолучитьСтурктуруПользователя + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("UF_DEPARTMENT", 1); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fields", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПользователя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@exepmple.org"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("NAME" , "Олег"); + СтруктураПользователя.Вставить("LAST_NAME" , "Лама"); + СтруктураПользователя.Вставить("UF_DEPARTMENT" , 7); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fields", СтруктураПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fire" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСтатусПользователя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fire" , Истина); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСтатусПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователя (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_НайтиПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + СтруктураФильтра = Новый Структура; + СтруктураФильтра.Вставить("NAME" , "Виталий"); + СтруктураФильтра.Вставить("LAST_NAME" , "Альпака"); + СтруктураФильтра.Вставить("WORK_POSITION" , "DevOps инженер"); + СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Отдел маркетинга"); + СтруктураФильтра.Вставить("USER_TYPE" , "employee"); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("filter", СтруктураФильтра); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НайтиПользователей (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + СтруктураФильтра = Новый Структура; + СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Битрикс"); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НайтиПользователей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыТеста) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраПользователей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЛидов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЛидов", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруЛида(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЛида (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЛид(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруЛида", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЛид(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьЛид(ПараметрыФункции) + + МассивПочт = Новый Массив; + МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "yo@example.com", "HOME")); + МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "hi@example.com", "WORK")); + + МассивНомеров = Новый Массив; + МассивНомеров.Добавить(Новый Структура("VALUE,VALUE_TYPE", "88005553535", "WORK")); + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ADDRESS" , "ул. Пушкина, д. 10"); + СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Россия"); + СтруктураПолей.Вставить("EMAIL" , МассивПочт); + СтруктураПолей.Вставить("NAME" , "Петр"); + СтруктураПолей.Вставить("LAST_NAME" , "Петров"); + СтруктураПолей.Вставить("PHONE" , МассивНомеров); + СтруктураПолей.Вставить("TITLE" , "Мегаклиент"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЛид (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЛида = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookLeadID", IDЛида); + ПараметрыФункции.Вставить("Bitrix24_HookLeadID", IDЛида); + + СтруктураПолей.Вставить("NAME" , "Иван"); + СтруктураПолей.Вставить("LAST_NAME" , "Иванов"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЛид", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЛида = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_LeadID", IDЛида); + ПараметрыФункции.Вставить("Bitrix24_LeadID", IDЛида); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьЛид(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ADDRESS" , "ул. Лермонтова, д. 20"); + СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Беларусь"); + СтруктураПолей.Вставить("TITLE" , "Суперклиент"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("lead" , IDЛида); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЛид (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + СтруктураПолей.Вставить("NAME" , "Евгений"); + СтруктураПолей.Вставить("LAST_NAME" , "Евгеньев"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("lead" , IDЛида); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЛид", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьЛид(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("lead" , IDЛида); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЛид (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("lead" , IDЛида); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЛид", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьЛид(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("lead" , IDЛида); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЛид (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЛид(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("lead" , IDЛида); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЛид", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЛид(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокЛидов(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЛидов (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Фильтр = Новый Структура; + Фильтр.Вставить("TITLE" , "Мегаклиент"); + Фильтр.Вставить("HAS_EMAIL", "Y"); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЛидов", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСделок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраСделок", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруСделки(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСделки (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСделка(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСделки", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСделка(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьСделку(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("TITLE" , "Плановая продажа"); + СтруктураПолей.Вставить("TYPE_ID" , "GOODS"); + СтруктураПолей.Вставить("STAGE_ID" , "NEW"); + СтруктураПолей.Вставить("COMPANY_ID" , 1); + СтруктураПолей.Вставить("CONTACT_ID" , 3); + СтруктураПолей.Вставить("OPENED" , "Y"); + СтруктураПолей.Вставить("ASSIGNED_BY_ID", 1); + СтруктураПолей.Вставить("PROBABILITY" , 30); + СтруктураПолей.Вставить("CURRENCY_ID" , "USD"); + СтруктураПолей.Вставить("OPPORTUNITY" , 5000); + СтруктураПолей.Вставить("CATEGORY_ID" , 5); + СтруктураПолей.Вставить("BEGINDATE" , "2024-01-01"); + СтруктураПолей.Вставить("CLOSEDATE" , "2030-01-01"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСделку (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЛида = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookDealID", IDЛида); + ПараметрыФункции.Вставить("Bitrix24_HookDealID", IDЛида); + + СтруктураПолей.Вставить("TITLE" , "Другая сделка"); + СтруктураПолей.Вставить("CLOSEDATE", "2031-01-01"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСделку", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDЛида = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_DealID", IDЛида); + ПараметрыФункции.Вставить("Bitrix24_DealID", IDЛида); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьСделку(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("TITLE" , "Продажа в RUB"); + СтруктураПолей.Вставить("CURRENCY_ID" , "RUB"); + СтруктураПолей.Вставить("OPPORTUNITY" , 50000); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("deal" , IDСделки); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСделку (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + СтруктураПолей.Вставить("TITLE" , "Будущая сделка в RUB"); + СтруктураПолей.Вставить("BEGINDATE", "2025-01-01"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_DealID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("deal" , IDСделки); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСделку", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСделку(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("deal" , IDСделки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСделку (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСделка(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("deal" , IDСделки); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСделку", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСделка(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьСделку(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("deal" , IDСделки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСделку (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_DealID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("deal" , IDСделки); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСделку", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокСделок(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСделок (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Фильтр = Новый Структура; + Фильтр.Вставить("TITLE" , "Продажа в RUB"); + Фильтр.Вставить("CURRENCY_ID", "RUB"); + + Опции.Вставить("url" , URL); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСделок", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьКалендарь(ПараметрыФункции) + + IDПользователя = 1; + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("type" , "user"); + СтруктураКалендаря.Вставить("ownerId" , IDПользователя); + СтруктураКалендаря.Вставить("name" , "Новый календарь"); + СтруктураКалендаря.Вставить("description", "Мой новый календарь"); + СтруктураКалендаря.Вставить("color" , "#FFFFFF"); + СтруктураКалендаря.Вставить("text_color" , "#000000"); + + СтруктураЭкспорта = Новый Структура; + СтруктураЭкспорта.Вставить("ALLOW", "Истина"); + СтруктураЭкспорта.Вставить("SET" , "all"); + + СтруктураКалендаря.Вставить("export", СтруктураЭкспорта); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКалендарь (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); // SKIP + + IDКалендаря = Результат["result"]; // SKIP + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCalendarID", IDКалендаря); // SKIP + ПараметрыФункции.Вставить("Bitrix24_HookCalendarID", IDКалендаря); // SKIP + + СтруктураКалендаря.Вставить("name" , "Другой календарь"); + СтруктураКалендаря.Вставить("description", "Мой другой новый календарь"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураКалендаря); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьКалендарь", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDКалендаря = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CalendarID", IDКалендаря); + ПараметрыФункции.Вставить("Bitrix24_CalendarID", IDКалендаря); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьКалендарь(ПараметрыФункции) + + IDПользователя = 1; + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("type" , "user"); + СтруктураКалендаря.Вставить("ownerId" , IDПользователя); + СтруктураКалендаря.Вставить("name" , "Новое имя календаря"); + СтруктураКалендаря.Вставить("description", "Этот календарь был изменен"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("fields" , СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКалендарь (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("fields" , СтруктураКалендаря); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьКалендарь", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьКалендарь(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("owner" , IDВладельца); + Опции.Вставить("type" , Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСделку (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("owner" , IDВладельца); + Опции.Вставить("type" , Тип); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКалендарь", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции.Вставить("empty" , Истина); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруКалендаря (пустая)", "Bitrix24"); + + Для Каждого Элемент Из Результат Цикл + + Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСписокКалендарей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("owner" , IDВладельца); + Опции.Вставить("type" , Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКалендарей (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("owner" , IDВладельца); + Опции.Вставить("type" , Тип); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокКалендарей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекКалендаря (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКаледнаря(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКаледнаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПользовательскихНастроекКаледнаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции.Вставить("empty" , Истина); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКаледнаря", Опции); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПользовательскихНастроекКаледнаря (пустая)", "Bitrix24"); + + Для Каждого Элемент Из Результат Цикл + + Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользовательскиеНастройкиКалендаря (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПользовательскиеНастройкиКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("view" , "month"); + СтруктураКалендаря.Вставить("showDeclined" , "Y"); + СтруктураКалендаря.Вставить("collapseOffHours" , "N"); + СтруктураКалендаря.Вставить("showCompletedTasks", "N"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("settings", СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьПользовательскиеНастройкиКалендаря (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("settings", СтруктураКалендаря); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьПользовательскиеНастройкиКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Пользователь = 1; + + Неделя = 604800; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + ДатаНачала = ТекущаяДата; + ДатаОкончания = ТекущаяДата + Неделя; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("users", Пользователь); + Опции.Вставить("from" , ДатаНачала); + Опции.Вставить("to" , ДатаОкончания); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗанятостьПользователей (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("users", Пользователь); + Опции.Вставить("from" , ДатаНачала); + Опции.Вставить("to" , ДатаОкончания); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗанятостьПользователей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_СоздатьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; + Час = 3600; + + СтруктураСобытия = Новый Структура; + + СтруктураСобытия.Вставить("type" , "user"); + СтруктураСобытия.Вставить("ownerId" , 1); + СтруктураСобытия.Вставить("from" , XMLСтрока(Завтра)); + СтруктураСобытия.Вставить("to" , XMLСтрока(Завтра + Час)); + СтруктураСобытия.Вставить("section" , IDКалендаря); + СтруктураСобытия.Вставить("name" , "Новое событие"); + СтруктураСобытия.Вставить("skip_time" , "N"); + СтруктураСобытия.Вставить("timezone_from", "Europe/Minsk"); + СтруктураСобытия.Вставить("timezone_to" , "Europe/Minsk"); + СтруктураСобытия.Вставить("description" , "Описание события"); + СтруктураСобытия.Вставить("color" , "%23000000>"); + СтруктураСобытия.Вставить("text_color" , "%23FFFFFF"); + СтруктураСобытия.Вставить("accessibility", "busy"); + СтруктураСобытия.Вставить("importance" , "high"); + СтруктураСобытия.Вставить("private_event", "N"); + + СтруктураПовторяемости = Новый Структура; + СтруктураПовторяемости.Вставить("FREQ" , "DAILY"); + СтруктураПовторяемости.Вставить("COUNT" , 3); + СтруктураПовторяемости.Вставить("INTERVAL", 10); + + МассивДней = Новый Массив; + МассивДней.Добавить("SA"); + МассивДней.Добавить("MO"); + + СтруктураПовторяемости.Вставить("BYDAY" , МассивДней); + СтруктураПовторяемости.Вставить("UNTIL" , XMLСтрока(Завтра + Час * 24 * 10)); + + СтруктураСобытия.Вставить("rrule" , СтруктураПовторяемости); + СтруктураСобытия.Вставить("is_meeting", "Y"); + СтруктураСобытия.Вставить("location" , "Офис"); + + МассивНапоминаний = Новый Массив; + + СтруктураНапоминания = Новый Структура; + СтруктураНапоминания.Вставить("type" , "day"); + СтруктураНапоминания.Вставить("count", 1); + + МассивНапоминаний.Добавить(СтруктураНапоминания); + + СтруктураСобытия.Вставить("remind" , МассивНапоминаний); + СтруктураСобытия.Вставить("attendees", СтрРазделить("1,10", ",")); + СтруктураСобытия.Вставить("host" , 1); + + СтруктураВстречи = Новый Структура; + СтруктураВстречи.Вставить("notify" , "Y"); + СтруктураВстречи.Вставить("reinvite" , "Y"); + СтруктураВстречи.Вставить("allow_invite", "N"); + СтруктураВстречи.Вставить("hide_guests" , "N"); + + СтруктураСобытия.Вставить("meeting", СтруктураВстречи); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); // SKIP + + IDСобытия = Результат["result"]; // SKIP + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCEventID", IDСобытия); // SKIP + ПараметрыФункции.Вставить("Bitrix24_HookCEventID", IDСобытия); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + СтруктураСобытия.Вставить("section", IDКалендаря); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("fields", СтруктураСобытия); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСобытиеКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСобытия = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CEventID", IDСобытия); + ПараметрыФункции.Вставить("Bitrix24_CEventID", IDСобытия); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УдалитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСобытиеКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытиеКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСобытияКалендарей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("owner" , IDВладельца); + Опции.Вставить("type" , Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытияКалендарей (хук)", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + IDКалендаря1 = ПараметрыФункции["Bitrix24_HookCalendarID"]; + IDКалендаря2 = ПараметрыФункции["Bitrix24_CalendarID"]; + + Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; + Послезавтра = Завтра + 86400; + + МассивКалендарей = Новый Массив; + МассивКалендарей.Добавить(IDКалендаря1); + МассивКалендарей.Добавить(IDКалендаря2); + + Фильтр = Новый Структура; + Фильтр.Вставить("from" , Завтра); + Фильтр.Вставить("to" , Послезавтра); + Фильтр.Вставить("section", МассивКалендарей); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("owner" , IDВладельца); + Опции.Вставить("type" , Тип); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытияКалендарей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксМассив(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + СтруктураСобытия = Новый Структура; + + СтруктураСобытия.Вставить("ownerId" , 1); + СтруктураСобытия.Вставить("type" , "user"); + СтруктураСобытия.Вставить("name" , "Измененное событие"); + СтруктураСобытия.Вставить("description" , "Новое описание события"); + СтруктураСобытия.Вставить("importance" , "low"); + СтруктураСобытия.Вставить("private_event", "Y"); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + Опции.Вставить("fields", СтруктураСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); // SKIP + + IDСобытия = Результат["result"]; // SKIP + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCEventID", IDСобытия); // SKIP + ПараметрыФункции.Вставить("Bitrix24_HookCEventID", IDСобытия); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + Опции.Вставить("fields", СтруктураСобытия); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСобытиеКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксЧисло(Результат); + + IDСобытия = Результат["result"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CEventID", IDСобытия); + ПараметрыФункции.Вставить("Bitrix24_CEventID", IDСобытия); + +КонецПроцедуры + +Процедура CLI_Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + Статус = "Y"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + Опции.Вставить("status", Статус); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСтатусУчастияПользователя (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + Опции.Вставить("status", Статус); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьСтатусУчастияПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусУчастияПользователя (хук)", "Bitrix24"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("event" , IDСобытия); + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусУчастияПользователя", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСобытияКалендаря", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСобытияКалендаря (пустая)", "Bitrix24"); + + Для Каждого Элемент Из Результат Цикл + + Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраСобытийКалендарей", "Bitrix24"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраСобытийКалендарей (пустая)", "Bitrix24"); + + Для Каждого Элемент Из Результат Цикл + + Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область CDEK + +Процедура CLI_CDEK_ПолучитьТокен(ПараметрыФункции) + + Аккаунт = ПараметрыФункции["CDEK_Account"]; + Пароль = ПараметрыФункции["CDEK_Password"]; + + Опции = Новый Структура; + Опции.Вставить("account", Аккаунт); + Опции.Вставить("pass" , Пароль); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьТокен", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТокен", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкТокен(Результат); + + Токен = Результат["access_token"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_Token", Токен); + OPI_Инструменты.ДобавитьПоле("CDEK_Token", Токен, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьОписаниеЗаказа(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаказа", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеЗаказа", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_СоздатьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + ОписаниеЗаказа = Новый Структура; + + ЛокацияОтправления = Новый Структура; + ЛокацияОтправления.Вставить("code" , "44"); + ЛокацияОтправления.Вставить("city" , "Москва"); + ЛокацияОтправления.Вставить("address", "пр. Ленинградский, д.4"); + + ЛокацияНазначения = Новый Структура; + ЛокацияНазначения.Вставить("code" , "270"); + ЛокацияНазначения.Вставить("city" , "Новосибирск"); + ЛокацияНазначения.Вставить("address", "ул. Блюхера, 32"); + + Получатель = Новый Структура; + + Телефоны = Новый Массив; + Телефоны.Добавить(Новый Структура("number", "+79134637228")); + + Получатель.Вставить("phones", Телефоны); + Получатель.Вставить("name" , "Иванов Иван"); + + Отправитель = Новый Структура("name", "Петров Петр"); + + Услуги = Новый Массив; + + Услуга = Новый Структура; + Услуга.Вставить("code" , "SECURE_PACKAGE_A2"); + Услуга.Вставить("parameter", 10); + + Услуги.Добавить(Услуга); + + Пакеты = Новый Массив; + + Пакет = Новый Структура; + + Позиции = Новый Массив; + + Позиция = Новый Структура; + + Оплата = Новый Структура; + Оплата.Вставить("value", 3000); + + Позиция.Вставить("payment" , Оплата); + Позиция.Вставить("ware_key", "00055"); + Позиция.Вставить("name" , "Товар"); + Позиция.Вставить("cost" , 300); + Позиция.Вставить("amount" , 2); + Позиция.Вставить("weight" , 700); + Позиция.Вставить("url" , "www.item.ru"); + + Позиции.Добавить(Позиция); + + Пакет.Вставить("items" , Позиции); + Пакет.Вставить("number" , "bar-001"); + Пакет.Вставить("comment", "Упаковка"); + Пакет.Вставить("height" , 10); + Пакет.Вставить("length" , 10); + Пакет.Вставить("weight" , "4000"); + Пакет.Вставить("width" , 10); + + Пакеты.Добавить(Пакет); + + ОписаниеЗаказа.Вставить("from_location", ЛокацияОтправления); + ОписаниеЗаказа.Вставить("to_location" , ЛокацияНазначения); + ОписаниеЗаказа.Вставить("packages" , Пакеты); + ОписаниеЗаказа.Вставить("recipient" , Получатель); + ОписаниеЗаказа.Вставить("sender" , Отправитель); + ОписаниеЗаказа.Вставить("services" , Услуги); + + ОписаниеЗаказа.Вставить("number" , Строка(Новый УникальныйИдентификатор)); + ОписаниеЗаказа.Вставить("comment" , "Новый заказ"); + ОписаниеЗаказа.Вставить("tariff_code", 139); + + ОписаниеЗаказа.Вставить("delivery_recipient_cost" , Новый Структура("value" , 50)); + ОписаниеЗаказа.Вставить("delivery_recipient_cost_adv", Новый Структура("sum,threshold", 3000, 200)); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("order" , ОписаниеЗаказа); + Опции.Вставить("ostore" , Истина); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаказ", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗаказ", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + + UUID = Результат["entity"]["uuid"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_OrderUUID", UUID); + OPI_Инструменты.ДобавитьПоле("CDEK_OrderUUID", UUID, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказ", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаказ", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкДанныеЗаказа(Результат); + + ВнутреннийНомер = Результат["entity"]["number"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_OrderIMN", ВнутреннийНомер); + OPI_Инструменты.ДобавитьПоле("CDEK_OrderIMN", ВнутреннийНомер, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьЗаказПоНомеру(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + НомерЗаказа = ПараметрыФункции["CDEK_OrderIMN"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("number" , НомерЗаказа); + Опции.Вставить("internal", Истина); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказПоНомеру", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаказПоНомеру", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкДанныеЗаказа(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ИзменитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + ОписаниеЗаказа = Новый Структура("comment", "Новый комментарий"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("order" , ОписаниеЗаказа); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ИзменитьЗаказ", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьЗаказ", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_УдалитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаказ", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаказ", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ОформитьКлиентскийВозврат(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Тариф = 139; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("tariff" , Тариф); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ОформитьКлиентскийВозврат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОформитьКлиентскийВозврат", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_СоздатьОтказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьОтказ", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьОтказ", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаявкиКурьера", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеЗаявкиКурьера", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + ОписаниеЗаявки = Новый Структура; + ОписаниеЗаявки.Вставить("intake_date" , Формат(ТекущаяДата + 60 * 60 * 24, "ДФ=yyyy-MM-dd")); + ОписаниеЗаявки.Вставить("intake_time_from", "10:00"); + ОписаниеЗаявки.Вставить("intake_time_to" , "17:00"); + ОписаниеЗаявки.Вставить("name" , "Консолидированный груз"); + ОписаниеЗаявки.Вставить("weight" , 1000); + ОписаниеЗаявки.Вставить("length" , 10); + ОписаниеЗаявки.Вставить("width" , 10); + ОписаниеЗаявки.Вставить("height" , 10); + ОписаниеЗаявки.Вставить("comment" , "Комментарий курьеру"); + ОписаниеЗаявки.Вставить("need_call" , Ложь); + + Отправитель = Новый Структура; + Отправитель.Вставить("company", "Компания"); + Отправитель.Вставить("name" , "Иванов Иван"); + + Телефоны = Новый Массив; + Телефон = Новый Структура("number", "+79589441654"); + Телефоны.Добавить(Телефон); + + Отправитель.Вставить("phones", Телефоны); + + ОписаниеЗаявки.Вставить("sender", Отправитель); + + ТочкаОтправления = Новый Структура; + ТочкаОтправления.Вставить("code" , "44"); + ТочкаОтправления.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); + ТочкаОтправления.Вставить("postal_code" , "109004"); + ТочкаОтправления.Вставить("longitude" , 37.6204); + ТочкаОтправления.Вставить("latitude" , 55.754); + ТочкаОтправления.Вставить("country_code", "RU"); + ТочкаОтправления.Вставить("region" , "Москва"); + ТочкаОтправления.Вставить("sub_region" , "Москва"); + ТочкаОтправления.Вставить("city" , "Москва"); + ТочкаОтправления.Вставить("kladr_code" , "7700000000000"); + ТочкаОтправления.Вставить("address" , "ул. Блюхера, 32"); + + ОписаниеЗаявки.Вставить("from_location", ТочкаОтправления); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("intake" , ОписаниеЗаявки); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаявкуНаВызовКурьера", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьЗаявкуНаВызовКурьера", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + + UUID = Результат["entity"]["uuid"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_IntakeUUID", UUID); + OPI_Инструменты.ДобавитьПоле("CDEK_IntakeUUID", UUID, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_IntakeUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаявкуНаВызовКурьера", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаявкуНаВызовКурьера", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_IntakeUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаявкуНаВызовКурьера", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаявкуНаВызовКурьера", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_СформироватьКвитанцию(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Тип = "tpl_russia"; + Копий = 1; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuids" , UUID); + Опции.Вставить("type" , Тип); + Опции.Вставить("count" , Копий); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьКвитанцию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьКвитанцию", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + + UUID = Результат["entity"]["uuid"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_PrintUUID", UUID); + OPI_Инструменты.ДобавитьПоле("CDEK_PrintUUID", UUID, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьКвитанцию(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_PrintUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьКвитанцию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКвитанцию", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкКвитанция(Результат); + + ИВФ = ПолучитьИмяВременногоФайла("pdf"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("getfile", Истина); + Опции.Вставить("testapi", Истина); + Опции.Вставить("out" , ИВФ); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьКвитанцию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКвитанцию (файл)"); + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 50000); + УдалитьФайлы(ИВФ); + +КонецПроцедуры + +Процедура CLI_CDEK_СформироватьШтрихкод(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Формат = "A5"; + Копий = 1; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuids" , UUID); + Опции.Вставить("count" , Копий); + Опции.Вставить("format" , Формат); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьШтрихкод", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьШтрихкод", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + + UUID = Результат["entity"]["uuid"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_BarcodeUUID", UUID); + OPI_Инструменты.ДобавитьПоле("CDEK_BarcodeUUID", UUID, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьШтрихкод(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_BarcodeUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьШтрихкод", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШтрихкод", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкКвитанция(Результат); + + ИВФ = ПолучитьИмяВременногоФайла("pdf"); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("getfile", Истина); + Опции.Вставить("testapi", Истина); + Опции.Вставить("out" , ИВФ); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьШтрихкод", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШтрихкод (файл)"); + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 0); + УдалитьФайлы(ИВФ); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоступныеИнтервалыДоставки", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДоступныеИнтервалыДоставки", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкИнтервалыДоставки(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьОписаниеДоговоренности(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеДоговоренности", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеДоговоренности (Пустая)", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + Заказ = ПараметрыФункции["CDEK_OrderUUID"]; + + Сутки = 60 * 60 * 24; + ТекущаяДата = НачалоДня(OPI_Инструменты.ПолучитьТекущуюДату()); + ДатаДоставки = ТекущаяДата + Сутки * 14; + + Пока ДеньНедели(ДатаДоставки) > 5 Цикл + ДатаДоставки = ДатаДоставки + Сутки; + КонецЦикла; + + Договоренность = Новый Структура; + + Договоренность.Вставить("cdek_number", "1106207236"); + Договоренность.Вставить("order_uuid" , Заказ); + Договоренность.Вставить("date" , Формат(ДатаДоставки, "ДФ=yyyy-MM-dd")); + Договоренность.Вставить("time_from" , "10:00"); + Договоренность.Вставить("time_to" , "17:00"); + Договоренность.Вставить("comment" , "Офис группы компаний"); + + МестоДоставки = Новый Структура; + МестоДоставки.Вставить("code" , "270"); + МестоДоставки.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); + МестоДоставки.Вставить("postal_code" , "109004"); + МестоДоставки.Вставить("longitude" , 37.6204); + МестоДоставки.Вставить("latitude" , 55.754); + МестоДоставки.Вставить("country_code", "RU"); + МестоДоставки.Вставить("region" , "Новосибирск"); + МестоДоставки.Вставить("sub_region" , "Новосибирск"); + МестоДоставки.Вставить("city" , "Новосибирск"); + МестоДоставки.Вставить("kladr_code" , "7700000000000"); + МестоДоставки.Вставить("address" , "ул. Блюхера, 33"); + + Договоренность.Вставить("to_location", МестоДоставки); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("appt" , Договоренность); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ЗафиксироватьДоговоренностьОДоставке", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗафиксироватьДоговоренностьОДоставке", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + + UUID = Результат["entity"]["uuid"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_ApptUUID", UUID); + OPI_Инструменты.ДобавитьПоле("CDEK_ApptUUID", UUID, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_ApptUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоговоренностьОДоставке", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьДоговоренностьОДоставке", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_СоздатьПреалерт(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + ПВЗ = "NSK27"; + ДатаПередачи = OPI_Инструменты.ПолучитьТекущуюДату() + 60 * 60 * 24; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuids" , UUID); + Опции.Вставить("date" , ДатаПередачи); + Опции.Вставить("point" , ПВЗ); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьПреалерт", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьПреалерт", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + + UUID = Результат["entity"]["uuid"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_PrealertUUID", UUID); + OPI_Инструменты.ДобавитьПоле("CDEK_PrealertUUID", UUID, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьПреалерт(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_PrealertUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПреалерт", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПреалерт", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСтатусПаспортныхДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтатусПаспортныхДанных", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_СдэкПаспорт(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьЧекЗаказа(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("uuid" , UUID); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекЗаказа", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧекЗаказа", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьЧекиНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("date" , ДатаПолучения); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекиНаДату", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЧекиНаДату", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("date" , ДатаПолучения); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьРеестрыПлатежейНаДату", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьРеестрыПлатежейНаДату", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("date" , ДатаПолучения); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПереводыПлатежейНаДату", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПереводыПлатежейНаДату", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеФильтраОфисов", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеФильтраОфисов (Пустая)", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьСписокОфисов(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + Фильтр = Новый Структура; + Фильтр.Вставить("weight_max" , 50); + Фильтр.Вставить("city_code" , 270); + Фильтр.Вставить("allowed_cod", Истина); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("filter" , Фильтр); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокОфисов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОфисов", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + +КонецПроцедуры + +Процедура CLI_CDEK_ПолучитьСписокРегионов(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("testapi" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокРегионов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокРегионов", "CDEK"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область YandexMetrika + +Процедура CLI_YandexMetrika_ПолучитьСписокМеток(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокМеток", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокМеток", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаМетки(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_СоздатьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + Наименование = "Новая метка"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьМетку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьМетку", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаМетка(Результат, Наименование); + + IDМетки = Результат["label"]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Metrika_LabelID", IDМетки); + OPI_Инструменты.ДобавитьПоле("Metrika_LabelID", IDМетки, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_УдалитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьМетку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМетку", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаУспех(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_ИзменитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + Наименование = "Новое имя метки"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьМетку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьМетку", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаМетка(Результат, Наименование); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_ПолучитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьМетку", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьМетку", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаМетка(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСтруктуруСчетчика", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСчетчика", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_СоздатьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + + СтруктураСчетчика = Новый Структура; + СтруктураСчетчика.Вставить("autogoals_enabled", Истина); + + СтруктураНастроекКода = Новый Структура; + СтруктураНастроекКода.Вставить("async" , 0); + СтруктураНастроекКода.Вставить("clickmap" , 1); + СтруктураНастроекКода.Вставить("ecommerce" , 1); + СтруктураНастроекКода.Вставить("in_one_line" , 0); + СтруктураНастроекКода.Вставить("track_hash" , 1); + СтруктураНастроекКода.Вставить("visor" , 1); + СтруктураНастроекКода.Вставить("xml_site" , 0); + СтруктураНастроекКода.Вставить("ytm" , 0); + СтруктураНастроекКода.Вставить("alternative_cdn", 1); + + СтруктураИнформера = Новый Структура; + СтруктураИнформера.Вставить("color_arrow", 1); + СтруктураИнформера.Вставить("color_end" , "EFEFEFFE"); + СтруктураИнформера.Вставить("color_start", "EEEEEEEE"); + СтруктураИнформера.Вставить("color_text" , 0); + СтруктураИнформера.Вставить("enabled" , 1); + СтруктураИнформера.Вставить("indicator" , "uniques"); + СтруктураИнформера.Вставить("size" , 2); + СтруктураИнформера.Вставить("type" , "ext"); + + СтруктураНастроекКода.Вставить("informer", СтруктураИнформера); + + СтруктураСчетчика.Вставить("code_options", СтруктураНастроекКода); + + СтруктураФлагов = Новый Структура; + СтруктураФлагов.Вставить("collect_first_party_data" , Истина); + СтруктураФлагов.Вставить("measurement_enabled" , Истина); + СтруктураФлагов.Вставить("use_in_benchmarks" , Истина); + СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Истина); + + СтруктураСчетчика.Вставить("counter_flags" , СтруктураФлагов); + СтруктураСчетчика.Вставить("favorite" , 1); + СтруктураСчетчика.Вставить("filter_robots" , 2); + СтруктураСчетчика.Вставить("gdpr_agreement_accepted", 1); + + СтруктураДомена = Новый Структура("site", "openintegrations.dev"); + + СтруктураСчетчика.Вставить("site2", СтруктураДомена); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("fields", СтруктураСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьСчетчик", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьСчетчик", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчик(Результат); + + IDСчетчика = Результат["counter"]["id"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Metrika_CounterID", IDСчетчика); + OPI_Инструменты.ДобавитьПоле("Metrika_CounterID", IDСчетчика, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_УдалитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьСчетчик", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСчетчик", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаУспех(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_ИзменитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + СтруктураСчетчика = Новый Структура; + СтруктураСчетчика.Вставить("autogoals_enabled", Истина); + + СтруктураФлагов = Новый Структура; + СтруктураФлагов.Вставить("collect_first_party_data" , Ложь); + СтруктураФлагов.Вставить("measurement_enabled" , Ложь); + СтруктураФлагов.Вставить("use_in_benchmarks" , Ложь); + СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Ложь); + + СтруктураСчетчика.Вставить("counter_flags" , СтруктураФлагов); + СтруктураСчетчика.Вставить("favorite" , 0); + СтруктураСчетчика.Вставить("filter_robots" , 1); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("counter", IDСчетчика); + Опции.Вставить("fields" , СтруктураСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьСчетчик", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьСчетчик", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчик(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_ПолучитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСчетчик", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСчетчик", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчик(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_ВосстановитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ВосстановитьСчетчик", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВосстановитьСчетчик", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаУспех(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСчетчиков", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчики(Результат); + + // Фильтр по списку ID + + Фильтр = Новый Структура; + + МассивСчетчиков = Новый Массив; + МассивСчетчиков.Добавить(IDСчетчика); + + Фильтр.Вставить("counter_ids", МассивСчетчиков); + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("filter", Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокСчетчиков (фильтр)", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаСчетчики(Результат); + +КонецПроцедуры + +Процедура CLI_YandexMetrika_ПолучитьСписокОпераций(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token" , Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокОпераций", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОпераций", "YandexMetrika"); + OPI_ПолучениеДанныхТестов.Проверка_МетрикаОперации(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область S3 + +Процедура CLI_S3_ПолучитьСтруктуруДанных(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруДанных", "S3"); + +КонецПроцедуры + +Процедура CLI_S3_ОтправитьЗапросБезТела(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"] + "/opi-newbucket2"; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Метод = "GET"; + + Опции = Новый Структура; + Опции.Вставить("method", Метод); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросБезТела", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЗапросБезТела"); + +КонецПроцедуры + +Процедура CLI_S3_ОтправитьЗапросСТелом(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Метод = "PUT"; + Тело = "C:\test_data\document.docx"; + + Опции = Новый Структура; + Опции.Вставить("method", Метод); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("body" , Тело); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросСТелом", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЗапросСТелом"); + +КонецПроцедуры + +Процедура CLI_S3_СоздатьБакет(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + // Directory bucket + + Наименование = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "СоздатьБакет", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБакет (DB)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); + + // General purpose bucket + + Наименование = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "СоздатьБакет", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБакет", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_УдалитьБакет(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + // Directory bucket + + Наименование = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьБакет", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБакет (DB)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); + + // General purpose bucket + + Наименование = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьБакет", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБакет", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьСписокБакетов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Опции = Новый Структура; + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокБакетов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокБакетов", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПроверитьДоступностьБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьДоступностьБакета", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("account", "1234"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "opi-newbucket2"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШифрованиеБакета", "S3"); + +КонецПроцедуры + +Процедура CLI_S3_УдалитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "opi-newbucket2"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьШифрованиеБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьШифрованиеБакета", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_УстановитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "opi-newbucket2"; + + XMLКонфигурация = " + | + | + | AES256 + | + | + |"; + + XMLКонфигурация = ПолучитьДвоичныеДанныеИзСтроки(XMLКонфигурация); + ИВФ = ПолучитьИмяВременногоФайла("xml"); + XMLКонфигурация.Записать(ИВФ); + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("conf" , ИВФ); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьШифрованиеБакета", Опции); + + УдалитьФайлы(ИВФ); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьШифрованиеБакета", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3НеПоддерживается(Результат); + OPI_ПолучениеДанныхТестов.ЗаписатьФайлЛога("", "УстановитьШифрованиеБакета", "S3", Истина); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + // Directory bucket + + Наименование = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТегиБакета (DB)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); + + // General purpose bucket + + Наименование = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТегиБакета", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_УстановитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + СтруктураТегов = Новый Структура; + + СтруктураТегов.Вставить("MyTag1", "SomeValue"); + СтруктураТегов.Вставить("MyTag2", "AnotherOne"); + + // Directory bucket + + Наименование = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("tagset", СтруктураТегов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьТегиБакета (DB)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); + + // General purpose bucket + + Наименование = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("tagset", СтруктураТегов); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьТегиБакета", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_УдалитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + // Directory bucket + + Наименование = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТегиБакета (DB)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); + + // General purpose bucket + + Наименование = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТегиБакета", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТегиБакета (получение)", "S3"); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + // Directory bucket + + Наименование = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьНастройкийВерсионированияБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкийВерсионированияБакета (DB)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); + + // General purpose bucket + + Наименование = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьНастройкийВерсионированияБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкийВерсионированияБакета", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + Статус = Истина; + + // Directory bucket + + Наименование = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("status", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьНастройкиВерсионированияБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьНастройкиВерсионированияБакета (DB)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); + + // General purpose bucket + + Наименование = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("status", Истина); + Опции.Вставить("dir" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьНастройкиВерсионированияБакета", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьНастройкиВерсионированияБакета", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ЗагрузитьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + Бакет = "opi-gpbucket3"; + Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data" , Содержимое); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьОбъект", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + Наименование = "fileChunked.mp3"; + Бакет = "opi-gpbucket3"; + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + + ОсновныеДанные.Вставить("ChunkSize", 5242880); + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data" , Содержимое); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьОбъект (частями)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура CLI_S3_ЗагрузитьОбъектЦеликом(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "pictureSmall.jpg"; + Бакет = "opi-gpbucket3"; + Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data" , Содержимое); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьОбъектЦеликом", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура CLI_S3_УдалитьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + Бакет = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьОбъект", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьОписаниеОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + Бакет = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОписаниеОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеОбъекта", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_КопироватьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + ПутьИсточник = "picture.jpg"; + БакетИсточник = "opi-gpbucket3"; + + ПутьПриемник = "new_picture.jpg"; + БакетПриемник = "opi-dirbucket3"; + + Опции = Новый Структура; + Опции.Вставить("sname" , ПутьИсточник); + Опции.Вставить("sbucket", БакетИсточник); + Опции.Вставить("name" , ПутьПриемник); + Опции.Вставить("bucket" , БакетПриемник); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "КопироватьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "КопироватьОбъект", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); + OPI_S3.УдалитьОбъект(ПутьПриемник, БакетПриемник, ОсновныеДанные); + +КонецПроцедуры + +Процедура CLI_S3_УстановитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + Бакет = "opi-gpbucket3"; + + СтруктураТегов = Новый Структура; + + СтруктураТегов.Вставить("MyTag1", "SomeValue"); + СтруктураТегов.Вставить("MyTag2", "AnotherOne"); + + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("tagset", СтруктураТегов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьТегиОбъекта", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + Бакет = "opi-gpbucket3"; + + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТегиОбъекта", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_УдалитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + Бакет = "opi-gpbucket3"; + + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТегиОбъекта", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьСписокОбъектов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Бакет = "opi-gpbucket3"; + + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокОбъектов", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьСписокВерсийОбъектов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Бакет = "opi-gpbucket3"; + Префикс = "pic"; + + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("prefix", Префикс); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокВерсийОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокВерсийОбъектов", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьОбъект(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + НеобходимыйРазмер = Картинка.Размер(); + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + Бакет = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, НеобходимыйРазмер); + + ВременныйФайл = ПолучитьИмяВременногоФайла(); + ОсновныеДанные.Вставить("ChunkSize", 200000); + + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("out" , ВременныйФайл); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект (файл)", "S3"); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Размер() = НеобходимыйРазмер); + УдалитьФайлы(ВременныйФайл); + + Наименование = "bigfile.exe"; + Бакет = "newbucket2"; + + ВременныйФайлБольшой = ПолучитьИмяВременногоФайла(); + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("out" , ВременныйФайлБольшой); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект (большой, файл)", "S3"); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Размер() = 34432400); + УдалитьФайлы(ВременныйФайлБольшой); + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОбъект (большой, ДД)", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 34432400); + +КонецПроцедуры + +Процедура CLI_S3_ИнициализироватьЗагрузкуЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + Бакет = "opi-gpbucket3"; + + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИнициализироватьЗагрузкуЧастями", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; + ОбщийРазмер = Содержимое.Размер(); + РазмерУчастка = 5242880; + ПрочитаноБайт = 0; + НомерЧасти = 1; + + ЧтениеДанных = Новый ЧтениеДанных(Содержимое); + ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); + МассивТегов = Новый Массив; + + Пока ПрочитаноБайт < ОбщийРазмер Цикл + + ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); + ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); + + ИВФ = ПолучитьИмяВременногоФайла(); + ТекущиеДанные.Записать(ИВФ); + + Если ТекущиеДанные.Размер() = 0 Тогда + Прервать; + КонецЕсли; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket" , Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("upload" , IDЗагрузки); + Опции.Вставить("part" , НомерЧасти); + Опции.Вставить("content", ИВФ); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьЧастьОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьЧастьОбъекта", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); + + ETag = Результат["headers"]["Etag"]; + ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); + + МассивТегов.Добавить(ETag); + + УдалитьФайлы(ИВФ); + + НомерЧасти = НомерЧасти + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("tags" , МассивТегов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗавершитьЗагрузкуЧастями", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура CLI_S3_ОтменитьЗагрузкуЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + Бакет = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + + Начало = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"]; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтменитьЗагрузкуЧастями", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтменитьЗагрузкуЧастями", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + НеобходимыйРазмер = Картинка.Размер(); + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + Бакет = "opi-gpbucket3"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket" , Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("expires", 7200); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуСкачиванияОбъекта", Опции); + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуСкачиванияОбъекта", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); + + Результат = OPI_ЗапросыHTTP.Get(Результат); + + OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, НеобходимыйРазмер); + +КонецПроцедуры + +Процедура CLI_S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + НеобходимыйРазмер = Картинка.Размер(); + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "pictureU.jpg"; + Бакет = "newbucket2"; + + Опции = Новый Структура; + Опции.Вставить("name" , Наименование); + Опции.Вставить("bucket" , Бакет); + Опции.Вставить("basic" , ОсновныеДанные); + Опции.Вставить("expires", 7200); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуЗагрузкиОбъекта", Опции); + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуЗагрузкиОбъекта", "S3"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(Результат) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("PUT"); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСсылкуЗагрузкиОбъекта (PUT)", "S3"); + + Проверка = OPI_S3.ПолучитьОписаниеОбъекта(Наименование, Бакет, ОсновныеДанные); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "ПолучитьОписаниеОбъекта (Ссылка загрузки)", "S3"); + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(НеобходимыйРазмер = Число(Проверка["headers"]["Content-Length"])).Равно(Истина); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +#КонецОбласти + +#Область TCP + +Процедура CLI_TCP_ОбработатьЗапрос(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Данные = "Echo this!\n"; + + Опции = Новый Структура; + Опции.Вставить("address", Адрес); + Опции.Вставить("data" , Данные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); + + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбработатьЗапрос", "TCP"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(СтрЗаменить(Результат, Символы.ПС, "\n"), Данные); + + Адрес = ПараметрыФункции["TCP_AddressTLS"]; + Tls = OPI_TCP.ПолучитьНастройкиTls(Ложь); + Данные = "Echo this!\n"; + + Опции = Новый Структура; + Опции.Вставить("address", Адрес); + Опции.Вставить("data" , Данные); + Опции.Вставить("tls" , Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); + + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбработатьЗапрос (TLS)", "TCP"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(СтрЗаменить(Результат, Символы.ПС, "\n"), Данные); + +КонецПроцедуры + +Процедура CLI_TCP_ПолучитьНастройкиTls(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTls", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиTls", "TCP"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область SQLite + +Процедура CLI_SQLite_ВыполнитьЗапросSQL(ПараметрыФункции) + + ИВФ = ПолучитьИмяВременногоФайла("sqlite"); + + ФайлКартинки = ПолучитьИмяВременногоФайла("png"); + + Картинка = ПараметрыФункции["Picture"]; + КопироватьФайл(Картинка, ФайлКартинки); + + Блоб = Новый Структура("blob", ФайлКартинки); + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id INTEGER PRIMARY KEY, + |name TEXT, + |age INTEGER, + |salary REAL, + |is_active BOOLEAN, + |created_at DATETIME, + |data BLOB + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", СтрЗаменить(ТекстЗапроса, Символы.ПС, "")); + Опции.Вставить("db" , ИВФ); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Create)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES (?1, ?2, ?3, ?4, ?5, ?6);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить("Vitaly"); // TEXT + МассивПараметров.Добавить(25); // INTEGER + МассивПараметров.Добавить(1000.12); // REAL + МассивПараметров.Добавить(Истина); // BOOL + МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + МассивПараметров.Добавить(Блоб); // BLOB + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, "")); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("db" , ИВФ); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Insert)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", СтрЗаменить(ТекстЗапроса, Символы.ПС, "")); + Опции.Вставить("db" , ИВФ); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + Blob = Результат["data"][0]["data"]["blob"]; + + Результат["data"][0]["data"]["blob"] = "Base64"; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Select, код)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + Картинка = Новый ДвоичныеДанные(ФайлКартинки); + OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); + + // С расширением + + Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные + ТочкаВхода = "sqlite3_uuid_init"; + + СоответствиеРасширений = Новый Соответствие; + СоответствиеРасширений.Вставить(Расширение, ТочкаВхода); + + ТекстЗапроса = "SELECT uuid4();"; + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, "")); + Опции.Вставить("db" , ИВФ); + Опции.Вставить("exts", СоответствиеРасширений); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (расширение)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1); + + Попытка + УдалитьФайлы(ИВФ); + УдалитьФайлы(ФайлКартинки); + Исключение + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла базы", "SQLite"); + КонецПопытки; + +КонецПроцедуры + +Процедура CLI_SQLite_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + +КонецПроцедуры + +Процедура CLI_SQLite_СоздатьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); + СтруктураКолонок.Вставить("name" , "TEXT"); + СтруктураКолонок.Вставить("age" , "INTEGER"); + СтруктураКолонок.Вставить("salary" , "REAL"); + СтруктураКолонок.Вставить("is_active" , "BOOLEAN"); + СтруктураКолонок.Вставить("created_at", "DATETIME"); + СтруктураКолонок.Вставить("data" , "BLOB"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols" , СтруктураКолонок); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + СоответствиеКолонок = Новый Соответствие; + СоответствиеКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); + СоответствиеКолонок.Вставить("[Непонятная колонка]", "TEXT"); + + Опции = Новый Структура; + Опции.Вставить("table", "test1"); + Опции.Вставить("cols" , СоответствиеКолонок); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу (непонятная колонка)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + +КонецПроцедуры + +Процедура CLI_SQLite_ДобавитьЗаписи(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + ФайлКартинки = ПолучитьИмяВременногоФайла("png"); + Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("name" , "Vitaly"); // TEXT + СтруктураСтроки1.Вставить("age" , 25); // INTEGER + СтруктураСтроки1.Вставить("salary" , 1000.12); // REAL + СтруктураСтроки1.Вставить("is_active" , Истина); // BOOL + СтруктураСтроки1.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + СтруктураСтроки1.Вставить("data" , Новый Структура("blob", ФайлКартинки)); // BLOB + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("name" , "Lesha") ; // TEXT + СтруктураСтроки2.Вставить("age" , 20); // INTEGER + СтруктураСтроки2.Вставить("salary" , 200.20) ; // REAL + СтруктураСтроки2.Вставить("is_active" , Ложь) ; // BOOL + СтруктураСтроки2.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + СтруктураСтроки2.Вставить("data" , Новый Структура("blob", ФайлКартинки)); // BLOB + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows" , МассивДанных); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows" , МассивДанных); + Опции.Вставить("trn" , Ложь); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (без транзакции)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + СтруктураСтроки2.Вставить("error", "Lesha") ; + МассивДанных.Добавить(СтруктураСтроки2); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows" , МассивДанных); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (ошибка поля)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteОшибка(Результат); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows" , МассивДанных); + Опции.Вставить("trn" , Ложь); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (ошибка поля без транзакции)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteСтроки(Результат, 1); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows" , "not valid json"); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (ошибка json)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteОшибка(Результат); + + СоответствиеСтроки = Новый Соответствие; + СоответствиеСтроки.Вставить("[Непонятная колонка]", "yo"); + + Опции = Новый Структура; + Опции.Вставить("table", "test1"); + Опции.Вставить("rows" , СоответствиеСтроки); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (непонятная колонка)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + Попытка + УдалитьФайлы(ФайлКартинки); + Исключение + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "SQLite"); + КонецПопытки; + +КонецПроцедуры + +Процедура CLI_SQLite_ПолучитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Поля = Новый Массив; + Поля.Добавить("name"); + Поля.Добавить("salary"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "name"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Vitaly"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "age"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 30"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("created_at", "DESC"); + Количество = 1; + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order" , Сортировка); + Опции.Вставить("limit" , Количество); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (без параметров)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + СтруктураФильтра2.Вставить("type" , "BEETWEEN"); + Фильтры.Добавить(СтруктураФильтра2); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (ошибка)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteОшибка(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , "test1"); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (непонятная колонка)", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + +КонецПроцедуры + +Процедура CLI_SQLite_ОбновитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("name" , "Vitaly A."); + СтруктураПолей.Вставить("salary", "999999"); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "name"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", "Vitaly"); + СтруктураФильтра.Вставить("union", "AND"); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОбновитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЗаписи", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + СтруктураФильтра.Вставить("value", "Vitaly A."); + + Фильтры = Новый Массив; + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", "['name','salary']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db" , База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Проверка); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][0], СтруктураПолей); + +КонецПроцедуры + +Процедура CLI_SQLite_УдалитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "name"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", "Vitaly A."); + СтруктураФильтра.Вставить("union", "AND"); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", "['name','salary']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db" , База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteНетЗаписей(Проверка); + +КонецПроцедуры + +Процедура CLI_SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции.Вставить("empty" , Истина); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "SQLite"); + + Для Каждого Элемент Из Результат Цикл + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_SQLite_УдалитьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 0); + +КонецПроцедуры + +Процедура CLI_SQLite_ОчиститьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db" , База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОчиститьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 7); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "Проверка", "SQLite"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 0); + +КонецПроцедуры + +#КонецОбласти + +#Область PostgreSQL + +Процедура CLI_PostgreSQL_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + Результат = СтрЗаменить(Результат, Пароль, "***"); + Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьСтрокуПодключения", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Истина(СтрНачинаетсяС(Результат, "postgresql")); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ВыполнитьЗапросSQL(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + ИВФ = ПолучитьИмяВременногоФайла(); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + Картинка.Записать(ИВФ); + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Опции = Новый Структура(); + Опции.Вставить("dbc" , СтрокаПодключения); + + Опции.Вставить("table", "users"); + OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции, Ложь); + + Опции.Вставить("table", "test_data"); + OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции, Ложь); + + Опции.Вставить("table", "test_table"); + OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции, Ложь); + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id SERIAL PRIMARY KEY, + |name NAME, + |age INT, + |salary REAL, + |is_active BOOL, + |created_at DATE, + |data BYTEA + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Create)", "PostgreSQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES ($1, $2, $3, $4, $5, $6);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("NAME" , "Vitaly")); + МассивПараметров.Добавить(Новый Структура("INT" , 25)); + МассивПараметров.Добавить(Новый Структура("REAL" , 1000.12)); + МассивПараметров.Добавить(Новый Структура("BOOL" , Истина)); + МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("BYTEA", ИВФ)); + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Insert)", "PostgreSQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь); + + Blob = Результат["data"][0]["data"]["BYTEA"]; // SKIP + + Результат["data"][0]["data"]["BYTEA"] = "Base64"; // SKIP + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL", "PostgreSQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP + + // DO + Транзакция + + ТекстЗапроса = "DO $$ + |BEGIN + | CREATE TABLE users ( + | id SMALLSERIAL, + | name TEXT NOT NULL, + | age INT NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + | COMMIT; + |END $$ LANGUAGE plpgsql;"; + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Transaction)", "PostgreSQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + // SQL запрос из файла + + ФайлSQL = ПараметрыФункции["SQL"]; // Двоичные данные, URL или путь к файлу + + Опции = Новый Структура; + Опции.Вставить("sql" , ФайлSQL); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (файл)", "PostgreSQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + Попытка + УдалитьФайлы(ИВФ); + Исключение + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "PostgreSQL"); + КонецПопытки; + +КонецПроцедуры + +Процедура CLI_PostgreSQL_СоздатьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + База = "testbase1"; + + Опции = Новый Структура(); + Опции.Вставить("dbc" , СтрокаПодключения); + Опции.Вставить("base", База); + + Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции, Ложь); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); + + Опции = Новый Структура; + Опции.Вставить("base" , База); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных (существующая)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат); + + Адрес = "api.athenaeum.digital"; + Порт = "5433"; + + СтрокаПодключенияTLS = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, "postgres", Логин, Пароль, Порт); + НастройкиTLS = OPI_PostgreSQL.ПолучитьНастройкиTls(Истина); + + Опции = Новый Структура; + Опции.Вставить("base" , База); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных (TLS)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_СоздатьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("bool_field" , "BOOL"); + СтруктураКолонок.Вставить("oldchar_field" , """char"""); + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("smallserial_field", "SMALLSERIAL"); + СтруктураКолонок.Вставить("int_field" , "INT"); + СтруктураКолонок.Вставить("serial_field" , "SERIAL"); + СтруктураКолонок.Вставить("oid_field" , "OID"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("bigserial_field" , "BIGSERIAL"); + СтруктураКолонок.Вставить("real_field" , "REAL"); + СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION"); + СтруктураКолонок.Вставить("text_field" , "TEXT"); + СтруктураКолонок.Вставить("varchar_field" , "VARCHAR"); + СтруктураКолонок.Вставить("charn_field" , "CHAR(3)"); + СтруктураКолонок.Вставить("char_field" , "CHAR"); + СтруктураКолонок.Вставить("name_field" , "NAME"); + СтруктураКолонок.Вставить("bytea_field" , "BYTEA"); + СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP"); + СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE"); + СтруктураКолонок.Вставить("ip_field" , "INET"); + СтруктураКолонок.Вставить("json_field" , "JSON"); + СтруктураКолонок.Вставить("jsonb_field" , "JSONB"); + СтруктураКолонок.Вставить("date_field" , "DATE"); + СтруктураКолонок.Вставить("time_field" , "TIME"); + СтруктураКолонок.Вставить("uuid_field" , "UUID"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols" , СтруктураКолонок); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу (существующая)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 25); + + Таблица = "heyho"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице (ошибка)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ДобавитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + МассивЗаписей = Новый Массив; + + Картинка = ПараметрыФункции["Picture"]; + ИВФ = ПолучитьИмяВременногоФайла(); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + Картинка.Записать(ИВФ); + + СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00"); + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина)); + СтруктураЗаписи.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 1)); // или "char" + СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 5)); + СтруктураЗаписи.Вставить("smallserial_field", Новый Структура("SMALLSERIAL" , 6)); + СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100)); + СтруктураЗаписи.Вставить("serial_field" , Новый Структура("SERIAL" , 100)); + СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576)); + СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999)); + СтруктураЗаписи.Вставить("bigserial_field" , Новый Структура("BIGSERIAL" , 9999999)); + СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2)); + СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0002)); // или DOUBLE PRECISION + СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); + СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("VARCHAR" , "Some varchar")); + СтруктураЗаписи.Вставить("charn_field" , Новый Структура("CHAR" , "AAA")); + СтруктураЗаписи.Вставить("char_field" , Новый Структура("CHAR" , "A")); + СтруктураЗаписи.Вставить("name_field" , Новый Структура("NAME" , "Vitaly")); + СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , ИВФ)); + СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP" , ТекущаяДата)); + СтруктураЗаписи.Вставить("tswtz_field" , Новый Структура("TIMESTAMP_WITH_TIME_ZONE", ТекущаяДатаЧП)); // или TIMESTAMP WITH TIME ZONE + СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1")); + СтруктураЗаписи.Вставить("json_field" , Новый Структура("JSON" , СлучайнаяСтруктура)); + СтруктураЗаписи.Вставить("jsonb_field" , Новый Структура("JSONB" , СлучайнаяСтруктура)); + СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); + СтруктураЗаписи.Вставить("uuid_field" , Новый Структура("UUID" , Строка(Новый УникальныйИдентификатор()))); + + МассивЗаписей.Добавить(СтруктураЗаписи); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows" , МассивЗаписей); + Опции.Вставить("trn" , Истина); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ДобавитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Попытка + УдалитьФайлы(ИВФ); + Исключение + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "PostgreSQL"); + КонецПопытки; + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ПолучитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + // Все записи без отборов + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + Если ЗначениеЗаполнено(Результат["data"]) Тогда // SKIP + Результат["data"][0]["bytea_field"]["BYTEA"] // SKIP + = Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "..."; // SKIP + КонецЕсли; // SKIP + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи", "PostgreSQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + // Отборы, выбранные поля, количество и сортировка + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , "test_data"); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "test_data"; + + Поля = Новый Массив; + Поля.Добавить("first_name"); + Поля.Добавить("last_name"); + Поля.Добавить("email"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "gender"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Male"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "id"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 50"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("ip_address", "DESC"); + Количество = 5; + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order" , Сортировка); + Опции.Вставить("limit" , Количество); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (отборы)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 5); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ОбновитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "test_data"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Количество = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Количество, "ОбновитьЗаписи (количество)", "PostgreSQL"); // SKIP + Количество = Количество["data"].Количество(); // SKIP + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОбновитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЗаписи", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", "['ip_address']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "ОбновитьЗаписи (проверка)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], Количество); + + Для Н = 0 По Проверка["data"].ВГраница() Цикл + OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][Н], СтруктураПолей); + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_PostgreSQL_УдалитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "test_data"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + СтруктураФильтра.Вставить("union", "AND"); + + Фильтры.Добавить(СтруктураФильтра); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "ip_address"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Получение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьЗаписи", Опции); + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Получение, "УдалитьЗаписи (получение)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Количество = Получение["data"].Количество(); + Остаток = 100 - Количество; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи (проверка)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], Остаток); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ОчиститьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОчиститьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу (проверка)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_УдалитьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + База = "test_data"; + Таблица = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу (тест)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОтключитьВсеСоединенияБазыДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтключитьВсеСоединенияБазыДанных", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБазуДанных", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Адрес = "api.athenaeum.digital"; + Порт = "5433"; + + СтрокаПодключенияTLS = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, "postgres", Логин, Пароль, Порт); + НастройкиTLS = OPI_PostgreSQL.ПолучитьНастройкиTls(Истина); + + Опции = Новый Структура; + Опции.Вставить("base" , База); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБазуДанных (TLS)", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "PostgreSQL"); + + Для Каждого Элемент Из Результат Цикл + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_PostgreSQL_ПолучитьНастройкиTls(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTls", Опции, Ложь); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиTls", "PostgreSQL"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область MySQL + +Процедура CLI_MySQL_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); + + Результат = СтрЗаменить(Результат, Пароль, "***"); + Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьСтрокуПодключения", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_ВыполнитьЗапросSQL(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + ИВФ = ПолучитьИмяВременногоФайла(); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + Картинка.Записать(ИВФ); + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Опции = Новый Структура(); + Опции.Вставить("dbc" , СтрокаПодключения); + + Опции.Вставить("table", "users"); + OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь); + + Опции.Вставить("table", "test_data"); + OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь); + + Опции.Вставить("table", "test_table"); + OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции, Ложь); + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id INT AUTO_INCREMENT PRIMARY KEY, + |name VARCHAR(255), + |age INT, + |salary DOUBLE, + |amount FLOAT, + |type TINYINT UNSIGNED, + |date DATE, + |time TIME, + |data MEDIUMBLOB + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Create)", "MySQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, amount, type, date, time, data) + |VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("TEXT" , "Vitaly")); + МассивПараметров.Добавить(Новый Структура("INT" , 25)); + МассивПараметров.Добавить(Новый Структура("DOUBLE", 1000.12)); + МассивПараметров.Добавить(Новый Структура("FLOAT" , 1000.12)); + МассивПараметров.Добавить(Новый Структура("UINT" , 1)); + МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("TIME" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("BYTES" , ИВФ)); + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Insert)", "MySQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, " ")); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь); + + Blob = Результат["data"][0]["data"]["BYTES"]; // SKIP + + Результат["data"][0]["data"]["BYTES"] = "Base64"; // SKIP + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL", "MySQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP + + Опции = Новый Структура; + Опции.Вставить("sql" , "create table TEST_DATA (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));"); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции, Ложь); + + // SQL запрос из файла + + ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу + + Опции = Новый Структура; + Опции.Вставить("sql" , ФайлSQL); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (файл)", "MySQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + Попытка + УдалитьФайлы(ИВФ); + Исключение + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "MySQL"); + КонецПопытки; + +КонецПроцедуры + +Процедура CLI_MySQL_СоздатьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + База = "testbase1"; + + Опции = Новый Структура(); + Опции.Вставить("dbc" , СтрокаПодключения); + Опции.Вставить("base", База); + + Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции, Ложь); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "СоздатьБазуДанных (удаление)", "MySQL"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("base" , База); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных (существующая)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат); + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + Опции = Новый Структура; + Опции.Вставить("base" , База); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции, Ложь); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "СоздатьБазуДанных (удаление, TLS)", "MySQL"); // SKIP + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_СоздатьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("char_field" , "CHAR(5)"); + СтруктураКолонок.Вставить("varchar_field" , "VARCHAR(255)"); + СтруктураКолонок.Вставить("tinytext_field" , "TINYTEXT"); + СтруктураКолонок.Вставить("text_field" , "TEXT"); + СтруктураКолонок.Вставить("mediumtext_field", "MEDIUMTEXT"); + СтруктураКолонок.Вставить("longtext_field" , "LONGTEXT"); + СтруктураКолонок.Вставить("tinyint_field" , "TINYINT"); + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("mediumint_field" , "MEDIUMINT"); + СтруктураКолонок.Вставить("int_field" , "INT"); + СтруктураКолонок.Вставить("uint_field" , "INT UNSIGNED"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("float_field" , "FLOAT"); + СтруктураКолонок.Вставить("double_field" , "DOUBLE"); + СтруктураКолонок.Вставить("date_field" , "DATE"); + СтруктураКолонок.Вставить("time_field" , "TIME"); + СтруктураКолонок.Вставить("datetime_field" , "DATETIME"); + СтруктураКолонок.Вставить("timestamp_field" , "TIMESTAMP"); + СтруктураКолонок.Вставить("mediumblob_field", "MEDIUMBLOB"); + СтруктураКолонок.Вставить("set_field" , "SET('one','two','three')"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols" , СтруктураКолонок); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу (существующая)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат); + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols" , СтруктураКолонок); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТаблицу (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_ДобавитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + МассивЗаписей = Новый Массив; + + Картинка = ПараметрыФункции["Picture"]; + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("char_field" , Новый Структура("TEXT" , "AAAAA")); + СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("TEXT" , "Some varchar")); + СтруктураЗаписи.Вставить("tinytext_field" , Новый Структура("TEXT" , "Some tiny text")); + СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); + СтруктураЗаписи.Вставить("mediumtext_field", Новый Структура("TEXT" , "Some medium text")); + СтруктураЗаписи.Вставить("longtext_field" , Новый Структура("TEXT" , "Some looooooong text")); + СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("INT" , 127)); + СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("INT" , -32767)); + СтруктураЗаписи.Вставить("mediumint_field" , Новый Структура("INT" , 8388607)); + СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , -2147483647)); + СтруктураЗаписи.Вставить("uint_field" , Новый Структура("UINT" , 4294967295)); + СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("INT" , 9223372036854775807)); + СтруктураЗаписи.Вставить("float_field" , Новый Структура("FLOAT" , 100.50)); + СтруктураЗаписи.Вставить("double_field" , Новый Структура("FLOAT" , 100.512123)); + СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); + СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("timestamp_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("mediumblob_field", Новый Структура("BYTES" , Картинка)); + СтруктураЗаписи.Вставить("set_field" , Новый Структура("TEXT" , "one")); + + МассивЗаписей.Добавить(СтруктураЗаписи); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows" , МассивЗаписей); + Опции.Вставить("trn" , Истина); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows" , МассивЗаписей); + Опции.Вставить("trn" , Истина); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьЗаписи (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_ПолучитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + Если ЗначениеЗаполнено(Результат["data"]) Тогда // SKIP + Результат["data"][0]["mediumblob_field"]["BYTES"] = Лев(Результат["data"][0]["mediumblob_field"]["BYTES"], 10) + "..."; // SKIP + КонецЕсли; // SKIP + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи", "MySQL"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , "test_data"); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "test_data"; + + Поля = Новый Массив; + Поля.Добавить("first_name"); + Поля.Добавить("last_name"); + Поля.Добавить("email"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "gender"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Male"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "id"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 50"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("ip_address", "DESC"); + Количество = 5; + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order" , Сортировка); + Опции.Вставить("limit" , Количество); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (отборы)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 5); + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЗаписи (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"]); + +КонецПроцедуры + +Процедура CLI_MySQL_ОбновитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "test_data"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Количество = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Количество, "ОбновитьЗаписи (количество)", "MySQL"); // SKIP + Количество = Количество["data"].Количество(); // SKIP + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОбновитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЗаписи", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("fields", "['ip_address']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "ОбновитьЗаписи (проверка)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], Количество); + + Для Н = 0 По Проверка["data"].ВГраница() Цикл + OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][Н], СтруктураПолей); + КонецЦикла; + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + База = "testbase1"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("varchar_field", Новый Структура("VARCHAR", "Another varchar")); + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + Опции = Новый Структура; + Опции.Вставить("table" , "testtable"); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОбновитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОбновитьЗаписи (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_УдалитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "test_data"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + СтруктураФильтра.Вставить("union", "AND"); + + Фильтры.Добавить(СтруктураФильтра); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "ip_address"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Получение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Получение, "УдалитьЗаписи (получение)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Количество = Получение["data"].Количество(); + Остаток = 100 - Количество; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи (проверка)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], Остаток); + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + Опции = Новый Структура; + Опции.Вставить("table" , "testtable"); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьЗаписи (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_УдалитьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + База = "test_data"; + Таблица = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьТаблицу (тест)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБазуДанных", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("base" , База); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьБазуДанных (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_ОчиститьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОчиститьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Адрес = "api.athenaeum.digital"; + Порт = "3307"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("port" , Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключенияTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключенияTLS = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключенияTLS); + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключенияTLS); + Опции.Вставить("tls" , НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОчиститьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу (TLS)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + + Опции = Новый Структура; + Опции.Вставить("table" , Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьТаблицу (проверка)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0); + +КонецПроцедуры + +Процедура CLI_MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty" , Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty" , Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "MySQL"); + + Для Каждого Элемент Из Результат Цикл + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_MySQL_ПолучитьНастройкиTls(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTls", Опции, Ложь); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиTls", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_MySQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("addr" , Адрес); + Опции.Вставить("db" , База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass" , Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции, Ложь); + СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения); + + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 20); + + Таблица = "heyho"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc" , СтрокаПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОТаблице (ошибка)", "MySQL"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0); + +КонецПроцедуры + +#КонецОбласти + +#Область GreenAPI + +Процедура CLI_GreenAPI_СформироватьПараметрыДоступа(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + // END + + Результат.Вставить("apiTokenInstance", "***"); + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьПараметрыДоступа", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиИнстанса", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринИнстанс(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОбАккаунте", Опции); + + Попытка + Результат["deviceId"] = "***"; + Результат["phone"] = "***"; + Исключение + Сообщить("Не удалось заменить секреты!"); + КонецПопытки; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОбАккаунте", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринПрофиль(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекИнстанса", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекИнстанса (пустая)", "GreenAPI"); + + Для Каждого Элемент Из Результат Цикл + + Если OPI_Инструменты.ЭтоПримитивныйТип(Элемент.Значение) Тогда + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_GreenAPI_УстановитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + СтруктураНастроек = Новый Структура; + СтруктураНастроек.Вставить("pollMessageWebhook" , "yes"); + СтруктураНастроек.Вставить("incomingBlockWebhook" , "no"); + СтруктураНастроек.Вставить("incomingCallWebhook" , "no"); + СтруктураНастроек.Вставить("editedMessageWebhook" , "yes"); + СтруктураНастроек.Вставить("deletedMessageWebhook", "yes"); + + Опции = Новый Структура; + Опции.Вставить("settings", СтруктураНастроек); + Опции.Вставить("access" , ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьНастройкиИнстанса", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСохранениеНастроек(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСостояниеИнстанса", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСостояниеИнстанса", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринАвторизован(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПерезапуститьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПерезапуститьИнстанс", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПерезапуститьИнстанс", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринПерезапуск(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьQR(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьQR", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьQR", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринАвторизован(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_РазлогинитьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазлогинитьИнстанс", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "РазлогинитьИнстанс", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринПерезапуск(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьКодАвторизации(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + НомерТелефона = 441234567890; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("phone" , НомерТелефона); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьКодАвторизации", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКодАвторизации", "GreenAPI"); + +КонецПроцедуры + +Процедура CLI_GreenAPI_УстановитьКартинкуПрофиля(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Картинка = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуПрофиля", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьКартинкуПрофиля", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринАватар(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_СоздатьГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Наименование = "New group"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("name" , Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СоздатьГруппу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьГруппу", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринНоваяГруппа(Результат); + + IDГруппы = Результат["chatId"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_GroupID", IDГруппы); + OPI_Инструменты.ДобавитьПоле("GreenAPI_GroupID", IDГруппы, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПокинутьГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group" , IDГруппы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПокинутьГруппу", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПокинутьГруппу", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринВыходГруппы(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group" , IDГруппы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОГруппе", Опции); + + Попытка + Результат["owner"] = "***"; + Результат["participants"][0]["id"] = "***"; + Исключение + Сообщить("Не удалось заменить секреты!"); + КонецПопытки; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОГруппе", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринГруппа(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ИзменитьИмяГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + Имя = "New name"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group" , IDГруппы); + Опции.Вставить("name" , Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьИмяГруппы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьИмяГруппы", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринИмяГруппы(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group" , IDГруппы); + Опции.Вставить("user" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ДобавитьУчастникаВГруппу", Опции); + + Попытка + Результат["addParticipant"] = Истина; + Исключение + Сообщить("Не удалось заменить секреты!"); + КонецПопытки; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьУчастникаВГруппу", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринДобавлениеПользователя(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ИсключитьУчастникаГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group" , IDГруппы); + Опции.Вставить("user" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИсключитьУчастникаГруппы", Опции); + + Попытка + Результат["removeParticipant"] = Истина; + Исключение + Сообщить("Не удалось заменить секреты!"); + КонецПопытки; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИсключитьУчастникаГруппы", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринИсключениеПользователя(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_НазначитьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group" , IDГруппы); + Опции.Вставить("user" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "НазначитьПраваАдминистратора", Опции); + + Попытка + Результат["setGroupAdmin"] = Истина; + Исключение + Сообщить("Не удалось заменить секреты!"); + КонецПопытки; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "НазначитьПраваАдминистратора", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринНазначениеАдминистратора(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ОтозватьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group" , IDГруппы); + Опции.Вставить("user" , IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтозватьПраваАдминистратора", Опции); + + Попытка + Результат["removeAdmin"] = Истина; + Исключение + Сообщить("Не удалось заменить секреты!"); + КонецПопытки; + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтозватьПраваАдминистратора", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринОтзывАдминистратора(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_УстановитьКартинкуГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("group" , IDГруппы); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуГруппы", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьКартинкуГруппы", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринКартинкаГруппы(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Текст = "Новое сообщение"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + + IDСообщения = Результат["idMessage"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_MessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("GreenAPI_MessageID", IDСообщения, "Строка", ПараметрыФункции); + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("text" , Текст); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьТекстовоеСообщение (цитата)", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ОтправитьФайл(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + ИмяФайла = "photo.jpg"; + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Описание = "Описание файла"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("file" , Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption" , Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринФайл(Результат); + + IDСообщения = Результат["idMessage"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_FileMessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("GreenAPI_FileMessageID", IDСообщения, "Строка", ПараметрыФункции); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("file" , Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption" , Описание); + Опции.Вставить("quoted" , IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайл (цитата)", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринФайл(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ОтправитьФайлПоURL(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + ИмяФайла = "photo.jpg"; + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Описание = "Описание файла"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("url" , Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption" , Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайлПоURL", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + + IDСообщения = Результат["idMessage"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_FileMessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("GreenAPI_FileMessageID", IDСообщения, "Строка", ПараметрыФункции); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("url" , Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption" , Описание); + Опции.Вставить("quoted" , IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьФайлПоURL (цитата)", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ОтправитьОпрос(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Текст = "Какой ваш любимый цвет?"; + + ВариантыОтвета = Новый Массив; + ВариантыОтвета.Добавить("Красный"); + ВариантыОтвета.Добавить("Желтый"); + ВариантыОтвета.Добавить("Зеленый"); + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("text" , Текст); + Опции.Вставить("options", ВариантыОтвета); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьОпрос", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + + IDСообщения = Результат["idMessage"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_PollMessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("GreenAPI_PollMessageID", IDСообщения, "Строка", ПараметрыФункции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("text" , Текст); + Опции.Вставить("options", ВариантыОтвета); + Опции.Вставить("multi" , Истина); + Опции.Вставить("quoted" , IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьОпрос (цитата)", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьОписаниеЛокации(ПараметрыФункции) + + Широта = 53.908522; + Долгота = 27.574821; + Адрес = "Площадь Победы, Минск"; + Название = "пл. Победы"; + + Опции = Новый Структура; + Опции.Вставить("lat" , Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("addr", Адрес); + Опции.Вставить("name", Название); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеЛокации", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ОтправитьЛокацию(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Широта = 53.908522; + Долгота = 27.574821; + Адрес = "Площадь Победы, Минск"; + Название = "пл. Победы"; + + Опции = Новый Структура; + Опции.Вставить("lat" , Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("addr", Адрес); + Опции.Вставить("name", Название); + + Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("loc" , Локация); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЛокацию", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + + IDСообщения = Результат["idMessage"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_LocMessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("GreenAPI_LocMessageID", IDСообщения, "Строка", ПараметрыФункции); + + Опции = Новый Структура; + Опции.Вставить("lat" , Широта); + Опции.Вставить("long", Долгота); + + Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("loc" , Локация); + Опции.Вставить("quoted" , IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьЛокацию (цитата)", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыФункции) + + Телефон = 79001234568; + Имя = "Артем"; + Фамилия = "Евпаторийский"; + Отчество = "Петрович"; + Компания = "Велосипед"; + + Опции = Новый Структура; + Опции.Вставить("phone" , Телефон); + Опции.Вставить("name" , Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("midname", Отчество); + Опции.Вставить("company", Компания); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОписаниеКонтакта", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ОтправитьКонтакт(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Телефон = 79001234568; + Имя = "Артем"; + Фамилия = "Евпаторийский"; + Отчество = "Петрович"; + Компания = "Велосипед"; + + Опции = Новый Структура; + Опции.Вставить("phone" , Телефон); + Опции.Вставить("name" , Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("midname", Отчество); + Опции.Вставить("company", Компания); + + Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("contact", Контакт); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + + IDСообщения = Результат["idMessage"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_ContactMessageID", IDСообщения); + OPI_Инструменты.ДобавитьПоле("GreenAPI_ContactMessageID", IDСообщения, "Строка", ПараметрыФункции); + + Опции = Новый Структура; + Опции.Вставить("phone" , Телефон); + Опции.Вставить("company", Компания); + + Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("contact", Контакт); + Опции.Вставить("quoted" , IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьКонтакт (цитата)", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПереслатьСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Откуда = "11001234567@c.us"; + Откуда = ПараметрыФункции["GreenAPI_TestGroupID"]; // SKIP + Куда = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Сообщение = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("from" , Откуда); + Опции.Вставить("to" , Куда); + Опции.Вставить("msgs" , Сообщение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПереслатьСообщения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереслатьСообщения", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщения(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьУведомление(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьУведомление", Опции); + + JSON = OPI_Инструменты.JSONСтрокой(Результат); + JSON = СтрЗаменить(JSON, ПараметрыФункции["GreenAPI_AccountID"], "1234567890@c.us"); + + Результат = OPI_Инструменты.JsonВСтруктуру(JSON, Истина); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьУведомление", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринУведомление(Результат); + + IDУведомления = Результат["receiptId"]; + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GreenAPI_ReceiptID", IDУведомления); + OPI_Инструменты.ДобавитьПоле("GreenAPI_ReceiptID", IDУведомления, "Строка", ПараметрыФункции); + +КонецПроцедуры + +Процедура CLI_GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDДоставки = ПараметрыФункции["GreenAPI_ReceiptID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("receipt", IDДоставки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьУведомлениеИзОчереди", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьУведомлениеИзОчереди", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_СкачатьФайлСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_DownloadMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СкачатьФайлСообщения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьФайлСообщения", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринВходнойФайл(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_УстановитьОтметкуПрочтения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_DownloadMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьОтметкуПрочтения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УстановитьОтметкуПрочтения", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринПрочтение(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьОчередьСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОчередьСообщений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОчередьСообщений", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ОчиститьОчередьСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОчиститьОчередьСообщений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьОчередьСообщений", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринОчисткаОчереди(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьИсториюЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИсториюЧата", Опции); + + JSON = OPI_Инструменты.JSONСтрокой(Результат); + JSON = СтрЗаменить(JSON, ПараметрыФункции["GreenAPI_AccountID"], "1234567890@c.us"); + + Результат = OPI_Инструменты.JsonВСтруктуру(JSON, Истина); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьПараметрыДоступа", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("msg" , IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСообщение", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналВходящихСообщений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЖурналВходящихСообщений", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналИсходящихСообщений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЖурналИсходящихСообщений", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_УдалитьСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьСообщение", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_ИзменитьТекстСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text" , Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьТекстСообщения", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьТекстСообщения", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_ГринСообщение(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_АрхивироватьЧат(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "АрхивироватьЧат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "АрхивироватьЧат", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +Процедура CLI_GreenAPI_РазархивироватьЧат(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api" , ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id" , IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + Опции = Новый Структура; + Опции.Вставить("access" , ПараметрыДоступа); + Опции.Вставить("chat" , IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазархивироватьЧат", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "РазархивироватьЧат", "GreenAPI"); + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область RCON + +Процедура CLI_RCON_СформироватьПараметрыСоединения(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("pass" , Пароль); + Опции.Вставить("wtout", ТаймаутЗаписи); + Опции.Вставить("rtout", ТаймаутЧтения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + + Результат["URL"] = "127.0.0.1:25565"; + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьПараметрыСоединения", "RCON"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_RCON_ВыполнитьКоманду(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + Команда = "list"; + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("pass" , Пароль); + Опции.Вставить("wtout", ТаймаутЗаписи); + Опции.Вставить("rtout", ТаймаутЧтения); + + ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + + Опции.Вставить("exec", Команда); + Опции.Вставить("conn", ПараметрыСоединения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "ВыполнитьКоманду", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьКоманду", "RCON"); + OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); + +КонецПроцедуры + +#КонецОбласти + +#Область Ollama + +Процедура CLI_Ollama_ПолучитьОтвет(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Промпт = "What is 1C:Enterprise?"; + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("prompt" , Промпт); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОтвет", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaОтвет(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьОтветВКонтексте(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Модель = "tinyllama"; + + МассивСообщений = Новый Массив; + + Вопрос1 = Новый Структура("role,content", "user", "What is 1C:Enterprise?"); + Вопрос2 = Новый Структура("role,content", "user", "When the first version was released?"); // Вопрос без конкретики + + // Добавляем первый вопрос в контекст + МассивСообщений.Добавить(Вопрос1); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("msgs" , МассивСообщений); + Опции.Вставить("headers", ДопЗаголовки); + + Ответ1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Ответ1, "ПолучитьОтветВКонтексте (предварительный)", "Ollama"); // SKIP + OPI_ПолучениеДанныхТестов.Проверка_OllamaСообщение(Ответ1); // SKIP + + МассивСообщений.Добавить(Ответ1["message"]); // Добавляем ответ на первый вопрос в контекст + МассивСообщений.Добавить(Вопрос2); // Добавляем второй вопрос в контекст + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("msgs" , МассивСообщений); + Опции.Вставить("headers", ДопЗаголовки); + + Ответ2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + МассивСообщений.Добавить(Ответ2["message"]); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Ответ2, "ПолучитьОтветВКонтексте", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaСообщение(Ответ2); + +КонецПроцедуры + +Процедура CLI_Ollama_ЗагрузитьМодельВПамять(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + Период = 500; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("keep" , Период); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ЗагрузитьМодельВПамять", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьМодельВПамять", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaЗагрузкаВыгрузка(Результат, Ложь); + +КонецПроцедуры + +Процедура CLI_Ollama_ВыгрузитьМодельИзПамяти(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ВыгрузитьМодельИзПамяти", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыгрузитьМодельИзПамяти", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaЗагрузкаВыгрузка(Результат, Истина); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровЗапроса", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровЗапроса (пустая)", "Ollama"); + + Для Каждого Элемент Из Результат Цикл + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровВКонтексте", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровВКонтексте (пустая)", "Ollama"); + + Для Каждого Элемент Из Результат Цикл + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "Hello!"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруСообщенияКонтекста", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСообщенияКонтекста", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_СкачатьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьМодель", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaУспех(Результат); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , "bayselonarrend/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СкачатьМодель (bay)", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaУспех(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_УдалитьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМодель", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaКод(Результат); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , "library/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМодель (tiny)", "Ollama"); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , "bayselonarrend/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМодель (tiny, bay)", "Ollama"); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьМодель (список)", "Ollama"); + + OPI_ПолучениеДанныхТестов.Проверка_OllamaМодели(Результат); + OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["models"], 0); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьВерсию(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьВерсию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьВерсию", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaВерсия(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьПредставления(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("Why is the sky blue?"); + МассивСтрок.Добавить("Why is the grass green?"); + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("input" , МассивСтрок); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьПредставления", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьПредставления", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaПривязки(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровПредставлений", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруПараметровПредставлений (пустая)", "Ollama"); + + Для Каждого Элемент Из Результат Цикл + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_Ollama_СоздатьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Настройки = Новый Структура("from,system", "tinyllama", "You are Mario from Super Mario Bros."); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("settings", Настройки); + Опции.Вставить("headers" , ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СоздатьМодель", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьМодель", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaУспех(Результат); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("prompt" , "How are you?"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьМодель (запрос)", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaОтвет(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьИнформациюОМодели(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("verbose", Ложь); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьИнформациюОМодели", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьИнформациюОМодели", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaИнформацияМодели(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьСписокМоделей(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокМоделей", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaМодели(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокЗапущенныхМоделей", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСписокЗапущенныхМоделей", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaМодели(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_КопироватьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + Имя = "mario2"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("name" , Имя); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "КопироватьМодель", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "КопироватьМодель", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaКод(Результат); + + OPI_Ollama.УдалитьМодель(URL, Имя, ДопЗаголовки); + +КонецПроцедуры + +Процедура CLI_Ollama_ОтправитьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "bayselonarrend/tinyllama:latest"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("model" , Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьМодель", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaУспех(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекМодели", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруНастроекМодели (пустая)", "Ollama"); + + Для Каждого Элемент Из Результат Цикл + + OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура CLI_Ollama_ОтправитьBlob(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка, Истина); // SKIP + Рандом = ПолучитьДвоичныеДанныеИзСтроки(Строка(Новый УникальныйИдентификатор)); // SKIP + Картинка = OPI_Инструменты.СклеитьДанные(Картинка, Рандом); // SKIP + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("data" , Картинка); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьBlob", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОтправитьBlob", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaКод(Результат); + +КонецПроцедуры + +Процедура CLI_Ollama_ПроверитьBlob(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + SHA256 = ПараметрыФункции["Ollama_Blob"]; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("digest" , SHA256); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьBlob", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaКод(Результат); + + Опции = Новый Структура; + Опции.Вставить("url" , URL); + Опции.Вставить("digest" , "yoyoyo"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПроверитьBlob (ошибка)", "Ollama"); + OPI_ПолучениеДанныхТестов.Проверка_OllamaОшибка(Результат); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти diff --git a/src/ru/OInt/tools/Modules/OPI_ЗапросыHTTP.os b/src/ru/OInt/tools/Modules/OPI_ЗапросыHTTP.os index cd2c46fdbc..d1ccca5e39 100644 --- a/src/ru/OInt/tools/Modules/OPI_ЗапросыHTTP.os +++ b/src/ru/OInt/tools/Modules/OPI_ЗапросыHTTP.os @@ -1,366 +1,341 @@ -// OneScript: ./OInt/tools/Modules/OPI_ЗапросыHTTP.os - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:UnusedLocalVariable-off -// BSLLS:UsingServiceTag-off -// BSLLS:NumberOfOptionalParams-off - -//@skip-check module-unused-local-variable -//@skip-check method-too-many-params -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check use-non-recommended-method - -// Раскомментировать, если выполняется OneScript -#Использовать "./internal" - -#Область ПрограммныйИнтерфейс - -// Новый запрос -// Создает новый объект для работы с HTTP -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Объект обработки -Функция НовыйЗапрос() Экспорт - - Если OPI_Инструменты.ЭтоOneScript() Тогда - //@skip-check property-not-writable - Обработки = Неопределено; - HTTPКлиент = Новый("OPI_HTTPКлиент"); - Иначе - HTTPКлиент = Обработки.OPI_HTTPКлиент.Создать(); - КонецЕсли; - - Возврат HTTPКлиент; - -КонецФункции - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ЗапросыБезТела - -Функция Get(Знач URL - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач ФайлОтвета = Неопределено - , Знач ПолныйОтвет = Ложь) Экспорт - - Возврат ВыполнитьЗапросБезТела(URL, "GET", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет); - -КонецФункции - -Функция Head(Знач URL - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач ФайлОтвета = Неопределено - , Знач ПолныйОтвет = Ложь) Экспорт - - Возврат ВыполнитьЗапросБезТела(URL, "HEAD", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет); - -КонецФункции - -Функция Delete(Знач URL - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач ФайлОтвета = Неопределено - , Знач ПолныйОтвет = Ложь) Экспорт - - Возврат ВыполнитьЗапросБезТела(URL, "DELETE", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет); - -КонецФункции - -#КонецОбласти - -#Область ЗапросыСТелом - -Функция PostСТелом(Знач URL - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач JSON = Истина - , Знач ПолныйОтвет = Ложь - , Знач ФайлОтвета = Неопределено) Экспорт - - Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета); - -КонецФункции - -Функция PatchСТелом(Знач URL - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач JSON = Истина - , Знач ПолныйОтвет = Ложь - , Знач ФайлОтвета = Неопределено) Экспорт - - Возврат ВыполнитьЗапросСТелом(URL, "PATCH", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета); - -КонецФункции - -Функция PutСТелом(Знач URL - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач JSON = Истина - , Знач ПолныйОтвет = Ложь - , Знач ФайлОтвета = Неопределено) Экспорт - - Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета); - -КонецФункции - -Функция DeleteСТелом(Знач URL - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач JSON = Истина - , Знач ПолныйОтвет = Ложь - , Знач ФайлОтвета = Неопределено) Экспорт - - Возврат ВыполнитьЗапросСТелом(URL, "DELETE", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета); - -КонецФункции - -#КонецОбласти - -#Область ЗапросыMultipart - -Функция PostMultipart(Знач URL - , Знач Параметры = "" - , Знач Файлы = "" - , Знач ТипКонтента = "image/jpeg" - , Знач ДопЗаголовки = "" - , Знач ФайлОтвета = Неопределено) Экспорт - - HttpКлиент = НовыйЗапрос() - .Инициализировать(URL) - .УстановитьЗаголовки(ДопЗаголовки) - .УстановитьФайлОтвета(ФайлОтвета) - .НачатьЗаписьТелаMultipart(); - - Если ЗначениеЗаполнено(Файлы) Тогда - - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Файлы); - - Для Каждого Файл Из Файлы Цикл - - СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента); - - ИмяПоля = СтруктураИнформации["ИмяПоля"]; - ИмяФайла = СтруктураИнформации["ИмяФайла"]; - - HttpКлиент.ДобавитьФайлMultipartFormData(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента); - - КонецЦикла; - КонецЕсли; - - Если ЗначениеЗаполнено(Параметры) Тогда - - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Параметры); - - Для Каждого Параметр Из Параметры Цикл - HttpКлиент.ДобавитьПолеMultipartFormData(Параметр.Ключ, Параметр.Значение); - КонецЦикла; - КонецЕсли; - - HttpКлиент.ОбработатьЗапрос("POST"); - - Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина); - - Если HttpКлиент.Ошибка Тогда - ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина); - Иначе - Возврат Результат; - КонецЕсли; - -КонецФункции - -Функция PutMultipart(Знач URL - , Знач Параметры = "" - , Знач Файлы = "" - , Знач ТипКонтента = "image/jpeg" - , Знач ДопЗаголовки = "" - , Знач ФайлОтвета = Неопределено) Экспорт - - Возврат ВыполнитьЗапросМультипарт(URL, "PUT", Параметры, Файлы, ТипКонтента, ДопЗаголовки, ФайлОтвета); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ВыполнитьЗапросСТелом(Знач URL - , Знач Вид - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач JSON = Истина - , Знач ПолныйОтвет = Ложь - , Знач ФайлОтвета = Неопределено) - - HttpКлиент = НовыйЗапрос() - .Инициализировать(URL) - .УстановитьЗаголовки(ДопЗаголовки) - .УстановитьФайлОтвета(ФайлОтвета); - - Если JSON Тогда - HttpКлиент.УстановитьJsonТело(Параметры); - Иначе - HttpКлиент.УстановитьFormТело(Параметры); - КонецЕсли; - - HttpКлиент.ОбработатьЗапрос(Вид); - - Если ПолныйОтвет Тогда - Результат = HttpКлиент.ВернутьОтвет(Ложь, Истина); - Иначе - Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -Функция ВыполнитьЗапросБезТела(Знач URL - , Знач Вид - , Знач Параметры = "" - , Знач ДопЗаголовки = "" - , Знач ФайлОтвета = Неопределено - , Знач ПолныйОтвет = Ложь) - - HttpКлиент = НовыйЗапрос() - .Инициализировать(URL) - .УстановитьПараметрыURL(Параметры) - .УстановитьЗаголовки(ДопЗаголовки) - .УстановитьФайлОтвета(ФайлОтвета) - .ОбработатьЗапрос(Вид); - - Если ПолныйОтвет Тогда - Результат = HttpКлиент.ВернутьОтвет(Ложь, Истина); - Иначе - Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -Функция ВыполнитьЗапросМультипарт(Знач URL - , Знач Вид - , Знач Параметры = "" - , Знач Файлы = "" - , Знач ТипКонтента = "image/jpeg" - , Знач ДопЗаголовки = "" - , Знач ФайлОтвета = Неопределено) - - HttpКлиент = НовыйЗапрос() - .Инициализировать(URL) - .УстановитьЗаголовки(ДопЗаголовки) - .УстановитьФайлОтвета(ФайлОтвета) - .НачатьЗаписьТелаMultipart(); - - Для Каждого Файл Из Файлы Цикл - - СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента); - - ИмяПоля = СтруктураИнформации["ИмяПоля"]; - ИмяФайла = СтруктураИнформации["ИмяФайла"]; - - HttpКлиент.ДобавитьФайлMultipartFormData(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента); - - КонецЦикла; - - Для Каждого Параметр Из Параметры Цикл - HttpКлиент.ДобавитьПолеMultipartFormData(Параметр.Ключ, Параметр.Значение); - КонецЦикла; - - Результат = HttpКлиент.ОбработатьЗапрос("POST").ВернутьОтветКакJSONКоллекцию(Истина, Истина); - - Возврат Результат; - -КонецФункции - -Функция РазобратьКлючФайла(Знач ДанныеФайла, Знач ТипКонтента) - - ЗаменаТочки = "___"; - ИмяФайла = СтрЗаменить(ДанныеФайла, ЗаменаТочки, "."); - МассивИмени = СтрРазделить(ИмяФайла, "|", Ложь); - ЧастейИмени = 2; - - Если МассивИмени.Количество() = ЧастейИмени Тогда - ИмяПоля = МассивИмени[0]; - ИмяФайла = МассивИмени[1]; - Иначе - - Если ТипКонтента = "image/jpeg" Тогда - - ИмяПоля = "photo"; - - Иначе - - ИмяПоля = Лев(ИмяФайла, СтрНайти(ИмяФайла, ".") - 1); - ИмяПоля = ?(ЗначениеЗаполнено(ИмяПоля), ИмяПоля, СтрЗаменить(ДанныеФайла, ЗаменаТочки, ".")); - - КонецЕсли; - - КонецЕсли; - - СтруктураВозврата = Новый Структура("ИмяПоля,ИмяФайла", ИмяПоля, ИмяФайла); - - Возврат СтруктураВозврата; - -КонецФункции - -#КонецОбласти - - -#Region Alternate - -Function NewRequest() Export - Return НовыйЗапрос(); -EndFunction - -Function PostWithBody(Val URL, Val Parameters = "", Val AdditionalHeaders = "", Val JSON = True, Val FullResponse = False, Val ResponseFile = Undefined) Export - Return PostСТелом(URL, Parameters, AdditionalHeaders, JSON, FullResponse, ResponseFile); -EndFunction - -Function PatchWithBody(Val URL, Val Parameters = "", Val AdditionalHeaders = "", Val JSON = True, Val FullResponse = False, Val ResponseFile = Undefined) Export - Return PatchСТелом(URL, Parameters, AdditionalHeaders, JSON, FullResponse, ResponseFile); -EndFunction - -Function PutWithBody(Val URL, Val Parameters = "", Val AdditionalHeaders = "", Val JSON = True, Val FullResponse = False, Val ResponseFile = Undefined) Export - Return PutСТелом(URL, Parameters, AdditionalHeaders, JSON, FullResponse, ResponseFile); -EndFunction - -Function DeleteWithBody(Val URL, Val Parameters = "", Val AdditionalHeaders = "", Val JSON = True, Val FullResponse = False, Val ResponseFile = Undefined) Export - Return DeleteСТелом(URL, Parameters, AdditionalHeaders, JSON, FullResponse, ResponseFile); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/tools/Modules/OPI_ЗапросыHTTP.os + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:UsingServiceTag-off +// BSLLS:NumberOfOptionalParams-off + +//@skip-check module-unused-local-variable +//@skip-check method-too-many-params +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check use-non-recommended-method + +// Раскомментировать, если выполняется OneScript +#Использовать "./internal" + +#Область ПрограммныйИнтерфейс + +// Новый запрос +// Создает новый объект для работы с HTTP +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Объект обработки +Функция НовыйЗапрос() Экспорт + + Если OPI_Инструменты.ЭтоOneScript() Тогда + //@skip-check property-not-writable + Обработки = Неопределено; + HTTPКлиент = Новый("OPI_HTTPКлиент"); + Иначе + HTTPКлиент = Обработки.OPI_HTTPКлиент.Создать(); + КонецЕсли; + + Возврат HTTPКлиент; + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапросыБезТела + +Функция Get(Знач URL + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач ФайлОтвета = Неопределено + , Знач ПолныйОтвет = Ложь) Экспорт + + Возврат ВыполнитьЗапросБезТела(URL, "GET", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет); + +КонецФункции + +Функция Head(Знач URL + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач ФайлОтвета = Неопределено + , Знач ПолныйОтвет = Ложь) Экспорт + + Возврат ВыполнитьЗапросБезТела(URL, "HEAD", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет); + +КонецФункции + +Функция Delete(Знач URL + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач ФайлОтвета = Неопределено + , Знач ПолныйОтвет = Ложь) Экспорт + + Возврат ВыполнитьЗапросБезТела(URL, "DELETE", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет); + +КонецФункции + +#КонецОбласти + +#Область ЗапросыСТелом + +Функция PostСТелом(Знач URL + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач JSON = Истина + , Знач ПолныйОтвет = Ложь + , Знач ФайлОтвета = Неопределено) Экспорт + + Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета); + +КонецФункции + +Функция PatchСТелом(Знач URL + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач JSON = Истина + , Знач ПолныйОтвет = Ложь + , Знач ФайлОтвета = Неопределено) Экспорт + + Возврат ВыполнитьЗапросСТелом(URL, "PATCH", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета); + +КонецФункции + +Функция PutСТелом(Знач URL + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач JSON = Истина + , Знач ПолныйОтвет = Ложь + , Знач ФайлОтвета = Неопределено) Экспорт + + Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета); + +КонецФункции + +Функция DeleteСТелом(Знач URL + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач JSON = Истина + , Знач ПолныйОтвет = Ложь + , Знач ФайлОтвета = Неопределено) Экспорт + + Возврат ВыполнитьЗапросСТелом(URL, "DELETE", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета); + +КонецФункции + +#КонецОбласти + +#Область ЗапросыMultipart + +Функция PostMultipart(Знач URL + , Знач Параметры = "" + , Знач Файлы = "" + , Знач ТипКонтента = "image/jpeg" + , Знач ДопЗаголовки = "" + , Знач ФайлОтвета = Неопределено) Экспорт + + HttpКлиент = НовыйЗапрос() + .Инициализировать(URL) + .УстановитьЗаголовки(ДопЗаголовки) + .УстановитьФайлОтвета(ФайлОтвета) + .НачатьЗаписьТелаMultipart(); + + Если ЗначениеЗаполнено(Файлы) Тогда + + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Файлы); + + Для Каждого Файл Из Файлы Цикл + + СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента); + + ИмяПоля = СтруктураИнформации["ИмяПоля"]; + ИмяФайла = СтруктураИнформации["ИмяФайла"]; + + HttpКлиент.ДобавитьФайлMultipartFormData(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента); + + КонецЦикла; + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры) Тогда + + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Параметры); + + Для Каждого Параметр Из Параметры Цикл + HttpКлиент.ДобавитьПолеMultipartFormData(Параметр.Ключ, Параметр.Значение); + КонецЦикла; + КонецЕсли; + + HttpКлиент.ОбработатьЗапрос("POST"); + + Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина); + + Если HttpКлиент.Ошибка Тогда + ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина); + Иначе + Возврат Результат; + КонецЕсли; + +КонецФункции + +Функция PutMultipart(Знач URL + , Знач Параметры = "" + , Знач Файлы = "" + , Знач ТипКонтента = "image/jpeg" + , Знач ДопЗаголовки = "" + , Знач ФайлОтвета = Неопределено) Экспорт + + Возврат ВыполнитьЗапросМультипарт(URL, "PUT", Параметры, Файлы, ТипКонтента, ДопЗаголовки, ФайлОтвета); + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ВыполнитьЗапросСТелом(Знач URL + , Знач Вид + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач JSON = Истина + , Знач ПолныйОтвет = Ложь + , Знач ФайлОтвета = Неопределено) + + HttpКлиент = НовыйЗапрос() + .Инициализировать(URL) + .УстановитьЗаголовки(ДопЗаголовки) + .УстановитьФайлОтвета(ФайлОтвета); + + Если JSON Тогда + HttpКлиент.УстановитьJsonТело(Параметры); + Иначе + HttpКлиент.УстановитьFormТело(Параметры); + КонецЕсли; + + HttpКлиент.ОбработатьЗапрос(Вид); + + Если ПолныйОтвет Тогда + Результат = HttpКлиент.ВернутьОтвет(Ложь, Истина); + Иначе + Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ВыполнитьЗапросБезТела(Знач URL + , Знач Вид + , Знач Параметры = "" + , Знач ДопЗаголовки = "" + , Знач ФайлОтвета = Неопределено + , Знач ПолныйОтвет = Ложь) + + HttpКлиент = НовыйЗапрос() + .Инициализировать(URL) + .УстановитьПараметрыURL(Параметры) + .УстановитьЗаголовки(ДопЗаголовки) + .УстановитьФайлОтвета(ФайлОтвета) + .ОбработатьЗапрос(Вид); + + Если ПолныйОтвет Тогда + Результат = HttpКлиент.ВернутьОтвет(Ложь, Истина); + Иначе + Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ВыполнитьЗапросМультипарт(Знач URL + , Знач Вид + , Знач Параметры = "" + , Знач Файлы = "" + , Знач ТипКонтента = "image/jpeg" + , Знач ДопЗаголовки = "" + , Знач ФайлОтвета = Неопределено) + + HttpКлиент = НовыйЗапрос() + .Инициализировать(URL) + .УстановитьЗаголовки(ДопЗаголовки) + .УстановитьФайлОтвета(ФайлОтвета) + .НачатьЗаписьТелаMultipart(); + + Для Каждого Файл Из Файлы Цикл + + СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента); + + ИмяПоля = СтруктураИнформации["ИмяПоля"]; + ИмяФайла = СтруктураИнформации["ИмяФайла"]; + + HttpКлиент.ДобавитьФайлMultipartFormData(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента); + + КонецЦикла; + + Для Каждого Параметр Из Параметры Цикл + HttpКлиент.ДобавитьПолеMultipartFormData(Параметр.Ключ, Параметр.Значение); + КонецЦикла; + + Результат = HttpКлиент.ОбработатьЗапрос("POST").ВернутьОтветКакJSONКоллекцию(Истина, Истина); + + Возврат Результат; + +КонецФункции + +Функция РазобратьКлючФайла(Знач ДанныеФайла, Знач ТипКонтента) + + ЗаменаТочки = "___"; + ИмяФайла = СтрЗаменить(ДанныеФайла, ЗаменаТочки, "."); + МассивИмени = СтрРазделить(ИмяФайла, "|", Ложь); + ЧастейИмени = 2; + + Если МассивИмени.Количество() = ЧастейИмени Тогда + ИмяПоля = МассивИмени[0]; + ИмяФайла = МассивИмени[1]; + Иначе + + Если ТипКонтента = "image/jpeg" Тогда + + ИмяПоля = "photo"; + + Иначе + + ИмяПоля = Лев(ИмяФайла, СтрНайти(ИмяФайла, ".") - 1); + ИмяПоля = ?(ЗначениеЗаполнено(ИмяПоля), ИмяПоля, СтрЗаменить(ДанныеФайла, ЗаменаТочки, ".")); + + КонецЕсли; + + КонецЕсли; + + СтруктураВозврата = Новый Структура("ИмяПоля,ИмяФайла", ИмяПоля, ИмяФайла); + + Возврат СтруктураВозврата; + +КонецФункции + +#КонецОбласти diff --git a/src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os b/src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os index a1454af658..09da20f3e3 100644 --- a/src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os +++ b/src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os @@ -1,1216 +1,1159 @@ -// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off -// BSLLS:QueryParseError-off -// BSLLS:AssignAliasFieldsInQuery-off -// BSLLS:NumberOfParams-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params -//@skip-check constructor-function-return-section - -// Раскомментировать, если выполняется OneScript -#Использовать "./internal" - -#Область СлужебныйПрограммныйИнтерфейс - -Функция СоздатьБазуДанных(Знач Модуль, Знач База, Знач Соединение = "", Знач Tls = Неопределено) Экспорт - - Схема = ПустаяСхемаSQL("CREATEDATABASE", Модуль); - - УстановитьИмяБазы(Схема, База); - - Запрос = СформироватьТекстSQL(Схема); - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция УдалитьБазуДанных(Знач Модуль, Знач База, Знач Соединение = "", Знач Tls = Неопределено) Экспорт - - Схема = ПустаяСхемаSQL("DROPDATABASE", Модуль); - - УстановитьИмяБазы(Схема, База); - - Запрос = СформироватьТекстSQL(Схема); - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция СоздатьТаблицу(Знач Модуль - , Знач Таблица - , Знач СтруктураКолонок - , Знач Соединение = "" - , Знач Tls = Неопределено) Экспорт - - ТекстОшибки = "Структура колонок не является валидной структурой ключ-значение"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(СтруктураКолонок, ТекстОшибки); - - Схема = ПустаяСхемаSQL("CREATE", Модуль); - - УстановитьИмяТаблицы(Схема, Таблица); - - Для Каждого Колонка Из СтруктураКолонок Цикл - ДобавитьКолонку(Схема, Колонка.Ключ, Колонка.Значение); - КонецЦикла; - - Запрос = СформироватьТекстSQL(Схема); - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция ДобавитьЗаписи(Знач Модуль - , Знач Таблица - , Знач МассивДанных - , Знач Транзакция = Истина - , Знач Соединение = "" - , Знач Tls = Неопределено) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьМассив(МассивДанных); - OPI_ПреобразованиеТипов.ПолучитьБулево(Транзакция); - - Соединение = ОткрытьСоединение(Модуль, Соединение, Tls); - ПроблемныйЭтап = ОбработатьНачалоЗаписи(Модуль, Транзакция, Соединение); - - Если ЗначениеЗаполнено(ПроблемныйЭтап) Тогда - Возврат ПроблемныйЭтап; - КонецЕсли; - - СтруктураОбработки = ОбработатьЗаписи(Модуль, Таблица, МассивДанных, Транзакция, Соединение); - СтруктураРезультата = ОбработатьКонецЗаписи(СтруктураОбработки, Модуль, Транзакция, Соединение); - - Возврат СтруктураРезультата; - -КонецФункции - -Функция ПолучитьЗаписи(Знач Модуль - , Знач Таблица - , Знач Поля = "*" - , Знач Фильтры = "" - , Знач Сортировка = "" - , Знач Количество = "" - , Знач Соединение = "" - , Знач Tls = Неопределено) Экспорт - - Схема = ПустаяСхемаSQL("SELECT", Модуль); - - УстановитьИмяТаблицы(Схема, Таблица); - УстановитьЛимит(Схема, Количество); - - ЗаполнитьПоля(Схема, Поля); - ЗаполнитьФильтры(Схема, Фильтры); - ЗаполнитьСортировку(Схема, Сортировка); - - Запрос = СформироватьТекстSQL(Схема); - - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, Схема["values"], , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция ОбновитьЗаписи(Знач Модуль - , Знач Таблица - , Знач СтруктураЗначений - , Знач Фильтры = "" - , Знач Соединение = "" - , Знач Tls = Неопределено) Экспорт - - Схема = ПустаяСхемаSQL("UPDATE", Модуль); - - МассивПолей = Новый Массив; - МассивЗначений = Новый Массив; - - УстановитьИмяТаблицы(Схема, Таблица); - РазделитьКоллекциюДанных(СтруктураЗначений, МассивПолей, МассивЗначений); - - Схема["values"] = МассивЗначений; - - Для Каждого Поле Из МассивПолей Цикл - ДобавитьПоле(Схема, Поле); - КонецЦикла; - - ЗаполнитьФильтры(Схема, Фильтры); - - Запрос = СформироватьТекстSQL(Схема); - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, Схема["values"], , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция УдалитьЗаписи(Знач Модуль - , Знач Таблица - , Знач Фильтры = "" - , Знач Соединение = "" - , Знач Tls = Неопределено) Экспорт - - Схема = ПустаяСхемаSQL("DELETE", Модуль); - - УстановитьИмяТаблицы(Схема, Таблица); - - ЗаполнитьФильтры(Схема, Фильтры); - - Запрос = СформироватьТекстSQL(Схема); - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, Схема["values"], , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция УдалитьТаблицу(Знач Модуль, Знач Таблица, Знач Соединение = "", Знач Tls = Неопределено) Экспорт - - Схема = ПустаяСхемаSQL("DROP", Модуль); - - УстановитьИмяТаблицы(Схема, Таблица); - - Запрос = СформироватьТекстSQL(Схема); - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция ОчиститьТаблицу(Знач Модуль, Знач Таблица, Знач Соединение = "", Знач Tls = Неопределено) Экспорт - - Схема = ПустаяСхемаSQL("TRUNCATE", Модуль); - - УстановитьИмяТаблицы(Схема, Таблица); - - Запрос = СформироватьТекстSQL(Схема); - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция ПолучитьСтруктуруТаблицы(Знач Модуль, Знач Таблица, Знач Соединение = "", Знач Tls = Неопределено) Экспорт - - Схема = ПустаяСхемаSQL("TABLESCHEMA", Модуль); - - УстановитьИмяТаблицы(Схема, Таблица); - - Запрос = СформироватьТекстSQL(Схема); - Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , Истина, Соединение, Tls); - - Возврат Результат; - -КонецФункции - -Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "<имя поля для отбора>"); - СтруктураФильтра.Вставить("type" , "<тип сравнения>"); - СтруктураФильтра.Вставить("value", "<значение для сравнения>"); - СтруктураФильтра.Вставить("union", "<связь со следующим условием: AND, OR и пр.>"); - СтруктураФильтра.Вставить("raw" , "<истина - значение будет вставлено текстом, как есть, ложь - через параметр>"); - - Если Пустая Тогда - СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра); - КонецЕсли; - - //@skip-check constructor-function-return-section - Возврат СтруктураФильтра; - -КонецФункции - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Схемы - -Функция ПустаяСхемаSQL(Знач Действие, Знач Модуль = Неопределено) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Действие); - - Действие = вРег(Действие); - - Если Действие = "SELECT" Тогда - - Схема = ПустаяСхемаSelect(); - - ИначеЕсли Действие = "INSERT" Тогда - - Схема = ПустаяСхемаInsert(); - - ИначеЕсли Действие = "UPDATE" Тогда - - Схема = ПустаяСхемаUpdate(); - - ИначеЕсли Действие = "DELETE" Тогда - - Схема = ПустаяСхемаDelete(); - - ИначеЕсли Действие = "CREATE" Тогда - - Схема = ПустаяСхемаCreate(); - - ИначеЕсли Действие = "DROP" Тогда - - Схема = ПустаяСхемаDrop(); - - ИначеЕсли Действие = "TRUNCATE" Тогда - - Схема = ПустаяСхемаTruncate(); - - ИначеЕсли Действие = "CREATEDATABASE" Тогда - - Схема = ПустаяСхемаCreateDatabase(); - - ИначеЕсли Действие = "DROPDATABASE" Тогда - - Схема = ПустаяСхемаDropDatabase(); - - ИначеЕсли Действие = "TABLESCHEMA" Тогда - - Схема = ПустаяСхемаTableSchema(); - - Иначе - - Схема = Новый Структура; - - КонецЕсли; - - Особенности = Модуль.ПолучитьОсобенности(); - - ЗаменитьСтандартныеОсобенности(Особенности); - - Схема.Вставить("nump" , Особенности["НумерацияПараметров"]); - Схема.Вставить("markp", Особенности["МаркерПараметров"]); - Схема.Вставить("dbms" , Особенности["СУБД"]); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаSelect() - - Схема = Новый Структура("type", "SELECT"); - - Схема.Вставить("table" , ""); - Схема.Вставить("filter" , Новый Массив); - Схема.Вставить("order" , Новый Массив); - Схема.Вставить("limit" , 0); - Схема.Вставить("set" , Новый Массив); - Схема.Вставить("values" , Новый Массив); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаInsert() - - Схема = Новый Структура("type", "INSERT"); - - Схема.Вставить("table", ""); - Схема.Вставить("set" , Новый Массив); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаUpdate() - - Схема = Новый Структура("type", "UPDATE"); - - Схема.Вставить("table" , ""); - Схема.Вставить("set" , Новый Массив); - Схема.Вставить("filter" , Новый Массив); - Схема.Вставить("values" , Новый Массив); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаDelete() - - Схема = Новый Структура("type", "DELETE"); - - Схема.Вставить("table" , ""); - Схема.Вставить("filter", Новый Массив); - Схема.Вставить("values", Новый Массив); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаCreate() - - Схема = Новый Структура("type", "CREATE"); - - Схема.Вставить("table" , ""); - Схема.Вставить("columns", Новый Массив); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаDrop() - - Схема = Новый Структура("type", "DROP"); - - Схема.Вставить("table" , ""); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаTruncate() - - Схема = Новый Структура("type", "TRUNCATE"); - - Схема.Вставить("table" , ""); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаCreateDatabase() - - Схема = Новый Структура("type", "CREATEDATABASE"); - - Схема.Вставить("database" , ""); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаDropDatabase() - - Схема = Новый Структура("type", "DROPDATABASE"); - - Схема.Вставить("database" , ""); - - Возврат Схема; - -КонецФункции - -Функция ПустаяСхемаTableSchema() - - Схема = Новый Структура("type", "TABLESCHEMA"); - - Схема.Вставить("table" , ""); - Схема.Вставить("common", Истина); - - Возврат Схема; - -КонецФункции - -#КонецОбласти - -#Область Процессоры - -Функция СформироватьТекстSQL(Знач Схема) - - ТекстОшибки = "Переданное значение не является валидной схемой SQL запроса"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Схема, ТекстОшибки); - - ТипСхемы = ""; - - Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Схема, "type", ТипСхемы) Тогда - ВызватьИсключение ТекстОшибки; - КонецЕсли; - - ТипСхемы = вРег(ТипСхемы); - - Если ТипСхемы = "SELECT" Тогда - - ТекстЗапроса = СформироватьТекстSelect(Схема); - - ИначеЕсли ТипСхемы = "INSERT" Тогда - - ТекстЗапроса = СформироватьТекстInsert(Схема); - - ИначеЕсли ТипСхемы = "UPDATE" Тогда - - ТекстЗапроса = СформироватьТекстUpdate(Схема); - - ИначеЕсли ТипСхемы = "DELETE" Тогда - - ТекстЗапроса = СформироватьТекстDelete(Схема); - - ИначеЕсли ТипСхемы = "CREATE" Тогда - - ТекстЗапроса = СформироватьТекстCreate(Схема); - - ИначеЕсли ТипСхемы = "DROP" Тогда - - ТекстЗапроса = СформироватьТекстDrop(Схема); - - ИначеЕсли ТипСхемы = "TRUNCATE" Тогда - - ТекстЗапроса = СформироватьТекстTruncate(Схема); - - ИначеЕсли ТипСхемы = "CREATEDATABASE" Тогда - - ТекстЗапроса = СформироватьТекстCreateDatabase(Схема); - - ИначеЕсли ТипСхемы = "DROPDATABASE" Тогда - - ТекстЗапроса = СформироватьТекстDropDatabase(Схема); - - ИначеЕсли ТипСхемы = "TABLESCHEMA" Тогда - - ТекстЗапроса = СформироватьТекстTableSchema(Схема); - - Иначе - - ТекстЗапроса = ""; - - КонецЕсли; - - Возврат ТекстЗапроса; - -КонецФункции - -Функция СформироватьТекстSelect(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "table,filter,order,limit,set"); - - Таблица = Схема["table"]; - Поля = Схема["set"]; - Фильтры = Схема["filter"]; - Сортировка = Схема["order"]; - Количество = Схема["limit"]; - - ШаблонSQL = "SELECT %1 FROM %2 - |%3;"; - - БлокНастроек = СформироватьТекстНастроекSelect(Фильтры, Сортировка, Количество); - - ТекстSQL = СтрШаблон(ШаблонSQL, СтрСоединить(Поля, ", "), Таблица, БлокНастроек); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстInsert(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "table,set"); - - Таблица = Схема["table"]; - Поля = Схема["set"]; - Нумерация = Схема["nump"]; - Маркер = Схема["markp"]; - - ШаблонSQL = "INSERT INTO %1 (%2) VALUES (%3);"; - - Параметры = Новый Массив; - - Для Н = 1 По Поля.Количество() Цикл - - ТекущийМаркер = Маркер; - - Если Нумерация Тогда - ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(Н); - КонецЕсли; - - Параметры.Добавить(ТекущийМаркер); - - КонецЦикла; - - ТекстSQL = СтрШаблон(ШаблонSQL - , Таблица - , СтрСоединить(Поля, ", ") - , СтрСоединить(Параметры, ", ")); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстUpdate(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "table,set,values"); - - Таблица = Схема["table"]; - Поля = Схема["set"]; - Фильтры = Схема["filter"]; - Нумерация = Схема["nump"]; - Маркер = Схема["markp"]; - - ШаблонSQL = "UPDATE %1 SET %2 %3;"; - - ТекстФильтра = СформироватьТекстФильтра(Фильтры); - - Для Н = 0 По Поля.ВГраница() Цикл - - ТекущийМаркер = Маркер; - - Если Нумерация Тогда - ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(Н + 1); - КонецЕсли; - - Поля[Н] = Поля[Н] + " = " + ТекущийМаркер; - - КонецЦикла; - - ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, СтрСоединить(Поля, "," + Символы.ПС), ТекстФильтра); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстDelete(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "table"); - - Таблица = Схема["table"]; - Фильтры = Схема["filter"]; - - ШаблонSQL = "DELETE FROM %1 %2;"; - - ТекстФильтра = СформироватьТекстФильтра(Фильтры); - - ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, ТекстФильтра); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстCreate(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "table,columns"); - - Таблица = Схема["table"]; - Колонки = Схема["columns"]; - - ШаблонSQL = "CREATE TABLE %1 ( - | %2 - | );"; - - ШаблонКолонки = "%1 %2"; - - МассивОписанийКолонок = Новый Массив; - - Для Каждого Колонка Из Колонки Цикл - Для Каждого Элемент Из Колонка Цикл - МассивОписанийКолонок.Добавить(СтрШаблон(ШаблонКолонки, Элемент.Ключ, Элемент.Значение)); - КонецЦикла; - КонецЦикла; - - ОписанияКолонок = СтрСоединить(МассивОписанийКолонок, "," + Символы.ПС); - - ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, ОписанияКолонок); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстDrop(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "table"); - - Таблица = Схема["table"]; - - ШаблонSQL = "DROP TABLE %1;"; - - ТекстSQL = СтрШаблон(ШаблонSQL, Таблица); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстTruncate(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "table"); - - Таблица = Схема["table"]; - - ШаблонSQL = "TRUNCATE TABLE %1;"; - - ТекстSQL = СтрШаблон(ШаблонSQL, Таблица); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстCreateDatabase(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "database"); - - База = Схема["database"]; - - ШаблонSQL = "CREATE DATABASE %1;"; - - ТекстSQL = СтрШаблон(ШаблонSQL, База); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстDropDatabase(Знач Схема) - - ПроверитьОбязательныеПоляСхемы(Схема, "database"); - - База = Схема["database"]; - - ШаблонSQL = "DROP DATABASE %1;"; - - ТекстSQL = СтрШаблон(ШаблонSQL, База); - - Возврат ТекстSQL; - -КонецФункции - -Функция СформироватьТекстTableSchema(Знач Схема) - - СУБД = Схема["dbms"]; - Таблица = Схема["table"]; - - Если СУБД = "sqlite" Тогда - - ШаблонSQL = "PRAGMA table_info('%1');"; - - Иначе - - ШаблонSQL = "SELECT column_name, data_type, is_nullable, column_default, character_maximum_length - |FROM information_schema.columns - |WHERE table_name = '%1';"; - - КонецЕсли; - - ТекстSQL = СтрШаблон(ШаблонSQL, Таблица); - - Возврат ТекстSQL; - -КонецФункции - -#КонецОбласти - -#Область Вспомогательные - -Функция ОткрытьСоединение(Знач Модуль, Знач Соединение, Знач Tls) - - Если Tls = Неопределено Тогда - Результат = Модуль.ОткрытьСоединение(Соединение); - Иначе - Результат = Модуль.ОткрытьСоединение(Соединение, Tls); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -Функция ВыполнитьЗапросSQL(Знач Модуль - , Знач ТекстЗапроса - , Знач Параметры = "" - , Знач ФорсироватьРезультат = Ложь - , Знач Соединение = "" - , Знач Tls = Неопределено) - - Если ЗначениеЗаполнено(Tls) Тогда - Результат = Модуль.ВыполнитьЗапросSQL(ТекстЗапроса, Параметры, ФорсироватьРезультат, Соединение, Tls); - Иначе - Результат = Модуль.ВыполнитьЗапросSQL(ТекстЗапроса, Параметры, ФорсироватьРезультат, Соединение); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -Функция ОбработатьЗаписи(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение) - - МассивОшибок = Новый Массив; - ОшибкаКоллекции = "Invalid data"; - Счетчик = 0; - СчетчикУспешных = 0; - - Для Каждого Запись Из МассивДанных Цикл - - Счетчик = Счетчик + 1; - - Попытка - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции); - Исключение - - МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции)); - - Если Транзакция Тогда - Прервать; - Иначе - Продолжить; - КонецЕсли; - - КонецПопытки; - - Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение); - - Если Результат["result"] Тогда - - СчетчикУспешных = СчетчикУспешных + 1; - - Иначе - - МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"])); - - КонецЕсли; - - КонецЦикла; - - Результат = Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, СчетчикУспешных); - Возврат Результат; - -КонецФункции - -Функция ОбработатьНачалоЗаписи(Знач Модуль, Знач Транзакция, Знач Соединение) - - Если Не OPI_Компоненты.ЭтоКомпонента(Соединение) Тогда - Возврат Соединение; - КонецЕсли; - - Если Транзакция Тогда - - Начало = Модуль.ВыполнитьЗапросSQL("BEGIN", , , Соединение); - - Если Не Начало["result"] Тогда - Возврат Начало; - КонецЕсли; - - КонецЕсли; - -КонецФункции - -Функция ОбработатьКонецЗаписи(Знач СтруктураОбработки, Знач Модуль, Знач Транзакция, Знач Соединение) - - СтруктураРезультата = Новый Структура; - - МассивОшибок = СтруктураОбработки["МассивОшибок"]; - СчетчикУспешных = СтруктураОбработки["СчетчикУспешных"]; - - Если Транзакция Тогда - - Если МассивОшибок.Количество() > 0 Тогда - - Откат = Модуль.ВыполнитьЗапросSQL("ROLLBACK;", , , Соединение); - - СчетчикУспешных = 0; - СтруктураРезультата.Вставить("rollback", Откат); - - Иначе - - Завершение = Модуль.ВыполнитьЗапросSQL("COMMIT;", , , Соединение); - СтруктураРезультата.Вставить("commit", Завершение); - - КонецЕсли; - - КонецЕсли; - - СтруктураРезультата.Вставить("result", МассивОшибок.Количество() = 0); - СтруктураРезультата.Вставить("rows" , СчетчикУспешных); - СтруктураРезультата.Вставить("errors", МассивОшибок); - - Возврат СтруктураРезультата; - -КонецФункции - -Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение) - - МассивПолей = Новый Массив; - МассивЗначений = Новый Массив; - - Схема = ПустаяСхемаSQL("INSERT", Модуль); - УстановитьИмяТаблицы(Схема, Таблица); - - РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений); - - Для Каждого Поле Из МассивПолей Цикл - ДобавитьПоле(Схема, Поле); - КонецЦикла; - - Запрос = СформироватьТекстSQL(Схема); - - Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение); - - Возврат Результат; - -КонецФункции - -Функция СформироватьТекстНастроекSelect(Знач Фильтры, Знач Сортировка, Знач Количество) - - ШаблонБлока = "%1 - |%2 - |%3"; - - ТекстФильтра = СформироватьТекстФильтра(Фильтры); - ТекстСортировки = СформироватьТекстСортировки(Сортировка); - ТекстКоличества = СформироватьТекстКоличества(Количество); - - ТекстБлока = СтрШаблон(ШаблонБлока, ТекстФильтра, ТекстСортировки, ТекстКоличества); - - Возврат ТекстБлока; - -КонецФункции - -Функция СформироватьТекстФильтра(Знач Фильтры) - - Если Не ЗначениеЗаполнено(Фильтры) Тогда - Возврат ""; - КонецЕсли; - - ТекстФильтров = "WHERE %1"; - - МассивФильтров = Новый Массив; - - Счетчик = 1; - Всего = Фильтры.Количество(); - - Для Каждого Фильтр Из Фильтры Цикл - - ТекущийТекст = "%1 %2 %3 %4"; - - Поле = Фильтр["field"]; - Тип = Фильтр["type"]; - Значение = Фильтр["value"]; - Соединение = Фильтр["union"]; - Соединение = ?(ЗначениеЗаполнено(Соединение), Соединение, "AND"); - - Если Счетчик = Всего Тогда - Соединение = ""; - КонецЕсли; - - ТекущийТекст = СтрШаблон(ТекущийТекст, Поле, Тип, Значение, Соединение); - МассивФильтров.Добавить(ТекущийТекст); - - Счетчик = Счетчик + 1; - - КонецЦикла; - - ТекстФильтров = СтрШаблон(ТекстФильтров, СтрСоединить(МассивФильтров, " ")); - - Возврат ТекстФильтров; - -КонецФункции - -Функция СформироватьТекстСортировки(Знач Сортировка) - - Если Не ЗначениеЗаполнено(Сортировка) Тогда - Возврат ""; - КонецЕсли; - - ТекстСортировки = "ORDER BY %1"; - - МассивСортировки = Новый Массив; - - Для Каждого Элемент Из Сортировка Цикл - - МассивСортировки.Добавить(Элемент["field"] + " " + Элемент["type"]); - - КонецЦикла; - - ТекстСортировки = СтрШаблон(ТекстСортировки, СтрСоединить(МассивСортировки, ", ")); - - Возврат ТекстСортировки; - -КонецФункции - -Функция СформироватьТекстКоличества(Знач Количество) - - Если Не ЗначениеЗаполнено(Количество) Тогда - Возврат ""; - КонецЕсли; - - ТекстКоличества = "LIMIT %1"; - ТекстКоличества = СтрШаблон(ТекстКоличества, OPI_Инструменты.ЧислоВСтроку(Количество)); - - Возврат ТекстКоличества; - -КонецФункции - -Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений) - - ТекстОшибки = "Некорректный набор данных для обновления"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ТекстОшибки); - - Для Каждого Элемент Из Запись Цикл - - МассивПолей.Добавить(Элемент.Ключ); - МассивЗначений.Добавить(Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура ЗаполнитьПоля(Схема, Знач Поля) - - Если Не ЗначениеЗаполнено(Поля) Тогда - Поля = "*"; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьМассив(Поля); - - Для Каждого Поле Из Поля Цикл - ДобавитьПоле(Схема, Поле); - КонецЦикла; - -КонецПроцедуры - -Процедура ЗаполнитьФильтры(Схема, Знач Фильтры) - - Если Не ЗначениеЗаполнено(Фильтры) Тогда - Возврат; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьМассив(Фильтры); - - Для Каждого Фильтр Из Фильтры Цикл - - ДобавитьОтбор(Схема - , Фильтр["field"] - , ?(OPI_Инструменты.ПолеКоллекцииСуществует(Фильтр, "type"), Фильтр["type"], "=") - , Фильтр["value"] - , ?(OPI_Инструменты.ПолеКоллекцииСуществует(Фильтр, "union"), Фильтр["union"], "AND") - , ?(OPI_Инструменты.ПолеКоллекцииСуществует(Фильтр, "raw"), Фильтр["raw"], Ложь)); - - КонецЦикла; - -КонецПроцедуры - -Процедура ЗаполнитьСортировку(Знач Схема, Знач Сортировка) - - Если Не ЗначениеЗаполнено(Сортировка) Тогда - Возврат; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Сортировка); - - Для Каждого Элемент Из Сортировка Цикл - - ДобавитьСортировку(Схема, Элемент.Ключ, Элемент.Значение); - - КонецЦикла; - -КонецПроцедуры - -Процедура ПроверитьОбязательныеПоляСхемы(Схема, Знач Поля) - - МассивОбязательныхПолей = СтрРазделить(Поля, ","); - МассивОтсутствующих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(Схема, МассивОбязательныхПолей); - - Если ЗначениеЗаполнено(МассивОтсутствующих) Тогда - ВызватьИсключение "Отсутствуют необходимые поля схемы: " + СтрСоединить(МассивОтсутствующих, ", "); - КонецЕсли; - -КонецПроцедуры - -Процедура ДобавитьКолонку(Схема, Знач Имя, Знач Тип) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип); - - Если Не Схема["type"] = "CREATE" Тогда - Возврат; - КонецЕсли; - - СоответствиеКолонки = Новый Соответствие; - СоответствиеКолонки.Вставить(Имя, Тип); - - Схема["columns"].Добавить(СоответствиеКолонки); - -КонецПроцедуры - -Процедура ДобавитьПоле(Схема, Знач Имя) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); - - Схема["set"].Добавить(Имя); - -КонецПроцедуры - -Процедура ДобавитьОтбор(Схема - , Знач Поле - , Знач Тип - , Знач Значение - , Знач Группировка - , Знач КакЕсть) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Группировка); - OPI_ПреобразованиеТипов.ПолучитьБулево(КакЕсть); - - Нумерация = Схема["nump"]; - Маркер = Схема["markp"]; - - ОсновнаяСтруктура = Новый Структура("field,type,union" - , Поле - , Тип - , Группировка); - - Если КакЕсть Тогда - - ОсновнаяСтруктура.Вставить("value", Строка(Значение)); - - Иначе - - Схема["values"].Добавить(Значение); - - ТекущийМаркер = Маркер; - - Если Нумерация Тогда - ПорядковыйНомер = Схема["values"].Количество(); - ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(ПорядковыйНомер); - КонецЕсли; - - ОсновнаяСтруктура.Вставить("value", ТекущийМаркер); - - КонецЕсли; - - Схема["filter"].Добавить(ОсновнаяСтруктура); - -КонецПроцедуры - -Процедура ДобавитьСортировку(Схема, Знач Поле, Знач Тип) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип); - - Схема["order"].Добавить(Новый Структура("field,type", Поле, Тип)); - -КонецПроцедуры - -Процедура УстановитьИмяТаблицы(Схема, Знач Имя) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); - - Схема.Вставить("table", Имя); - -КонецПроцедуры - -Процедура УстановитьИмяБазы(Схема, Знач Имя) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); - - Схема.Вставить("database", Имя); - -КонецПроцедуры - -Процедура УстановитьЛимит(Схема, Знач Количество) - - OPI_ПреобразованиеТипов.ПолучитьЧисло(Количество); - - Схема.Вставить("limit", Количество); - -КонецПроцедуры - -Процедура УстановитьПроизвольноеПоле(Схема, Знач ИмяПоля, Знач Значение, Знач ТипДанных) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяПоля); - - OPI_Инструменты.ДобавитьПоле(ИмяПоля, Значение, ТипДанных, Схема); - -КонецПроцедуры - -Процедура ЗаменитьСтандартныеОсобенности(Особенности) - - СтандартныеОсобенности = Новый Соответствие; - СтандартныеОсобенности.Вставить("НумерацияПараметров", Истина); // nump - СтандартныеОсобенности.Вставить("МаркерПараметров" , "?"); // markp - СтандартныеОсобенности.Вставить("СУБД" , ""); // dbms - - Для Каждого Особенность Из Особенности Цикл - СтандартныеОсобенности.Вставить(Особенность.Ключ, Особенность.Значение); - КонецЦикла; - - Особенности = СтандартныеОсобенности; - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - - -#Region Alternate - -Function CreateDatabase(Val Module, Val Base, Val Connection = "", Val Tls = Undefined) Export - Return СоздатьБазуДанных(Module, Base, Connection, Tls); -EndFunction - -Function DeleteDatabase(Val Module, Val Base, Val Connection = "", Val Tls = Undefined) Export - Return УдалитьБазуДанных(Module, Base, Connection, Tls); -EndFunction - -Function CreateTable(Val Module, Val Table, Val ColoumnsStruct, Val Connection = "", Val Tls = Undefined) Export - Return СоздатьТаблицу(Module, Table, ColoumnsStruct, Connection, Tls); -EndFunction - -Function AddRecords(Val Module, Val Table, Val DataArray, Val Transaction = True, Val Connection = "", Val Tls = Undefined) Export - Return ДобавитьЗаписи(Module, Table, DataArray, Transaction, Connection, Tls); -EndFunction - -Function GetRecords(Val Module, Val Table, Val Fields = "*", Val Filters = "", Val Sort = "", Val Count = "", Val Connection = "", Val Tls = Undefined) Export - Return ПолучитьЗаписи(Module, Table, Fields, Filters, Sort, Count, Connection, Tls); -EndFunction - -Function UpdateRecords(Val Module, Val Table, Val ValueStructure, Val Filters = "", Val Connection = "", Val Tls = Undefined) Export - Return ОбновитьЗаписи(Module, Table, ValueStructure, Filters, Connection, Tls); -EndFunction - -Function DeleteRecords(Val Module, Val Table, Val Filters = "", Val Connection = "", Val Tls = Undefined) Export - Return УдалитьЗаписи(Module, Table, Filters, Connection, Tls); -EndFunction - -Function DeleteTable(Val Module, Val Table, Val Connection = "", Val Tls = Undefined) Export - Return УдалитьТаблицу(Module, Table, Connection, Tls); -EndFunction - -Function ClearTable(Val Module, Val Table, Val Connection = "", Val Tls = Undefined) Export - Return ОчиститьТаблицу(Module, Table, Connection, Tls); -EndFunction - -Function GetTableStructure(Val Module, Val Table, Val Connection = "", Val Tls = Undefined) Export - Return ПолучитьСтруктуруТаблицы(Module, Table, Connection, Tls); -EndFunction - -Function GetRecordsFilterStrucutre(Val Clear = False) Export - Return ПолучитьСтруктуруФильтраЗаписей(Clear); -EndFunction - -Procedure AddColoumn(Scheme, Val Name, Val Type) Export - ДобавитьКолонку(Scheme, Name, Type); -EndProcedure - -Procedure AddField(Scheme, Val Name) Export - ДобавитьПоле(Scheme, Name); -EndProcedure - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off +// BSLLS:QueryParseError-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:NumberOfParams-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params +//@skip-check constructor-function-return-section + +// Раскомментировать, если выполняется OneScript +#Использовать "./internal" + +#Область СлужебныйПрограммныйИнтерфейс + +Функция СоздатьБазуДанных(Знач Модуль, Знач База, Знач Соединение = "", Знач Tls = Неопределено) Экспорт + + Схема = ПустаяСхемаSQL("CREATEDATABASE", Модуль); + + УстановитьИмяБазы(Схема, База); + + Запрос = СформироватьТекстSQL(Схема); + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция УдалитьБазуДанных(Знач Модуль, Знач База, Знач Соединение = "", Знач Tls = Неопределено) Экспорт + + Схема = ПустаяСхемаSQL("DROPDATABASE", Модуль); + + УстановитьИмяБазы(Схема, База); + + Запрос = СформироватьТекстSQL(Схема); + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция СоздатьТаблицу(Знач Модуль + , Знач Таблица + , Знач СтруктураКолонок + , Знач Соединение = "" + , Знач Tls = Неопределено) Экспорт + + ТекстОшибки = "Структура колонок не является валидной структурой ключ-значение"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(СтруктураКолонок, ТекстОшибки); + + Схема = ПустаяСхемаSQL("CREATE", Модуль); + + УстановитьИмяТаблицы(Схема, Таблица); + + Для Каждого Колонка Из СтруктураКолонок Цикл + ДобавитьКолонку(Схема, Колонка.Ключ, Колонка.Значение); + КонецЦикла; + + Запрос = СформироватьТекстSQL(Схема); + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция ДобавитьЗаписи(Знач Модуль + , Знач Таблица + , Знач МассивДанных + , Знач Транзакция = Истина + , Знач Соединение = "" + , Знач Tls = Неопределено) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьМассив(МассивДанных); + OPI_ПреобразованиеТипов.ПолучитьБулево(Транзакция); + + Соединение = ОткрытьСоединение(Модуль, Соединение, Tls); + ПроблемныйЭтап = ОбработатьНачалоЗаписи(Модуль, Транзакция, Соединение); + + Если ЗначениеЗаполнено(ПроблемныйЭтап) Тогда + Возврат ПроблемныйЭтап; + КонецЕсли; + + СтруктураОбработки = ОбработатьЗаписи(Модуль, Таблица, МассивДанных, Транзакция, Соединение); + СтруктураРезультата = ОбработатьКонецЗаписи(СтруктураОбработки, Модуль, Транзакция, Соединение); + + Возврат СтруктураРезультата; + +КонецФункции + +Функция ПолучитьЗаписи(Знач Модуль + , Знач Таблица + , Знач Поля = "*" + , Знач Фильтры = "" + , Знач Сортировка = "" + , Знач Количество = "" + , Знач Соединение = "" + , Знач Tls = Неопределено) Экспорт + + Схема = ПустаяСхемаSQL("SELECT", Модуль); + + УстановитьИмяТаблицы(Схема, Таблица); + УстановитьЛимит(Схема, Количество); + + ЗаполнитьПоля(Схема, Поля); + ЗаполнитьФильтры(Схема, Фильтры); + ЗаполнитьСортировку(Схема, Сортировка); + + Запрос = СформироватьТекстSQL(Схема); + + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, Схема["values"], , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция ОбновитьЗаписи(Знач Модуль + , Знач Таблица + , Знач СтруктураЗначений + , Знач Фильтры = "" + , Знач Соединение = "" + , Знач Tls = Неопределено) Экспорт + + Схема = ПустаяСхемаSQL("UPDATE", Модуль); + + МассивПолей = Новый Массив; + МассивЗначений = Новый Массив; + + УстановитьИмяТаблицы(Схема, Таблица); + РазделитьКоллекциюДанных(СтруктураЗначений, МассивПолей, МассивЗначений); + + Схема["values"] = МассивЗначений; + + Для Каждого Поле Из МассивПолей Цикл + ДобавитьПоле(Схема, Поле); + КонецЦикла; + + ЗаполнитьФильтры(Схема, Фильтры); + + Запрос = СформироватьТекстSQL(Схема); + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, Схема["values"], , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция УдалитьЗаписи(Знач Модуль + , Знач Таблица + , Знач Фильтры = "" + , Знач Соединение = "" + , Знач Tls = Неопределено) Экспорт + + Схема = ПустаяСхемаSQL("DELETE", Модуль); + + УстановитьИмяТаблицы(Схема, Таблица); + + ЗаполнитьФильтры(Схема, Фильтры); + + Запрос = СформироватьТекстSQL(Схема); + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, Схема["values"], , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция УдалитьТаблицу(Знач Модуль, Знач Таблица, Знач Соединение = "", Знач Tls = Неопределено) Экспорт + + Схема = ПустаяСхемаSQL("DROP", Модуль); + + УстановитьИмяТаблицы(Схема, Таблица); + + Запрос = СформироватьТекстSQL(Схема); + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция ОчиститьТаблицу(Знач Модуль, Знач Таблица, Знач Соединение = "", Знач Tls = Неопределено) Экспорт + + Схема = ПустаяСхемаSQL("TRUNCATE", Модуль); + + УстановитьИмяТаблицы(Схема, Таблица); + + Запрос = СформироватьТекстSQL(Схема); + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция ПолучитьСтруктуруТаблицы(Знач Модуль, Знач Таблица, Знач Соединение = "", Знач Tls = Неопределено) Экспорт + + Схема = ПустаяСхемаSQL("TABLESCHEMA", Модуль); + + УстановитьИмяТаблицы(Схема, Таблица); + + Запрос = СформироватьТекстSQL(Схема); + Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , Истина, Соединение, Tls); + + Возврат Результат; + +КонецФункции + +Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "<имя поля для отбора>"); + СтруктураФильтра.Вставить("type" , "<тип сравнения>"); + СтруктураФильтра.Вставить("value", "<значение для сравнения>"); + СтруктураФильтра.Вставить("union", "<связь со следующим условием: AND, OR и пр.>"); + СтруктураФильтра.Вставить("raw" , "<истина - значение будет вставлено текстом, как есть, ложь - через параметр>"); + + Если Пустая Тогда + СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра); + КонецЕсли; + + //@skip-check constructor-function-return-section + Возврат СтруктураФильтра; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Схемы + +Функция ПустаяСхемаSQL(Знач Действие, Знач Модуль = Неопределено) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Действие); + + Действие = вРег(Действие); + + Если Действие = "SELECT" Тогда + + Схема = ПустаяСхемаSelect(); + + ИначеЕсли Действие = "INSERT" Тогда + + Схема = ПустаяСхемаInsert(); + + ИначеЕсли Действие = "UPDATE" Тогда + + Схема = ПустаяСхемаUpdate(); + + ИначеЕсли Действие = "DELETE" Тогда + + Схема = ПустаяСхемаDelete(); + + ИначеЕсли Действие = "CREATE" Тогда + + Схема = ПустаяСхемаCreate(); + + ИначеЕсли Действие = "DROP" Тогда + + Схема = ПустаяСхемаDrop(); + + ИначеЕсли Действие = "TRUNCATE" Тогда + + Схема = ПустаяСхемаTruncate(); + + ИначеЕсли Действие = "CREATEDATABASE" Тогда + + Схема = ПустаяСхемаCreateDatabase(); + + ИначеЕсли Действие = "DROPDATABASE" Тогда + + Схема = ПустаяСхемаDropDatabase(); + + ИначеЕсли Действие = "TABLESCHEMA" Тогда + + Схема = ПустаяСхемаTableSchema(); + + Иначе + + Схема = Новый Структура; + + КонецЕсли; + + Особенности = Модуль.ПолучитьОсобенности(); + + ЗаменитьСтандартныеОсобенности(Особенности); + + Схема.Вставить("nump" , Особенности["НумерацияПараметров"]); + Схема.Вставить("markp", Особенности["МаркерПараметров"]); + Схема.Вставить("dbms" , Особенности["СУБД"]); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаSelect() + + Схема = Новый Структура("type", "SELECT"); + + Схема.Вставить("table" , ""); + Схема.Вставить("filter" , Новый Массив); + Схема.Вставить("order" , Новый Массив); + Схема.Вставить("limit" , 0); + Схема.Вставить("set" , Новый Массив); + Схема.Вставить("values" , Новый Массив); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаInsert() + + Схема = Новый Структура("type", "INSERT"); + + Схема.Вставить("table", ""); + Схема.Вставить("set" , Новый Массив); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаUpdate() + + Схема = Новый Структура("type", "UPDATE"); + + Схема.Вставить("table" , ""); + Схема.Вставить("set" , Новый Массив); + Схема.Вставить("filter" , Новый Массив); + Схема.Вставить("values" , Новый Массив); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаDelete() + + Схема = Новый Структура("type", "DELETE"); + + Схема.Вставить("table" , ""); + Схема.Вставить("filter", Новый Массив); + Схема.Вставить("values", Новый Массив); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаCreate() + + Схема = Новый Структура("type", "CREATE"); + + Схема.Вставить("table" , ""); + Схема.Вставить("columns", Новый Массив); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаDrop() + + Схема = Новый Структура("type", "DROP"); + + Схема.Вставить("table" , ""); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаTruncate() + + Схема = Новый Структура("type", "TRUNCATE"); + + Схема.Вставить("table" , ""); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаCreateDatabase() + + Схема = Новый Структура("type", "CREATEDATABASE"); + + Схема.Вставить("database" , ""); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаDropDatabase() + + Схема = Новый Структура("type", "DROPDATABASE"); + + Схема.Вставить("database" , ""); + + Возврат Схема; + +КонецФункции + +Функция ПустаяСхемаTableSchema() + + Схема = Новый Структура("type", "TABLESCHEMA"); + + Схема.Вставить("table" , ""); + Схема.Вставить("common", Истина); + + Возврат Схема; + +КонецФункции + +#КонецОбласти + +#Область Процессоры + +Функция СформироватьТекстSQL(Знач Схема) + + ТекстОшибки = "Переданное значение не является валидной схемой SQL запроса"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Схема, ТекстОшибки); + + ТипСхемы = ""; + + Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Схема, "type", ТипСхемы) Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + ТипСхемы = вРег(ТипСхемы); + + Если ТипСхемы = "SELECT" Тогда + + ТекстЗапроса = СформироватьТекстSelect(Схема); + + ИначеЕсли ТипСхемы = "INSERT" Тогда + + ТекстЗапроса = СформироватьТекстInsert(Схема); + + ИначеЕсли ТипСхемы = "UPDATE" Тогда + + ТекстЗапроса = СформироватьТекстUpdate(Схема); + + ИначеЕсли ТипСхемы = "DELETE" Тогда + + ТекстЗапроса = СформироватьТекстDelete(Схема); + + ИначеЕсли ТипСхемы = "CREATE" Тогда + + ТекстЗапроса = СформироватьТекстCreate(Схема); + + ИначеЕсли ТипСхемы = "DROP" Тогда + + ТекстЗапроса = СформироватьТекстDrop(Схема); + + ИначеЕсли ТипСхемы = "TRUNCATE" Тогда + + ТекстЗапроса = СформироватьТекстTruncate(Схема); + + ИначеЕсли ТипСхемы = "CREATEDATABASE" Тогда + + ТекстЗапроса = СформироватьТекстCreateDatabase(Схема); + + ИначеЕсли ТипСхемы = "DROPDATABASE" Тогда + + ТекстЗапроса = СформироватьТекстDropDatabase(Схема); + + ИначеЕсли ТипСхемы = "TABLESCHEMA" Тогда + + ТекстЗапроса = СформироватьТекстTableSchema(Схема); + + Иначе + + ТекстЗапроса = ""; + + КонецЕсли; + + Возврат ТекстЗапроса; + +КонецФункции + +Функция СформироватьТекстSelect(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "table,filter,order,limit,set"); + + Таблица = Схема["table"]; + Поля = Схема["set"]; + Фильтры = Схема["filter"]; + Сортировка = Схема["order"]; + Количество = Схема["limit"]; + + ШаблонSQL = "SELECT %1 FROM %2 + |%3;"; + + БлокНастроек = СформироватьТекстНастроекSelect(Фильтры, Сортировка, Количество); + + ТекстSQL = СтрШаблон(ШаблонSQL, СтрСоединить(Поля, ", "), Таблица, БлокНастроек); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстInsert(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "table,set"); + + Таблица = Схема["table"]; + Поля = Схема["set"]; + Нумерация = Схема["nump"]; + Маркер = Схема["markp"]; + + ШаблонSQL = "INSERT INTO %1 (%2) VALUES (%3);"; + + Параметры = Новый Массив; + + Для Н = 1 По Поля.Количество() Цикл + + ТекущийМаркер = Маркер; + + Если Нумерация Тогда + ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(Н); + КонецЕсли; + + Параметры.Добавить(ТекущийМаркер); + + КонецЦикла; + + ТекстSQL = СтрШаблон(ШаблонSQL + , Таблица + , СтрСоединить(Поля, ", ") + , СтрСоединить(Параметры, ", ")); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстUpdate(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "table,set,values"); + + Таблица = Схема["table"]; + Поля = Схема["set"]; + Фильтры = Схема["filter"]; + Нумерация = Схема["nump"]; + Маркер = Схема["markp"]; + + ШаблонSQL = "UPDATE %1 SET %2 %3;"; + + ТекстФильтра = СформироватьТекстФильтра(Фильтры); + + Для Н = 0 По Поля.ВГраница() Цикл + + ТекущийМаркер = Маркер; + + Если Нумерация Тогда + ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(Н + 1); + КонецЕсли; + + Поля[Н] = Поля[Н] + " = " + ТекущийМаркер; + + КонецЦикла; + + ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, СтрСоединить(Поля, "," + Символы.ПС), ТекстФильтра); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстDelete(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "table"); + + Таблица = Схема["table"]; + Фильтры = Схема["filter"]; + + ШаблонSQL = "DELETE FROM %1 %2;"; + + ТекстФильтра = СформироватьТекстФильтра(Фильтры); + + ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, ТекстФильтра); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстCreate(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "table,columns"); + + Таблица = Схема["table"]; + Колонки = Схема["columns"]; + + ШаблонSQL = "CREATE TABLE %1 ( + | %2 + | );"; + + ШаблонКолонки = "%1 %2"; + + МассивОписанийКолонок = Новый Массив; + + Для Каждого Колонка Из Колонки Цикл + Для Каждого Элемент Из Колонка Цикл + МассивОписанийКолонок.Добавить(СтрШаблон(ШаблонКолонки, Элемент.Ключ, Элемент.Значение)); + КонецЦикла; + КонецЦикла; + + ОписанияКолонок = СтрСоединить(МассивОписанийКолонок, "," + Символы.ПС); + + ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, ОписанияКолонок); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстDrop(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "table"); + + Таблица = Схема["table"]; + + ШаблонSQL = "DROP TABLE %1;"; + + ТекстSQL = СтрШаблон(ШаблонSQL, Таблица); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстTruncate(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "table"); + + Таблица = Схема["table"]; + + ШаблонSQL = "TRUNCATE TABLE %1;"; + + ТекстSQL = СтрШаблон(ШаблонSQL, Таблица); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстCreateDatabase(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "database"); + + База = Схема["database"]; + + ШаблонSQL = "CREATE DATABASE %1;"; + + ТекстSQL = СтрШаблон(ШаблонSQL, База); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстDropDatabase(Знач Схема) + + ПроверитьОбязательныеПоляСхемы(Схема, "database"); + + База = Схема["database"]; + + ШаблонSQL = "DROP DATABASE %1;"; + + ТекстSQL = СтрШаблон(ШаблонSQL, База); + + Возврат ТекстSQL; + +КонецФункции + +Функция СформироватьТекстTableSchema(Знач Схема) + + СУБД = Схема["dbms"]; + Таблица = Схема["table"]; + + Если СУБД = "sqlite" Тогда + + ШаблонSQL = "PRAGMA table_info('%1');"; + + Иначе + + ШаблонSQL = "SELECT column_name, data_type, is_nullable, column_default, character_maximum_length + |FROM information_schema.columns + |WHERE table_name = '%1';"; + + КонецЕсли; + + ТекстSQL = СтрШаблон(ШаблонSQL, Таблица); + + Возврат ТекстSQL; + +КонецФункции + +#КонецОбласти + +#Область Вспомогательные + +Функция ОткрытьСоединение(Знач Модуль, Знач Соединение, Знач Tls) + + Если Tls = Неопределено Тогда + Результат = Модуль.ОткрытьСоединение(Соединение); + Иначе + Результат = Модуль.ОткрытьСоединение(Соединение, Tls); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ВыполнитьЗапросSQL(Знач Модуль + , Знач ТекстЗапроса + , Знач Параметры = "" + , Знач ФорсироватьРезультат = Ложь + , Знач Соединение = "" + , Знач Tls = Неопределено) + + Если ЗначениеЗаполнено(Tls) Тогда + Результат = Модуль.ВыполнитьЗапросSQL(ТекстЗапроса, Параметры, ФорсироватьРезультат, Соединение, Tls); + Иначе + Результат = Модуль.ВыполнитьЗапросSQL(ТекстЗапроса, Параметры, ФорсироватьРезультат, Соединение); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ОбработатьЗаписи(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение) + + МассивОшибок = Новый Массив; + ОшибкаКоллекции = "Invalid data"; + Счетчик = 0; + СчетчикУспешных = 0; + + Для Каждого Запись Из МассивДанных Цикл + + Счетчик = Счетчик + 1; + + Попытка + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции); + Исключение + + МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции)); + + Если Транзакция Тогда + Прервать; + Иначе + Продолжить; + КонецЕсли; + + КонецПопытки; + + Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение); + + Если Результат["result"] Тогда + + СчетчикУспешных = СчетчикУспешных + 1; + + Иначе + + МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"])); + + КонецЕсли; + + КонецЦикла; + + Результат = Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, СчетчикУспешных); + Возврат Результат; + +КонецФункции + +Функция ОбработатьНачалоЗаписи(Знач Модуль, Знач Транзакция, Знач Соединение) + + Если Не OPI_Компоненты.ЭтоКомпонента(Соединение) Тогда + Возврат Соединение; + КонецЕсли; + + Если Транзакция Тогда + + Начало = Модуль.ВыполнитьЗапросSQL("BEGIN", , , Соединение); + + Если Не Начало["result"] Тогда + Возврат Начало; + КонецЕсли; + + КонецЕсли; + +КонецФункции + +Функция ОбработатьКонецЗаписи(Знач СтруктураОбработки, Знач Модуль, Знач Транзакция, Знач Соединение) + + СтруктураРезультата = Новый Структура; + + МассивОшибок = СтруктураОбработки["МассивОшибок"]; + СчетчикУспешных = СтруктураОбработки["СчетчикУспешных"]; + + Если Транзакция Тогда + + Если МассивОшибок.Количество() > 0 Тогда + + Откат = Модуль.ВыполнитьЗапросSQL("ROLLBACK;", , , Соединение); + + СчетчикУспешных = 0; + СтруктураРезультата.Вставить("rollback", Откат); + + Иначе + + Завершение = Модуль.ВыполнитьЗапросSQL("COMMIT;", , , Соединение); + СтруктураРезультата.Вставить("commit", Завершение); + + КонецЕсли; + + КонецЕсли; + + СтруктураРезультата.Вставить("result", МассивОшибок.Количество() = 0); + СтруктураРезультата.Вставить("rows" , СчетчикУспешных); + СтруктураРезультата.Вставить("errors", МассивОшибок); + + Возврат СтруктураРезультата; + +КонецФункции + +Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение) + + МассивПолей = Новый Массив; + МассивЗначений = Новый Массив; + + Схема = ПустаяСхемаSQL("INSERT", Модуль); + УстановитьИмяТаблицы(Схема, Таблица); + + РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений); + + Для Каждого Поле Из МассивПолей Цикл + ДобавитьПоле(Схема, Поле); + КонецЦикла; + + Запрос = СформироватьТекстSQL(Схема); + + Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение); + + Возврат Результат; + +КонецФункции + +Функция СформироватьТекстНастроекSelect(Знач Фильтры, Знач Сортировка, Знач Количество) + + ШаблонБлока = "%1 + |%2 + |%3"; + + ТекстФильтра = СформироватьТекстФильтра(Фильтры); + ТекстСортировки = СформироватьТекстСортировки(Сортировка); + ТекстКоличества = СформироватьТекстКоличества(Количество); + + ТекстБлока = СтрШаблон(ШаблонБлока, ТекстФильтра, ТекстСортировки, ТекстКоличества); + + Возврат ТекстБлока; + +КонецФункции + +Функция СформироватьТекстФильтра(Знач Фильтры) + + Если Не ЗначениеЗаполнено(Фильтры) Тогда + Возврат ""; + КонецЕсли; + + ТекстФильтров = "WHERE %1"; + + МассивФильтров = Новый Массив; + + Счетчик = 1; + Всего = Фильтры.Количество(); + + Для Каждого Фильтр Из Фильтры Цикл + + ТекущийТекст = "%1 %2 %3 %4"; + + Поле = Фильтр["field"]; + Тип = Фильтр["type"]; + Значение = Фильтр["value"]; + Соединение = Фильтр["union"]; + Соединение = ?(ЗначениеЗаполнено(Соединение), Соединение, "AND"); + + Если Счетчик = Всего Тогда + Соединение = ""; + КонецЕсли; + + ТекущийТекст = СтрШаблон(ТекущийТекст, Поле, Тип, Значение, Соединение); + МассивФильтров.Добавить(ТекущийТекст); + + Счетчик = Счетчик + 1; + + КонецЦикла; + + ТекстФильтров = СтрШаблон(ТекстФильтров, СтрСоединить(МассивФильтров, " ")); + + Возврат ТекстФильтров; + +КонецФункции + +Функция СформироватьТекстСортировки(Знач Сортировка) + + Если Не ЗначениеЗаполнено(Сортировка) Тогда + Возврат ""; + КонецЕсли; + + ТекстСортировки = "ORDER BY %1"; + + МассивСортировки = Новый Массив; + + Для Каждого Элемент Из Сортировка Цикл + + МассивСортировки.Добавить(Элемент["field"] + " " + Элемент["type"]); + + КонецЦикла; + + ТекстСортировки = СтрШаблон(ТекстСортировки, СтрСоединить(МассивСортировки, ", ")); + + Возврат ТекстСортировки; + +КонецФункции + +Функция СформироватьТекстКоличества(Знач Количество) + + Если Не ЗначениеЗаполнено(Количество) Тогда + Возврат ""; + КонецЕсли; + + ТекстКоличества = "LIMIT %1"; + ТекстКоличества = СтрШаблон(ТекстКоличества, OPI_Инструменты.ЧислоВСтроку(Количество)); + + Возврат ТекстКоличества; + +КонецФункции + +Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений) + + ТекстОшибки = "Некорректный набор данных для обновления"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ТекстОшибки); + + Для Каждого Элемент Из Запись Цикл + + МассивПолей.Добавить(Элемент.Ключ); + МассивЗначений.Добавить(Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура ЗаполнитьПоля(Схема, Знач Поля) + + Если Не ЗначениеЗаполнено(Поля) Тогда + Поля = "*"; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьМассив(Поля); + + Для Каждого Поле Из Поля Цикл + ДобавитьПоле(Схема, Поле); + КонецЦикла; + +КонецПроцедуры + +Процедура ЗаполнитьФильтры(Схема, Знач Фильтры) + + Если Не ЗначениеЗаполнено(Фильтры) Тогда + Возврат; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьМассив(Фильтры); + + Для Каждого Фильтр Из Фильтры Цикл + + ДобавитьОтбор(Схема + , Фильтр["field"] + , ?(OPI_Инструменты.ПолеКоллекцииСуществует(Фильтр, "type"), Фильтр["type"], "=") + , Фильтр["value"] + , ?(OPI_Инструменты.ПолеКоллекцииСуществует(Фильтр, "union"), Фильтр["union"], "AND") + , ?(OPI_Инструменты.ПолеКоллекцииСуществует(Фильтр, "raw"), Фильтр["raw"], Ложь)); + + КонецЦикла; + +КонецПроцедуры + +Процедура ЗаполнитьСортировку(Знач Схема, Знач Сортировка) + + Если Не ЗначениеЗаполнено(Сортировка) Тогда + Возврат; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Сортировка); + + Для Каждого Элемент Из Сортировка Цикл + + ДобавитьСортировку(Схема, Элемент.Ключ, Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + +Процедура ПроверитьОбязательныеПоляСхемы(Схема, Знач Поля) + + МассивОбязательныхПолей = СтрРазделить(Поля, ","); + МассивОтсутствующих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(Схема, МассивОбязательныхПолей); + + Если ЗначениеЗаполнено(МассивОтсутствующих) Тогда + ВызватьИсключение "Отсутствуют необходимые поля схемы: " + СтрСоединить(МассивОтсутствующих, ", "); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьКолонку(Схема, Знач Имя, Знач Тип) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип); + + Если Не Схема["type"] = "CREATE" Тогда + Возврат; + КонецЕсли; + + СоответствиеКолонки = Новый Соответствие; + СоответствиеКолонки.Вставить(Имя, Тип); + + Схема["columns"].Добавить(СоответствиеКолонки); + +КонецПроцедуры + +Процедура ДобавитьПоле(Схема, Знач Имя) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); + + Схема["set"].Добавить(Имя); + +КонецПроцедуры + +Процедура ДобавитьОтбор(Схема + , Знач Поле + , Знач Тип + , Знач Значение + , Знач Группировка + , Знач КакЕсть) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Группировка); + OPI_ПреобразованиеТипов.ПолучитьБулево(КакЕсть); + + Нумерация = Схема["nump"]; + Маркер = Схема["markp"]; + + ОсновнаяСтруктура = Новый Структура("field,type,union" + , Поле + , Тип + , Группировка); + + Если КакЕсть Тогда + + ОсновнаяСтруктура.Вставить("value", Строка(Значение)); + + Иначе + + Схема["values"].Добавить(Значение); + + ТекущийМаркер = Маркер; + + Если Нумерация Тогда + ПорядковыйНомер = Схема["values"].Количество(); + ТекущийМаркер = ТекущийМаркер + OPI_Инструменты.ЧислоВСтроку(ПорядковыйНомер); + КонецЕсли; + + ОсновнаяСтруктура.Вставить("value", ТекущийМаркер); + + КонецЕсли; + + Схема["filter"].Добавить(ОсновнаяСтруктура); + +КонецПроцедуры + +Процедура ДобавитьСортировку(Схема, Знач Поле, Знач Тип) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип); + + Схема["order"].Добавить(Новый Структура("field,type", Поле, Тип)); + +КонецПроцедуры + +Процедура УстановитьИмяТаблицы(Схема, Знач Имя) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); + + Схема.Вставить("table", Имя); + +КонецПроцедуры + +Процедура УстановитьИмяБазы(Схема, Знач Имя) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); + + Схема.Вставить("database", Имя); + +КонецПроцедуры + +Процедура УстановитьЛимит(Схема, Знач Количество) + + OPI_ПреобразованиеТипов.ПолучитьЧисло(Количество); + + Схема.Вставить("limit", Количество); + +КонецПроцедуры + +Процедура УстановитьПроизвольноеПоле(Схема, Знач ИмяПоля, Знач Значение, Знач ТипДанных) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяПоля); + + OPI_Инструменты.ДобавитьПоле(ИмяПоля, Значение, ТипДанных, Схема); + +КонецПроцедуры + +Процедура ЗаменитьСтандартныеОсобенности(Особенности) + + СтандартныеОсобенности = Новый Соответствие; + СтандартныеОсобенности.Вставить("НумерацияПараметров", Истина); // nump + СтандартныеОсобенности.Вставить("МаркерПараметров" , "?"); // markp + СтандартныеОсобенности.Вставить("СУБД" , ""); // dbms + + Для Каждого Особенность Из Особенности Цикл + СтандартныеОсобенности.Вставить(Особенность.Ключ, Особенность.Значение); + КонецЦикла; + + Особенности = СтандартныеОсобенности; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти diff --git a/src/ru/OInt/tools/Modules/OPI_Компоненты.os b/src/ru/OInt/tools/Modules/OPI_Компоненты.os index 89de4622e1..6f2077e0ca 100644 --- a/src/ru/OInt/tools/Modules/OPI_Компоненты.os +++ b/src/ru/OInt/tools/Modules/OPI_Компоненты.os @@ -1,216 +1,191 @@ -// OneScript: ./OInt/tools/Modules/OPI_Компоненты.os - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:UsingHardcodePath-off -// BSLLS:Typo-off -// BSLLS:DeprecatedMessage-off -// BSLLS:UsingServiceTag-off -// BSLLS:ExecuteExternalCodeInCommonModule-off -// BSLLS:DuplicateStringLiteral-off -// BSLLS:MagicNumber-off -// BSLLS:UsingHardcodeNetworkAddress-off - -//@skip-check use-non-recommended-method -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check undefined-function-or-procedure -//@skip-check wrong-string-literal-content - -// Раскомментировать, если выполняется OneScript -#Использовать "./internal" - -#Область СлужебныйПрограммныйИнтерфейс - -Функция ПолучитьКомпоненту(Знач ИмяКомпоненты, Знач Класс = "Main") Экспорт - - Компонента = Неопределено; - Ошибка = ""; - ИмяКомпоненты = "OPI_" + ИмяКомпоненты; - - Если Не ИнициализироватьВнешнююКомпоненту(ИмяКомпоненты, Класс, Компонента) Тогда - - Ошибка = Неопределено; - Компонента = ПодключитьКомпонентуНаСервере(ИмяКомпоненты, Класс, Ошибка); - - Если ЗначениеЗаполнено(Ошибка) Тогда - СформироватьИсключениеКомпоненты(); - КонецЕсли; - - КонецЕсли; - - Возврат Компонента; - -КонецФункции - -Функция ЭтоКомпонента(Знач Значение) Экспорт - - ТипЗначения = Строка(ТипЗнч(Значение)); - Возврат СтрНачинаетсяС(ТипЗначения, "AddIn."); - -КонецФункции - -Функция УстановитьTls(Знач Компонета, Знач Tls) Экспорт - - Результат = Новый Структура("result", Истина); - - Если ЗначениеЗаполнено(Tls) Тогда - - СообщениеОшибки = "Переданы некорректные настройки Tls!"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Tls, СообщениеОшибки); - - ИспользоватьTls = OPI_Инструменты.ПолучитьИли(Tls, "use_tls", Ложь); - ОтключитьВалидацию = OPI_Инструменты.ПолучитьИли(Tls, "accept_invalid_certs", Ложь); - ПутьКСертификату = OPI_Инструменты.ПолучитьИли(Tls, "ca_cert_path", ""); - - OPI_ПреобразованиеТипов.ПолучитьБулево(ИспользоватьTls); - OPI_ПреобразованиеТипов.ПолучитьБулево(ОтключитьВалидацию); - OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьКСертификату); - - Результат = Компонета.SetTLS(ИспользоватьTls, ОтключитьВалидацию, ПутьКСертификату); - Результат = OPI_Инструменты.JsonВСтруктуру(Результат); - - КонецЕсли; - - Возврат Результат; - -КонецФункции - -Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт - - СтруктураСертификата = Новый Структура; - OPI_Инструменты.ДобавитьПоле("use_tls" , Истина , "Булево", СтруктураСертификата); - OPI_Инструменты.ДобавитьПоле("accept_invalid_certs", ОтключитьПроверкуСертификатов, "Булево", СтруктураСертификата); - OPI_Инструменты.ДобавитьПоле("ca_cert_path" , ПутьКСертификату , "Строка", СтруктураСертификата); - - Возврат СтруктураСертификата; - -КонецФункции - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ИнициализироватьВнешнююКомпоненту(Знач ИмяКомпоненты, Знач Класс, Компонента) - - Попытка - Компонента = Новый("AddIn." + ИмяКомпоненты + "." + Класс); - Возврат Истина; - Исключение - Возврат Ложь; - КонецПопытки; - -КонецФункции - -Функция ПодключитьКомпонентуНаСервере(Знач ИмяКомпоненты, Знач Класс, Ошибка) - - Если OPI_Инструменты.ЭтоOneScript() Тогда - ИмяМакета = КаталогКомпонентOS() + ИмяКомпоненты + ".zip"; - Иначе - ИмяМакета = "ОбщийМакет." + ИмяКомпоненты; - КонецЕсли; - - Попытка - ПодключитьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ТипВнешнейКомпоненты.Native); - Компонента = Новый("AddIn." + ИмяКомпоненты + "." + Класс); - Ошибка = Неопределено; - Возврат Компонента; - Исключение - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - Возврат Неопределено; - КонецПопытки; - -КонецФункции - -Функция КаталогКомпонентOS() Экспорт - - КаталогПрограммы = СтрЗаменить(КаталогПрограммы(), "\", "/"); - - ЭлементыПути = СтрРазделить(КаталогПрограммы, "/"); - ЭлементыПути.Удалить(ЭлементыПути.ВГраница()); - - // BSLLS:UsingHardcodePath-off - - КаталогКомпонент = СтрСоединить(ЭлементыПути, "/") + "/lib/oint/addins/"; - - // BSLLS:UsingHardcodePath-on - - Возврат КаталогКомпонент; - -КонецФункции - -Процедура СформироватьИсключениеКомпоненты() - - Текст = "Не удалось инициализировать внешнюю компоненту. Возможно, она несовместима с вашей операционной системой."; - - Если Не OPI_Инструменты.ЭтоWindows() Тогда - - Текст = Текст - + Символы.ПС - + Символы.ПС - + "Важно: Для работы компоненты требуется GLIBC >=2.18" - + " и OpenSSL версии 3.x" - + Символы.ПС - + "Проверьте, что данные зависимости удоволетворены в вашей системе!"; - - КонецЕсли; - - Текст = Текст - + Символы.ПС - + Символы.ПС - + "Подробнее: https://openintegrations.dev/docs/Start/Component-requirements"; - - ВызватьИсключение Текст; - -КонецПроцедуры - -#КонецОбласти - - -#Region Alternate - -Function GetAddIn(Val AddInName, Val Class = "Main") Export - Return ПолучитьКомпоненту(AddInName, Class); -EndFunction - -Function IsAddIn(Val Value) Export - Return ЭтоКомпонента(Value); -EndFunction - -Function SetTls(Val AddIn, Val Tls) Export - Return УстановитьTls(AddIn, Tls); -EndFunction - -Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export - Return ПолучитьНастройкиTls(DisableCertVerification, CertFilepath); -EndFunction - -Function AddInsFolderOS() Export - Return КаталогКомпонентOS(); -EndFunction - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/tools/Modules/OPI_Компоненты.os + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingHardcodePath-off +// BSLLS:Typo-off +// BSLLS:DeprecatedMessage-off +// BSLLS:UsingServiceTag-off +// BSLLS:ExecuteExternalCodeInCommonModule-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:MagicNumber-off +// BSLLS:UsingHardcodeNetworkAddress-off + +//@skip-check use-non-recommended-method +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content + +// Раскомментировать, если выполняется OneScript +#Использовать "./internal" + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ПолучитьКомпоненту(Знач ИмяКомпоненты, Знач Класс = "Main") Экспорт + + Компонента = Неопределено; + Ошибка = ""; + ИмяКомпоненты = "OPI_" + ИмяКомпоненты; + + Если Не ИнициализироватьВнешнююКомпоненту(ИмяКомпоненты, Класс, Компонента) Тогда + + Ошибка = Неопределено; + Компонента = ПодключитьКомпонентуНаСервере(ИмяКомпоненты, Класс, Ошибка); + + Если ЗначениеЗаполнено(Ошибка) Тогда + СформироватьИсключениеКомпоненты(); + КонецЕсли; + + КонецЕсли; + + Возврат Компонента; + +КонецФункции + +Функция ЭтоКомпонента(Знач Значение) Экспорт + + ТипЗначения = Строка(ТипЗнч(Значение)); + Возврат СтрНачинаетсяС(ТипЗначения, "AddIn."); + +КонецФункции + +Функция УстановитьTls(Знач Компонета, Знач Tls) Экспорт + + Результат = Новый Структура("result", Истина); + + Если ЗначениеЗаполнено(Tls) Тогда + + СообщениеОшибки = "Переданы некорректные настройки Tls!"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Tls, СообщениеОшибки); + + ИспользоватьTls = OPI_Инструменты.ПолучитьИли(Tls, "use_tls", Ложь); + ОтключитьВалидацию = OPI_Инструменты.ПолучитьИли(Tls, "accept_invalid_certs", Ложь); + ПутьКСертификату = OPI_Инструменты.ПолучитьИли(Tls, "ca_cert_path", ""); + + OPI_ПреобразованиеТипов.ПолучитьБулево(ИспользоватьTls); + OPI_ПреобразованиеТипов.ПолучитьБулево(ОтключитьВалидацию); + OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьКСертификату); + + Результат = Компонета.SetTLS(ИспользоватьTls, ОтключитьВалидацию, ПутьКСертификату); + Результат = OPI_Инструменты.JsonВСтруктуру(Результат); + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт + + СтруктураСертификата = Новый Структура; + OPI_Инструменты.ДобавитьПоле("use_tls" , Истина , "Булево", СтруктураСертификата); + OPI_Инструменты.ДобавитьПоле("accept_invalid_certs", ОтключитьПроверкуСертификатов, "Булево", СтруктураСертификата); + OPI_Инструменты.ДобавитьПоле("ca_cert_path" , ПутьКСертификату , "Строка", СтруктураСертификата); + + Возврат СтруктураСертификата; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ИнициализироватьВнешнююКомпоненту(Знач ИмяКомпоненты, Знач Класс, Компонента) + + Попытка + Компонента = Новый("AddIn." + ИмяКомпоненты + "." + Класс); + Возврат Истина; + Исключение + Возврат Ложь; + КонецПопытки; + +КонецФункции + +Функция ПодключитьКомпонентуНаСервере(Знач ИмяКомпоненты, Знач Класс, Ошибка) + + Если OPI_Инструменты.ЭтоOneScript() Тогда + ИмяМакета = КаталогКомпонентOS() + ИмяКомпоненты + ".zip"; + Иначе + ИмяМакета = "ОбщийМакет." + ИмяКомпоненты; + КонецЕсли; + + Попытка + ПодключитьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ТипВнешнейКомпоненты.Native); + Компонента = Новый("AddIn." + ИмяКомпоненты + "." + Класс); + Ошибка = Неопределено; + Возврат Компонента; + Исключение + Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Возврат Неопределено; + КонецПопытки; + +КонецФункции + +Функция КаталогКомпонентOS() Экспорт + + КаталогПрограммы = СтрЗаменить(КаталогПрограммы(), "\", "/"); + + ЭлементыПути = СтрРазделить(КаталогПрограммы, "/"); + ЭлементыПути.Удалить(ЭлементыПути.ВГраница()); + + // BSLLS:UsingHardcodePath-off + + КаталогКомпонент = СтрСоединить(ЭлементыПути, "/") + "/lib/oint/addins/"; + + // BSLLS:UsingHardcodePath-on + + Возврат КаталогКомпонент; + +КонецФункции + +Процедура СформироватьИсключениеКомпоненты() + + Текст = "Не удалось инициализировать внешнюю компоненту. Возможно, она несовместима с вашей операционной системой."; + + Если Не OPI_Инструменты.ЭтоWindows() Тогда + + Текст = Текст + + Символы.ПС + + Символы.ПС + + "Важно: Для работы компоненты требуется GLIBC >=2.18" + + " и OpenSSL версии 3.x" + + Символы.ПС + + "Проверьте, что данные зависимости удоволетворены в вашей системе!"; + + КонецЕсли; + + Текст = Текст + + Символы.ПС + + Символы.ПС + + "Подробнее: https://openintegrations.dev/docs/Start/Component-requirements"; + + ВызватьИсключение Текст; + +КонецПроцедуры + +#КонецОбласти diff --git a/src/ru/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os b/src/ru/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os index d7ef098970..6074f6306b 100644 --- a/src/ru/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os +++ b/src/ru/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os +// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os // MIT License @@ -78,6 +78,7 @@ Разделы.Вставить("GreenAPI" , 5); Разделы.Вставить("Ollama" , 5); Разделы.Вставить("HTTPКлиент" , 5); + Разделы.Вставить("OpenAI" , 5); Возврат Разделы; @@ -117,6 +118,7 @@ Разделы.Вставить("GreenAPI" , СтандартныеЗависимости); Разделы.Вставить("Ollama" , СтандартныеЗависимости); Разделы.Вставить("HTTPКлиент" , СтандартныеЗависимости); + Разделы.Вставить("OpenAI" , СтандартныеЗависимости); Возврат Разделы; @@ -152,6 +154,7 @@ MySQL = "MySQL"; Ollama = "Ollama"; Http = "HTTPКлиент"; + OpenAI = "OpenAI"; ТаблицаТестов = Новый ТаблицаЗначений; ТаблицаТестов.Колонки.Добавить("Метод"); @@ -310,6 +313,7 @@ НовыйТест(ТаблицаТестов, "HTTP_Авторизация" , "Авторизация" , Http); НовыйТест(ТаблицаТестов, "HTTP_ОбработкаЗапроса" , "Обработка запроса" , Http); НовыйТест(ТаблицаТестов, "HTTP_ПолучениеОтвета" , "Получение ответа" , Http); + НовыйТест(ТаблицаТестов, "OAI_ОбработкаЗапросов" , "Обработка запросов" , OpenAI); Возврат ТаблицаТестов; @@ -2432,6 +2436,22 @@ КонецПроцедуры +Процедура Проверка_OpenAIОтвет(Знач Результат) Экспорт + + ОжидаетЧто(Результат["id"]).Заполнено(); + ОжидаетЧто(Результат["object"]).Равно("chat.completion"); + ОжидаетЧто(Результат["choices"]).ИмеетТип("Массив").Заполнено(); + +КонецПроцедуры + +Процедура Проверка_OpenAIПредставления(Знач Результат) Экспорт + + ОжидаетЧто(Результат["model"]).Заполнено(); + ОжидаетЧто(Результат["object"]).Равно("list"); + ОжидаетЧто(Результат["data"]).ИмеетТип("Массив").Заполнено(); + +КонецПроцедуры + #КонецОбласти #КонецОбласти @@ -2468,9 +2488,9 @@ КонецФункции Функция ПолучитьОбщийМодуль(Знач Имя) - + Модуль = Вычислить(Имя); - + Возврат Модуль; КонецФункции @@ -2825,1080 +2845,3 @@ КонецПроцедуры #КонецОбласти - - -#Region Alternate - -Function GetTestingSectionMapping() Export - Return ПолучитьСоответствиеРазделовТестирования(); -EndFunction - -Function GetTestingSectionMappingGA() Export - Return ПолучитьСоответствиеРазделовТестированияGA(); -EndFunction - -Function GetTestTable() Export - Return ПолучитьТаблицуТестов(); -EndFunction - -Function ExpectsThat(Value) Export - Return ОжидаетЧто(Value); -EndFunction - -Function FormYAXTests() Export - Return СформироватьТестыЯкс(); -EndFunction - -Function FormAssertsTests() Export - Return СформироватьТестыАссертс(); -EndFunction - -Function FormYAXTestsCLI() Export - Return СформироватьТестыЯксCLI(); -EndFunction - -Function FormAssertsTestsCLI() Export - Return СформироватьТестыАссертсCLI(); -EndFunction - -Function GetParameter(Parameter) Export - Return ПолучитьПараметр(Parameter); -EndFunction - -Function GetBinary(Parameter) Export - Return ПолучитьДвоичные(Parameter); -EndFunction - -Function GetFilePath(Val Path) Export - Return ПолучитьФайлПути(Path); -EndFunction - -Procedure ParameterToCollection(Parameter, Collection) Export - ПараметрВКоллекцию(Parameter, Collection); -EndProcedure - -Procedure BinaryToCollection(Parameter, Collection) Export - ДвоичныеВКоллекцию(Parameter, Collection); -EndProcedure - -Procedure WriteParameter(Parameter, Value) Export - ЗаписатьПараметр(Parameter, Value); -EndProcedure - -Procedure WriteLog(Val Result, Val Method, Val Library = "") Export - ЗаписатьЛог(Result, Method, Library); -EndProcedure - -Procedure WriteLogFile(Val Data, Val Method, Val Library, Val Forced = False) Export - ЗаписатьФайлЛога(Data, Method, Library, Forced); -EndProcedure - -Procedure WriteLogCLI(Val Result, Val Method, Val Library = "") Export - ЗаписатьЛогCLI(Result, Method, Library); -EndProcedure - -Function ExecuteTestCLI(Val Library, Val Method, Val Options, Val Record = True) Export - Return ВыполнитьТестCLI(Library, Method, Options, Record); -EndFunction - -Procedure Check_Empty(Val Result) Export - Проверка_Пусто(Result); -EndProcedure - -Procedure Check_String(Val Result, Val ComparisonObject = "") Export - Проверка_Строка(Result, ComparisonObject); -EndProcedure - -Procedure Check_BinaryData(Val Result, Val Size = Undefined) Export - Проверка_ДвоичныеДанные(Result, Size); -EndProcedure - -Procedure Check_Array(Val Result, Val Count = Undefined) Export - Проверка_Массив(Result, Count); -EndProcedure - -Procedure Check_Map(Val Result, Val Filling = True) Export - Проверка_Соответствие(Result, Filling); -EndProcedure - -Procedure Check_Structure(Val Result) Export - Проверка_Структура(Result); -EndProcedure - -Procedure Check_Filled(Val Result) Export - Проверка_Заполнено(Result); -EndProcedure - -Procedure Check_True(Val Result) Export - Проверка_Истина(Result); -EndProcedure - -Procedure Check_TelegramTrue(Val Result) Export - Проверка_ТелеграмИстина(Result); -EndProcedure - -Procedure Check_TelegramBotInformation(Val Result) Export - Проверка_ТелеграмИнформацияБота(Result); -EndProcedure - -Procedure Check_TelegramArray(Result) Export - Проверка_ТелеграмМассив(Result); -EndProcedure - -Procedure Check_TelegramWebhookSetup(Val Result) Export - Проверка_ТелеграмУстановкаВебхук(Result); -EndProcedure - -Procedure Check_TelegramWebhookDeletion(Val Result) Export - Проверка_ТелеграмУдалениеВебхук(Result); -EndProcedure - -Procedure Check_TelegramMessage(Val Result, Val Text) Export - Проверка_ТелеграмСообщение(Result, Text); -EndProcedure - -Procedure Check_TelegramImage(Val Result, Val Text) Export - Проверка_ТелеграмКартинка(Result, Text); -EndProcedure - -Procedure Check_TelegramVideo(Val Result, Val Text) Export - Проверка_ТелеграмВидео(Result, Text); -EndProcedure - -Procedure Check_TelegramAudio(Val Result, Val Text) Export - Проверка_ТелеграмАудио(Result, Text); -EndProcedure - -Procedure Check_TelegramDocument(Val Result, Val Text) Export - Проверка_ТелеграмДокумент(Result, Text); -EndProcedure - -Procedure Check_TelegramGif(Val Result, Val Text) Export - Проверка_ТелеграмГифка(Result, Text); -EndProcedure - -Procedure Check_TelegramMediaGroup(Val Result) Export - Проверка_ТелеграмМедиагруппа(Result); -EndProcedure - -Procedure Check_TelegramLocation(Val Result) Export - Проверка_ТелеграмМестоположение(Result); -EndProcedure - -Procedure Check_TelegramContact(Val Result, Val Name) Export - Проверка_ТелеграмКонтакт(Result, Name); -EndProcedure - -Procedure Check_TelegramPoll(Val Result, Val Question) Export - Проверка_ТелеграмОпрос(Result, Question); -EndProcedure - -Procedure Check_TelegramForward(Val Result, Val MessageID) Export - Проверка_ТелеграмПереслать(Result, MessageID); -EndProcedure - -Procedure Check_TelegramBan(Val Result) Export - Проверка_ТелеграмБан(Result); -EndProcedure - -Procedure Check_TelegramInvitation(Val Result, Val Title, Val UnixExpiration) Export - Проверка_ТелеграмПриглашение(Result, Title, UnixExpiration); -EndProcedure - -Procedure Check_TelegramNumber(Val Result) Export - Проверка_ТелеграмЧисло(Result); -EndProcedure - -Procedure Check_TelegramOk(Val Result) Export - Проверка_ТелеграмОк(Result); -EndProcedure - -Procedure Check_TelegramCreateTopic(Val Result, Val Name, Icon) Export - Проверка_ТелеграмСозданиеТемы(Result, Name, Icon); -EndProcedure - -Procedure Check_TelegramMessageKeyboard(Val Result, Val Keyboard) Export - Проверка_ТелеграмКлавиатураСообщения(Result, Keyboard); -EndProcedure - -Procedure Check_VKPost(Val Result) Export - Проверка_ВКПост(Result); -EndProcedure - -Procedure Check_VKTrue(Val Result) Export - Проверка_ВКИстина(Result); -EndProcedure - -Procedure Check_VKElement(Val Result) Export - Проверка_ВКЭлементы(Result); -EndProcedure - -Procedure Check_VKAlbum(Val Result, Val Description) Export - Проверка_ВКАльбом(Result, Description); -EndProcedure - -Procedure Check_VKAlbumPicture(Val Result, Val ImageDescription, Val AlbumID = "") Export - Проверка_ВККартинкаАльбома(Result, ImageDescription, AlbumID); -EndProcedure - -Procedure Check_VKStory(Val Result) Export - Проверка_ВКИстория(Result); -EndProcedure - -Procedure Check_VKDiscussion(Val Result) Export - Проверка_ВКОбсуждение(Result); -EndProcedure - -Procedure Check_VKLike(Val Result) Export - Проверка_ВКЛайк(Result); -EndProcedure - -Procedure Check_VKRepost(Val Result) Export - Проверка_ВКРепост(Result); -EndProcedure - -Procedure Check_VKComment(Val Result) Export - Проверка_ВККомментарий(Result); -EndProcedure - -Procedure Check_VKStatistic(Val Result) Export - Проверка_ВКСтатистика(Result); -EndProcedure - -Procedure Check_VKPostsStatistic(Val Result) Export - Проверка_ВКСтатистикаПостов(Result); -EndProcedure - -Procedure Check_VKNumber(Val Result) Export - Проверка_ВКЧисло(Result); -EndProcedure - -Procedure Check_VKCollection(Val Result) Export - Проверка_ВКПодборка(Result); -EndProcedure - -Procedure Check_VKProduct(Val Result) Export - Проверка_ВКТовар(Result); -EndProcedure - -Procedure Check_VKProp(Val Result) Export - Проверка_ВКСвойство(Result); -EndProcedure - -Procedure Check_VKPropVariant(Val Result) Export - Проверка_ВКВариантСвойства(Result); -EndProcedure - -Procedure Check_VKProductData(Val Result) Export - Проверка_ВКИНформацияОТоварах(Result); -EndProcedure - -Procedure Check_VKProductsGroup(Val Result) Export - Проверка_ВКГруппаТоваров(Result); -EndProcedure - -Procedure Check_VKVideo(Val Result) Export - Проверка_ВКВидео(Result); -EndProcedure - -Procedure Check_VKCategories(Val Result) Export - Проверка_ВККатегории(Result); -EndProcedure - -Procedure Check_YaDiskDrive(Val Result) Export - Проверка_ЯДискДиск(Result); -EndProcedure - -Procedure Check_YaDiskFolder(Val Result, Val Path) Export - Проверка_ЯДискКаталог(Result, Path); -EndProcedure - -Procedure Check_YaDiskPath(Val Result, Val Path = "", Val Public = Undefined) Export - Проверка_ЯДискПуть(Result, Path, Public); -EndProcedure - -Procedure Check_YaDiskLink(Val Result) Export - Проверка_ЯДискСсылка(Result); -EndProcedure - -Procedure Check_YaDiskProc(Val Result) Export - Проверка_ЯДискПроцедура(Result); -EndProcedure - -Procedure Check_YaDiskFilesList(Val Result, Val Count, Val Indent) Export - Проверка_ЯДискСписокФайлов(Result, Count, Indent); -EndProcedure - -Procedure Check_GKObject(Val Result, Val Name, Val Description) Export - Проверка_ГКОбъект(Result, Name, Description); -EndProcedure - -Procedure Check_TwitterText(Val Result, Val Text) Export - Проверка_ТвиттерТекст(Result, Text); -EndProcedure - -Procedure Check_ViberOk(Val Result) Export - Проверка_ВайберОк(Result); -EndProcedure - -Procedure Check_ViberUser(Val Result) Export - Проверка_ВайберПользователь(Result); -EndProcedure - -Procedure Check_ViberOnline(Val Result) Export - Проверка_ВайберОнлайн(Result); -EndProcedure - -Procedure Check_ViberMessage(Val Result) Export - Проверка_ВайберСообщение(Result); -EndProcedure - -Procedure Check_GoogleToken(Val Result) Export - Проверка_ГуглТокен(Result); -EndProcedure - -Procedure Check_GoogleCalendar(Val Result, Val Name) Export - Проверка_ГуглКалендарь(Result, Name); -EndProcedure - -Procedure Check_GoogleCalendarColors(Val Result, Val PrimaryColor, Val SecondaryColor) Export - Проверка_ГуглЦветКалендаря(Result, PrimaryColor, SecondaryColor); -EndProcedure - -Procedure Check_GoogleCatalogs(Val Result) Export - Проверка_ГуглКаталоги(Result); -EndProcedure - -Procedure Check_GoogleCatalog(Val Result) Export - Проверка_ГуглКаталог(Result); -EndProcedure - -Procedure Check_GoogleObject(Val Result, Val Description) Export - Проверка_ГуглОбъект(Result, Description); -EndProcedure - -Procedure Check_GoogleComment(Val Result, Val Comment) Export - Проверка_ГуглКомментарий(Result, Comment); -EndProcedure - -Procedure Check_GoogleSpreadsheet(Val Result, Val Name, Val SheetArray = "") Export - Проверка_ГуглКнига(Result, Name, SheetArray); -EndProcedure - -Procedure Check_GoogleSheet(Val Result, Val Spreadsheet = "") Export - Проверка_ГуглЛист(Result, Spreadsheet); -EndProcedure - -Procedure Check_GoogleSpreadsheetElement(Val Result, Val Spreadsheet) Export - Проверка_ГуглЭлементКниги(Result, Spreadsheet); -EndProcedure - -Procedure Check_GoogleSheetTitle(Val Result, Val Name) Export - Проверка_ГуглИмяТаблицы(Result, Name); -EndProcedure - -Procedure Check_GoogleCellUpdating(Val Result, Val Count) Export - Проверка_ГуглОбновлениеЯчеек(Result, Count); -EndProcedure - -Procedure Check_GoogleCellValues(Val Result, Val Count) Export - Проверка_ГуглЗначенияЯчеек(Result, Count); -EndProcedure - -Procedure Check_GoogleCellCleanning(Val Result, Val Count) Export - Проверка_ГуглОчисткаЯчеек(Result, Count); -EndProcedure - -Procedure Check_TwitterToken(Val Result) Export - Проверка_ТвиттерТокен(Result); -EndProcedure - -Procedure Check_NotionObject(Val Result, Val View = "page") Export - Проверка_НоушнОбъект(Result, View); -EndProcedure - -Procedure Check_NotionBasePage(Val Result, Val Base) Export - Проверка_НоушнСтраницаБазы(Result, Base); -EndProcedure - -Procedure Check_SlackOk(Val Result) Export - Проверка_СлакОк(Result); -EndProcedure - -Procedure Check_SlackBot(Val Result) Export - Проверка_СлакБот(Result); -EndProcedure - -Procedure Check_SlackUsers(Val Result) Export - Проверка_СлакПользователи(Result); -EndProcedure - -Procedure Check_SlackWorkspaces(Val Result) Export - Проверка_СлакОбласти(Result); -EndProcedure - -Procedure Check_SlackMessage(Val Result, Val Text, Val Channel) Export - Проверка_СлакСообщение(Result, Text, Channel); -EndProcedure - -Procedure Check_SlackMessages(Val Result) Export - Проверка_СлакСообщения(Result); -EndProcedure - -Procedure Check_SlackMessageLink(Val Result, Val Channel) Export - Проверка_СлакСсылкаСообщения(Result, Channel); -EndProcedure - -Procedure Check_SlackSheduledMessage(Val Result, Val Channel) Export - Проверка_СлакОтложенноеСообщение(Result, Channel); -EndProcedure - -Procedure Check_SlackEphemeral(Val Result) Export - Проверка_СлакЭфемерное(Result); -EndProcedure - -Procedure Check_SlackSheduled(Val Result) Export - Проверка_СлакОтложенные(Result); -EndProcedure - -Procedure Check_SlackChannel(Val Result, Val Name = "") Export - Проверка_СлакКанал(Result, Name); -EndProcedure - -Procedure Check_SlackChannelTopic(Val Result, Val Topic) Export - Проверка_СлакТемаКанала(Result, Topic); -EndProcedure - -Procedure Check_SlackChannelHistory(Val Result) Export - Проверка_СлакИсторияКанала(Result); -EndProcedure - -Procedure Check_SlackChannelUsers(Val Result) Export - Проверка_СлакПользователиКанала(Result); -EndProcedure - -Procedure Check_SlackChannelsList(Val Result) Export - Проверка_СлакСписокКаналов(Result); -EndProcedure - -Procedure Check_SlackDialog(Val Result) Export - Проверка_СлакДиалог(Result); -EndProcedure - -Procedure Check_SlackFilesList(Val Result) Export - Проверка_СлакСписокФайлов(Result); -EndProcedure - -Procedure Check_SlackFile(Val Result, Val FileName) Export - Проверка_СлакФайл(Result, FileName); -EndProcedure - -Procedure Check_SlackExternalFile(Val Result, Val Title) Export - Проверка_СлакВнешнийФайл(Result, Title); -EndProcedure - -Procedure Check_ATBaseWithTable(Val Result, Val TableName) Export - Проверка_АТБазаСТаблицей(Result, TableName); -EndProcedure - -Procedure Check_ATTablesList(Val Result) Export - Проверка_АТСписокТаблиц(Result); -EndProcedure - -Procedure Check_ATBasesList(Val Result) Export - Проверка_АТСписокБаз(Result); -EndProcedure - -Procedure Check_ATTable(Val Result, Val Name, Val Description) Export - Проверка_АТТаблица(Result, Name, Description); -EndProcedure - -Procedure Check_ATField(Val Result, Val Name) Export - Проверка_АТПоле(Result, Name); -EndProcedure - -Procedure Check_ATRecords(Val Result) Export - Проверка_АТЗаписи(Result); -EndProcedure - -Procedure Check_ATRecordNumberAndString(Val Result, Val Numeric, Val StringType) Export - Проверка_АТЗаписьНомерСтрока(Result, Numeric, StringType); -EndProcedure - -Procedure Check_ATRecord(Val Result, Val Record) Export - Проверка_АТЗапись(Result, Record); -EndProcedure - -Procedure Check_ATText(Val Result, Val Text) Export - Проверка_АТТекст(Result, Text); -EndProcedure - -Procedure Check_ATComments(Val Result) Export - Проверка_АТКомментарии(Result); -EndProcedure - -Procedure Check_ATCommentDeleting(Val Result, Val Comment) Export - Проверка_АТУдалениеКомментария(Result, Comment); -EndProcedure - -Procedure Check_DropboxFile(Val Result, Val Path) Export - Проверка_ДропБоксФайл(Result, Path); -EndProcedure - -Procedure Check_DropboxMetadata(Val Result, Val Path) Export - Проверка_ДропБоксМетаданные(Result, Path); -EndProcedure - -Procedure Check_DropboxArray(Val Result, Val Count = Undefined) Export - Проверка_ДропБоксМассив(Result, Count); -EndProcedure - -Procedure Check_DropboxWork(Val Result) Export - Проверка_ДропБоксРабота(Result); -EndProcedure - -Procedure Check_DropboxStatus(Val Result) Export - Проверка_ДропБоксСтатус(Result); -EndProcedure - -Procedure Check_DropboxTags(Val Result, Val Count) Export - Проверка_ДропБоксТеги(Result, Count); -EndProcedure - -Procedure Check_DropboxAccount(Val Result) Export - Проверка_ДропбоксАккаунт(Result); -EndProcedure - -Procedure Check_DropboxSpace(Val Result) Export - Проверка_ДропбоксПространство(Result); -EndProcedure - -Procedure Check_DropboxMember(Val Result, Val Email, Val ViewOnly) Export - Проверка_ДропбоксУчастник(Result, Email, ViewOnly); -EndProcedure - -Procedure Check_DropboxPublicFolder(Val Result) Export - Проверка_ДропбоксПубличнаяПапка(Result); -EndProcedure - -Procedure Check_BitrixTime(Val Result) Export - Проверка_БитриксВремя(Result); -EndProcedure - -Procedure Check_BitrixAuth(Val Result) Export - Проверка_БитриксАвторизация(Result); -EndProcedure - -Procedure Check_BitrixNumber(Val Result) Export - Проверка_БитриксЧисло(Result); -EndProcedure - -Procedure Check_BitrixTrue(Val Result) Export - Проверка_БитриксИстина(Result); -EndProcedure - -Procedure Check_BitrixBool(Val Result) Export - Проверка_БитриксБулево(Result); -EndProcedure - -Procedure Check_BitrixString(Val Result, Val Value = "") Export - Проверка_БитриксСтрока(Result, Value); -EndProcedure - -Procedure Check_BitrixArray(Val Result) Export - Проверка_БитриксМассив(Result); -EndProcedure - -Procedure Check_BitrixMap(Val Result) Export - Проверка_БитриксСоответствие(Result); -EndProcedure - -Procedure Check_BitrixList(Val Result) Export - Проверка_БитриксСписок(Result); -EndProcedure - -Procedure Check_BitrixObjectsArray(Val Result) Export - Проверка_БитриксМассивОбъектов(Result); -EndProcedure - -Procedure Check_BitrixFields(Val Result) Export - Проверка_БитриксПоля(Result); -EndProcedure - -Procedure Check_BitrixTask(Val Result) Export - Проверка_БитриксЗадача(Result); -EndProcedure - -Procedure Check_BitrixTasksList(Val Result) Export - Проверка_БитриксСписокЗадач(Result); -EndProcedure - -Procedure Check_BitrixStorage(Val Result) Export - Проверка_БитриксХранилища(Result); -EndProcedure - -Procedure Check_BitrixObject(Val Result) Export - Проверка_БитриксОбъект(Result); -EndProcedure - -Procedure Check_BitrixLead(Val Result) Export - Проверка_БитриксЛид(Result); -EndProcedure - -Procedure Check_BitrixDeal(Val Result) Export - Проверка_БитриксСделка(Result); -EndProcedure - -Procedure Check_BitrixAttachment(Val Result) Export - Проверка_БитриксВложение(Result); -EndProcedure - -Procedure Check_BitrixAvailableActions(Val Result, Val Count) Export - Проверка_БитриксДоступныеДействия(Result, Count); -EndProcedure - -Procedure Check_BitrixComment(Val Result) Export - Проверка_БитриксКомментарий(Result); -EndProcedure - -Procedure Check_BitrixResult(Val Result) Export - Проверка_БитриксРезультат(Result); -EndProcedure - -Procedure Check_BitrixUndefined(Val Result) Export - Проверка_БитриксНеопределено(Result); -EndProcedure - -Procedure Check_BitrixCommentsList(Val Result) Export - Проверка_БитриксСписокКомментариев(Result); -EndProcedure - -Procedure Check_BitrixResultsList(Val Result) Export - Проверка_БитриксСписокРезультатов(Result); -EndProcedure - -Procedure Check_BitrixMessages(Val Result) Export - Проверка_БитриксСообщения(Result); -EndProcedure - -Procedure Check_BitrixDialog(Val Result) Export - Проверка_БитриксДиалог(Result); -EndProcedure - -Procedure Check_BitrixMessage(Val Result) Export - Проверка_БитриксСообщение(Result); -EndProcedure - -Procedure Check_BitrixFileMessage(Val Result) Export - Проверка_БитриксФайлСообщение(Result); -EndProcedure - -Procedure Check_BitrixTimekeeping(Val Result) Export - Проверка_БитриксУчетВремени(Result); -EndProcedure - -Procedure Check_BitrixTimekeepingSettings(Val Result) Export - Проверка_БитриксНастройкиУчетаВремени(Result); -EndProcedure - -Procedure Check_VKTUser(Val Result) Export - Проверка_ВКТПользователь(Result); -EndProcedure - -Procedure Check_VKTEvents(Val Result) Export - Проверка_ВКТСобытия(Result); -EndProcedure - -Procedure Check_VKTMessage(Val Result) Export - Проверка_ВКТСообщение(Result); -EndProcedure - -Procedure Check_VKTTrue(Val Result) Export - Проверка_ВКТИстина(Result); -EndProcedure - -Procedure Check_VKTFile(Val Result) Export - Проверка_ВКТФайл(Result); -EndProcedure - -Procedure Check_VKTList(Val Result, Val FieldName) Export - Проверка_ВКТСписок(Result, FieldName); -EndProcedure - -Procedure Check_VKTChat(Val Result) Export - Проверка_ВКТЧат(Result); -EndProcedure - -Procedure Check_VKTPending(Val Result) Export - Проверка_ВКТЗаявки(Result); -EndProcedure - -Procedure Check_OzonCategoryList(Val Result) Export - Проверка_ОзонСписокКатегорий(Result); -EndProcedure - -Procedure Check_OzonAttributesList(Val Result) Export - Проверка_ОзонСписокХарактеристик(Result); -EndProcedure - -Procedure Check_OzonListOfAttributesValues(Val Result) Export - Проверка_ОзонСписокЗначенийХарактеристики(Result); -EndProcedure - -Procedure Check_OzonUploadTask(Val Result, Val Embedded = True) Export - Проверка_ОзонЗаданиеЗагрузки(Result, Embedded); -EndProcedure - -Procedure Check_OzonNewProducts(Val Result) Export - Проверка_ОзонНовыеТовары(Result); -EndProcedure - -Procedure Check_OzonObjectsArray(Val Result) Export - Проверка_ОзонМассивОбъектов(Result); -EndProcedure - -Procedure Check_OzonObjects(Val Result) Export - Проверка_ОзонОбъекты(Result); -EndProcedure - -Procedure Check_OzonUpdatedArray(Val Result) Export - Проверка_ОзонМассивОбновлено(Result); -EndProcedure - -Procedure Check_OzonRatingArray(Val Result) Export - Проверка_ОзонМассивРейтингов(Result); -EndProcedure - -Procedure Check_OzonProduct(Val Result) Export - Проверка_ОзонТовар(Result); -EndProcedure - -Procedure Check_OzonProducts(Val Result) Export - Проверка_ОзонТовары(Result); -EndProcedure - -Procedure Check_OzonLimits(Val Result) Export - Проверка_ОзонЛимиты(Result); -EndProcedure - -Procedure Check_OzonPictures(Val Result) Export - Проверка_ОзонКартинки(Result); -EndProcedure - -Procedure Check_OzonNoErrors(Val Result) Export - Проверка_ОзонБезОшибок(Result); -EndProcedure - -Procedure Check_OzonTrue(Val Result) Export - Проверка_ОзонИстина(Result); -EndProcedure - -Procedure Check_OzonArray(Val Result, Val Field = "result") Export - Проверка_ОзонМассив(Result, Field); -EndProcedure - -Procedure Check_OzonProductsDeleting(Val Result) Export - Проверка_ОзонУдалениеТовара(Result); -EndProcedure - -Procedure Check_OzonNewCodes(Val Result) Export - Проверка_ОзонДобавлениеКодов(Result); -EndProcedure - -Procedure Check_OzonSubscribers(Val Result) Export - Проверка_ОзонПодписчики(Result); -EndProcedure - -Procedure Check_OzonSKU(Val Result) Export - Проверка_ОзонSKU(Result); -EndProcedure - -Procedure Check_OzonDraft(Val Result) Export - Проверка_ОзонЧерновик(Result); -EndProcedure - -Procedure Check_OzonSearch(Val Result) Export - Проверка_ОзонПоиск(Result); -EndProcedure - -Procedure Check_OzonClusters(Val Result) Export - Проверка_ОзонКластеры(Result); -EndProcedure - -Procedure Check_OzonReadyDraft(Val Result) Export - Проверка_ОзонГотовыйЧерновик(Result); -EndProcedure - -Procedure Check_OzonTimeslots(Val Result) Export - Проверка_ОзонТаймслоты(Result); -EndProcedure - -Procedure Check_NCSuccess(Val Result) Export - Проверка_НСУспех(Result); -EndProcedure - -Procedure Check_NCFolderFiles(Val Result, Val Count) Export - Проверка_НСФайлыКаталога(Result, Count); -EndProcedure - -Procedure Check_NCSync(Val Result) Export - Проверка_НССинхронизация(Result); -EndProcedure - -Procedure Check_CdekToken(Val Result) Export - Проверка_СдэкТокен(Result); -EndProcedure - -Procedure Check_CdekOrder(Val Result) Export - Проверка_СдэкЗаказ(Result); -EndProcedure - -Procedure Check_CdekReceipt(Val Result) Export - Проверка_СдэкКвитанция(Result); -EndProcedure - -Procedure Check_CdekOrderNumber(Val Result) Export - Проверка_СдэкДанныеЗаказа(Result); -EndProcedure - -Procedure Check_CdekkDeliveryIntervals(Val Result) Export - Проверка_СдэкИнтервалыДоставки(Result); -EndProcedure - -Procedure Check_CdekPassport(Val Result) Export - Проверка_СдэкПаспорт(Result); -EndProcedure - -Procedure Check_CdekCheck(Val Result) Export - Проверка_СдэкЧек(Result); -EndProcedure - -Procedure Check_YaMarketMarkets(Val Result) Export - Проверка_ЯМаркетМагазины(Result); -EndProcedure - -Procedure Check_YaMarketCampaign(Val Result) Export - Проверка_ЯМаркетМагазин(Result); -EndProcedure - -Procedure Check_YaMarketBusiness(Val Result) Export - Проверка_ЯМаркетКабинет(Result); -EndProcedure - -Procedure Check_YaMarketOk(Val Result) Export - Проверка_ЯМаркетОк(Result); -EndProcedure - -Procedure Check_MetrikaTags(Val Result) Export - Проверка_МетрикаМетки(Result); -EndProcedure - -Procedure Check_MetrikaTag(Val Result, Val Name = "") Export - Проверка_МетрикаМетка(Result, Name); -EndProcedure - -Procedure Check_MetrikaSuccess(Val Result) Export - Проверка_МетрикаУспех(Result); -EndProcedure - -Procedure Check_MetrikaCounter(Val Result) Export - Проверка_МетрикаСчетчик(Result); -EndProcedure - -Procedure Check_MetrikaCounters(Val Result) Export - Проверка_МетрикаСчетчики(Result); -EndProcedure - -Procedure Check_MetrikaActions(Val Result) Export - Проверка_МетрикаОперации(Result); -EndProcedure - -Procedure Check_S3Success(Val Result) Export - Проверка_S3Успех(Result); -EndProcedure - -Procedure Check_S3NotFound(Val Result) Export - Проверка_S3НеНайдено(Result); -EndProcedure - -Procedure Check_S3NotImplemented(Val Result) Export - Проверка_S3НеПоддерживается(Result); -EndProcedure - -Procedure Check_AddIn(Val Result, Val TypeName) Export - Проверка_Компонента(Result, TypeName); -EndProcedure - -Procedure Check_Equality(Val Value1, Val Value2) Export - Проверка_Равенство(Value1, Value2); -EndProcedure - -Procedure Check_Inequality(Val Value1, Val Value2) Export - Проверка_Неравенство(Value1, Value2); -EndProcedure - -Procedure Check_SQLiteSuccess(Val Result) Export - Проверка_SQLiteУспех(Result); -EndProcedure - -Procedure Check_SQLiteError(Val Result) Export - Проверка_SQLiteОшибка(Result); -EndProcedure - -Procedure Check_SQLiteRows(Val Result, Val Count) Export - Проверка_SQLiteСтроки(Result, Count); -EndProcedure - -Procedure Check_SQLiteFieldsValues(Val Result, Val ValueStructure) Export - Проверка_SQLiteЗначенияПолей(Result, ValueStructure); -EndProcedure - -Procedure Check_SQLiteNoRows(Val Result) Export - Проверка_SQLiteНетЗаписей(Result); -EndProcedure - -Procedure Check_ResultTrue(Val Result) Export - Проверка_РезультатИстина(Result); -EndProcedure - -Procedure Check_ResultFalse(Val Result) Export - Проверка_РезультатЛожь(Result); -EndProcedure - -Procedure Check_GreenInstance(Val Result) Export - Проверка_ГринИнстанс(Result); -EndProcedure - -Procedure Check_GreenSettingsSaving(Val Result) Export - Проверка_ГринСохранениеНастроек(Result); -EndProcedure - -Procedure Check_GreenAuth(Val Result) Export - Проверка_ГринАвторизован(Result); -EndProcedure - -Procedure Check_GreenReboot(Val Result) Export - Проверка_ГринПерезапуск(Result); -EndProcedure - -Procedure Check_GreenUnlogin(Val Result) Export - Проверка_ГринРазлогин(Result); -EndProcedure - -Procedure Check_GreenAva(Val Result) Export - Проверка_ГринАватар(Result); -EndProcedure - -Procedure Check_GreenGroupPicture(Val Result) Export - Проверка_ГринКартинкаГруппы(Result); -EndProcedure - -Procedure Check_GreenCode(Val Result) Export - Проверка_ГринКод(Result); -EndProcedure - -Procedure Check_GreenProfile(Val Result) Export - Проверка_ГринПрофиль(Result); -EndProcedure - -Procedure Check_GreenNewGroup(Val Result) Export - Проверка_ГринНоваяГруппа(Result); -EndProcedure - -Procedure Check_GreenLeaveGroup(Val Result) Export - Проверка_ГринВыходГруппы(Result); -EndProcedure - -Procedure Check_GreenGroup(Val Result) Export - Проверка_ГринГруппа(Result); -EndProcedure - -Procedure Check_GreenGroupName(Val Result) Export - Проверка_ГринИмяГруппы(Result); -EndProcedure - -Procedure Check_GreenAddMember(Val Result) Export - Проверка_ГринДобавлениеПользователя(Result); -EndProcedure - -Procedure Check_GreenExcludeMember(Val Result) Export - Проверка_ГринИсключениеПользователя(Result); -EndProcedure - -Procedure Check_GreenAdminSet(Val Result) Export - Проверка_ГринНазначениеАдминистратора(Result); -EndProcedure - -Procedure Check_GreenAdminRemove(Val Result) Export - Проверка_ГринОтзывАдминистратора(Result); -EndProcedure - -Procedure Check_GreenMessage(Val Result) Export - Проверка_ГринСообщение(Result); -EndProcedure - -Procedure Check_GreenMessages(Val Result) Export - Проверка_ГринСообщения(Result); -EndProcedure - -Procedure Check_GreenFile(Val Result) Export - Проверка_ГринФайл(Result); -EndProcedure - -Procedure Check_GreenNotification(Val Result) Export - Проверка_ГринУведомление(Result); -EndProcedure - -Procedure Check_GreenInputFile(Val Result) Export - Проверка_ГринВходнойФайл(Result); -EndProcedure - -Procedure Check_GreenReading(Val Result) Export - Проверка_ГринПрочтение(Result); -EndProcedure - -Procedure Check_GreenQueueClearing(Val Result) Export - Проверка_ГринОчисткаОчереди(Result); -EndProcedure - -Procedure Check_OllamaResponse(Val Result, Val Completed = True) Export - Проверка_OllamaОтвет(Result, Completed); -EndProcedure - -Procedure Check_OllamaEmbeddings(Val Result) Export - Проверка_OllamaПривязки(Result); -EndProcedure - -Procedure Check_OllamaLoadUnload(Val Result, Val Unload) Export - Проверка_OllamaЗагрузкаВыгрузка(Result, Unload); -EndProcedure - -Procedure Check_OllamaMessage(Val Result, Val Completed = True) Export - Проверка_OllamaСообщение(Result, Completed); -EndProcedure - -Procedure Check_OllamaSuccess(Val Result) Export - Проверка_OllamaУспех(Result); -EndProcedure - -Procedure Check_OllamaModels(Val Result) Export - Проверка_OllamaМодели(Result); -EndProcedure - -Procedure Check_OllamaModelInfo(Val Result) Export - Проверка_OllamaИнформацияМодели(Result); -EndProcedure - -Procedure Check_OllamaVersion(Val Result) Export - Проверка_OllamaВерсия(Result); -EndProcedure - -Procedure Check_OllamaCode(Val Result) Export - Проверка_OllamaКод(Result); -EndProcedure - -Procedure Check_OllamaError(Val Result) Export - Проверка_OllamaОшибка(Result); -EndProcedure - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/tools/Modules/OPI_ПреобразованиеТипов.os b/src/ru/OInt/tools/Modules/OPI_ПреобразованиеТипов.os index 2cecb504d4..6b7ff458a6 100644 --- a/src/ru/OInt/tools/Modules/OPI_ПреобразованиеТипов.os +++ b/src/ru/OInt/tools/Modules/OPI_ПреобразованиеТипов.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os +// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os // MIT License @@ -434,48 +434,3 @@ КонецПроцедуры #КонецОбласти - - -#Region Alternate - -Procedure GetBinaryData(Value, Val Force = False, Val TryB64 = True) Export - ПолучитьДвоичныеДанные(Value, Force, TryB64); -EndProcedure - -Procedure GetBinaryOrStream(Value) Export - ПолучитьДвоичныеИлиПоток(Value); -EndProcedure - -Procedure GetCollection(Value) Export - ПолучитьКоллекцию(Value); -EndProcedure - -Procedure GetKeyValueCollection(Value, Val ErrorText = "The specified value is not a valid collection!") Export - ПолучитьКоллекциюКлючИЗначение(Value, ErrorText); -EndProcedure - -Procedure GetArray(Value) Export - ПолучитьМассив(Value); -EndProcedure - -Procedure GetBoolean(Value) Export - ПолучитьБулево(Value); -EndProcedure - -Procedure GetLine(Value, Val FromSource = False) Export - ПолучитьСтроку(Value, FromSource); -EndProcedure - -Procedure GetDate(Value) Export - ПолучитьДату(Value); -EndProcedure - -Procedure GetNumber(Value) Export - ПолучитьЧисло(Value); -EndProcedure - -Procedure GetFileOnDisk(Value, Val Extension = "tmp") Export - ПолучитьФайлНаДиске(Value, Extension); -EndProcedure - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os b/src/ru/OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os index 4677b11545..12b2f9eebb 100644 --- a/src/ru/OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os +++ b/src/ru/OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os @@ -1,2968 +1,2815 @@ -// OneScript: ./OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os -// Lib: HTTP-клиент -// CLI: none - -// MIT License - -// Copyright (c) 2023-2025 Anton Tsitavets - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -// https://github.com/Bayselonarrend/OpenIntegrations - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:UsingServiceTag-off -// BSLLS:LineLength-off -// BSLLS:ExportVariables-off -// BSLLS:OneStatementPerLine-off - -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check wrong-string-literal-content -//@skip-check method-too-many-params -//@skip-check constructor-function-return-section -//@skip-check doc-comment-collection-item-type -//@skip-check object-module-export-variable - -// #Если Не Клиент Тогда - -#Область ОписаниеПеременных - -// Обработка - -Перем Инициализирован; // Признак, что обязательная функция Инициализировать() была вызвана -Перем Ошибка Экспорт; // Признак ошибки выполнения для пропуска оставшихся действий в цепочке -Перем Лог; // Массив сообщений о действиях внутри обработки - -// Запрос - -Перем Запрос; // Объект HTTPЗапрос -Перем Соединение; // Объект HTTPСоединение -Перем Настройки; // Структура дополнительных настроек - -Перем ЗапросURL; // URL запроса -Перем ЗапросСервер; // Сервер из URL запроса -Перем ЗапросПорт; // Порт из URL запроса или по умолчанию -Перем ЗапросАдрес; // Путь из URL запроса -Перем ЗапросАдресПолный; // Путь с параметрами и секцией из URL запроса -Перем ЗапросСекция; // Секция в URL, если присутствует -Перем ЗапросЗащищенное; // Признак использования HTTPS -Перем ЗапросДомен; // Домен из URL запроса - -Перем ЗапросМетод; // Используемый метод HTTP -Перем ЗапросПараметрыURL; // Структура параметров URL -Перем ЗапросТело; // Данные тела запроса -Перем ЗапросТелоКоллекция; // Данные тела в виде коллекции, если возможно -Перем ЗапросЗаголовки; // Соответствие заголовков запроса -Перем ЗапросПользователь; // Пользователь для базовой авторизации -Перем ЗапросПароль; // Пароль для базовой авторизации -Перем ЗапросТаймаут; // Таймаут запроса -Перем ЗапросПрокси; // Настройки прокси запроса -Перем ЗапросВыходнойФайл; // Путь к файлу для сохранения результата запроса -Перем ЗапросФайлТела; // Путь к файлу с телом запроса -Перем ЗапросПотокТела; // Поток тела запроса -Перем ЗапросЗаписьДанных; // Запись данных тела запроса -Перем ЗапросТипДанных; // MIME тип для Content-Type -Перем ЗапросТипУстановленВручную; // Признак отключения автоматического определения Content-Type -Перем ФайлТелаВременный; // Признак удаления файла тела, если он был создан автоматически - -// Авторизация - -Перем AuthВид; // Вид авторизации -Перем AuthДанные; // Структура учетных данных - -// Ответ - -Перем Ответ; // Объект HTTPОтвет -Перем ОтветКодСостояния; // Код состояния ответа -Перем ОтветТело; // Данные тела ответа -Перем ОтветЗаголовки; // Соответствие заголовков ответа - -// Multipart - -Перем Multipart; // Признак установки тела в формате Multipart -Перем Boundary; // Boundary для разделения частей тела -Перем РазделительСтрок; // Разделитель строк тела - -#КонецОбласти - -#Область ПрограммныйИнтерфейс - -#Область Инициализация - -// Инициализировать !NOCLI -// Инициализирует новый пустой запрос -// -// Примечание: -// Функция обязательная для вызова первой при создании нового объекта обработки -// URL может быть установлен позднее при помощи функции `УстановитьURL` -// -// Параметры: -// URL - Строка - URL адрес для запроса - url -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция Инициализировать(Знач URL = "") Экспорт - - Лог = Новый Массив; - - ДобавитьЛог("Инициализировать: установка стандартных значений"); - - Инициализирован = Истина; - Ошибка = Ложь; - - ЗапросПараметрыURL = Новый Структура; - ЗапросТело = Неопределено; - ЗапросТелоКоллекция = Новый Структура; - ЗапросЗаголовки = Новый Соответствие; - ЗапросТаймаут = 3600; - - ЗапросТипУстановленВручную = Ложь; - - ФайлТелаВременный = Ложь; - - ОтветКодСостояния = 0; - ОтветТело = Неопределено; - ОтветЗаголовки = Новый Соответствие; - - Multipart = Ложь; - - УстановитьСтандартныеНастройки(); - УстановитьURL(URL); - - Возврат ЭтотОбъект; - -КонецФункции - -// Установить URL !NOCLI -// Устанавливает новый URL запроса -// -// Параметры: -// URL - Строка - URL запроса - url -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьURL(Знач URL) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - Если ЗначениеЗаполнено(URL) Тогда - - ДобавитьЛог("УстановитьURL: установка значения"); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); - OPI_Инструменты.ВернутьУправляющиеПоследовательности(URL); - - Если ПолучитьНастройку("КодировкаURL") Тогда - КодироватьURLВURL(URL); - КонецЕсли; - - ЗапросURL = URL; - - Иначе - - ДобавитьЛог("УстановитьURL: URL пуст - пропуск"); - - КонецЕсли; - - Возврат РазбитьURL(); - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Установить параметры URL !NOCLI -// Устанавливает коллекцию параметров URL -// -// Параметры: -// Значение - Произвольный - Стрктура или соответствие параметров URL - params -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьПараметрыURL(Знач Значение) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Структура; КонецЕсли; - - ДобавитьЛог("УстановитьПараметрыURL: установка параметров"); - - ТекстОшибки = "УстановитьПараметрыURL: переданные параметры не являются коллекцией ключ/значение"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки); - - ЗапросПараметрыURL = OPI_Инструменты.КопироватьКоллекцию(Значение); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Установить файл ответа !NOCLI -// Устанавливает путь к файлу для сохранения результата запроса -// -// Параметры: -// Значение - Строка - Путь к файлу - filepath -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьФайлОтвета(Знач Значение) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - Если Не ЗначениеЗаполнено(Значение) Тогда - ЗапросВыходнойФайл = Неопределено; - ДобавитьЛог("УстановитьФайлОтвета: файл ответа не указан - пропуск"); - Возврат ЭтотОбъект; - КонецЕсли; - - ДобавитьЛог("УстановитьФайлОтвета: установка значения"); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); - ЗапросВыходнойФайл = Значение; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Установить тип данных !NOCLI -// Устанавливает Content-Type запроса -// -// Примечание: -// Если тип данных не установлен вручную, то он будет подобран в процессе установки тела запроса -// -// Параметры: -// Значение - Строка - Значение заголовка ContentType - type -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьТипДанных(Знач Значение) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ДобавитьЛог("УстановитьТипДанных: установка значения"); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); - - ЗапросТипДанных = Значение; - ЗапросТипУстановленВручную = Истина; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Установить прокси !NOCLI -// Устанавливает настройки прокси для соединения -// -// Параметры: -// Настройки - ИнтернетПрокси - Настройки прокси - proxy -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьПрокси(Знач Настройки) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - Если ТипЗнч(Настройки) = Тип("ИнтернетПрокси") Тогда - - ДобавитьЛог("УстановитьПрокси: установка значения"); - ЗапросПрокси = Настройки; - - Иначе - Ошибка("УстановитьПрокси: переданные настройки не являются объектом типа ИнтернетПрокси"); - КонецЕсли; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Получить лог !NOCLI -// Получает лог выполнения -// -// Параметры: -// Строкой - Булево - Возврат лога в виде строки - string -// -// Возвращаемое значение: -// Строка, Массив - Лог выполнения -Функция ПолучитьЛог(Знач Строкой = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Строкой); - - Если Не ЗначениеЗаполнено(Лог) Тогда - Возврат ?(Строкой, "" , Новый Массив); - Иначе - Возврат ?(Строкой, СтрСоединить(Лог, Символы.ПС), Лог); - КонецЕсли; - -КонецФункции - -#КонецОбласти - -#Область Настройки - -// Использовать кодировку !NOCLI -// Устанавливает кодировку тела запроса -// -// Примечание: -// По умолчанию используется UTF-8 -// -// Параметры: -// Кодировка - Строка - Название кодировки - enc -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ИспользоватьКодировку(Знач Кодировка) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ДобавитьЛог("ИспользоватьКодировку: установка значения"); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка); - - УстановитьНастройку("КодировкаТелаЗапроса", Кодировка); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Использовать сжатие gzip !NOCLI -// Включает или отключает заголовок получения данных от сервера в сжатом виде -// -// Примечание: -// По умлчанию ответ от сервера запрашивается со сжатием gzip -// -// Параметры: -// Флаг - Булево - Признак использования gzip - gzip -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ИспользоватьСжатиеGzip(Знач Флаг) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ДобавитьЛог("ИспользоватьСжатиеGzip: установка значения"); - OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг); - - УстановитьНастройку("gzip", Флаг); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Использовать поля тела в OAuth !NOCLI -// Включает или исключает поля тела при расчете подписи OAuth в зависимости от требований сервера -// -// Примечание: -// По умолчанию данные тела используются при расчете подписи, если оно было установлено при помощи функции `УстановитьFormТело` -// -// Параметры: -// Флаг - Булево - Признак использования полей тела в расчете подписи OAuth - use -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ИспользоватьПоляТелаВOAuth(Знач Флаг) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ДобавитьЛог("ИспользоватьПоляТелаВOAuth: установка значения"); - OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг); - - УстановитьНастройку("ПоляТелаВOAuth", Флаг); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Использовать кодирование URL !NOCLI -// Включает или отключает стандартное кодирование спец. символов в URL -// -// Примечание: -// По умолчанию кодирование URL включено -// -// Параметры: -// Флаг - Булево - Признак использования кодирования URL - enc -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ИспользоватьКодированиеURL(Знач Флаг) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ДобавитьЛог("ИспользоватьКодированиеURL: установка значения"); - OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг); - - УстановитьНастройку("КодировкаURL", Флаг); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Разделять массивы в URL !NOCLI -// Определяет представление массивов в параметрах URL: как цельный JSON массив или отдельные параметры для каждого элемента -// -// Примечание: -// По умолчанию массивы интерпретируются как единый параметр с JSON массивом в значении -// По умолчанию квадратные скобки к ключам параметров при разделении массива не устанавливаются -// -// Параметры: -// Флаг - Булево - Признак деления массива на отдельные параметры URL - split -// КвадратныеСкобки - Булево - Добавлять к ключам пустые скобки в стиле PHP (key[]=value), если Флаг = Истина - php -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция РазделятьМассивыВURL(Знач Флаг, Знач КвадратныеСкобки = Неопределено) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ДобавитьЛог("РазделятьМассивыВURL: установка значения"); - OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг); - - Если КвадратныеСкобки <> Неопределено Тогда - - ДобавитьЛог("РазделятьМассивыВURL: установка настройки использованя квадратных скобок"); - OPI_ПреобразованиеТипов.ПолучитьБулево(КвадратныеСкобки); - - УстановитьНастройку("КвадратныеСкобкиМассивов", КвадратныеСкобки); - - КонецЕсли; - - УстановитьНастройку("ОтдельныеЭлементыМассивов", Флаг); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -#КонецОбласти - -#Область УстановкаТела - -// Установить двоичное тело !NOCLI -// Устанавливает тело запрос из двоичных данных, файла или строки (с преобразованием в двоичные данные) -// -// Параметры: -// Данные - Строка, ДвоичныеДанные - Файл, строка или данные тела запроса - data -// УстанавливатьПустое - Булево - Устанавливает тело даже при передаче пустых данных - empty -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьДвоичноеТело(Знач Данные, Знач УстанавливатьПустое = Ложь) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ОтменитьЗаписьMultipart(); - - Если Не ЗапросТипУстановленВручную Тогда - ЗапросТипДанных = "application/octet-stream"; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь); - OPI_ПреобразованиеТипов.ПолучитьБулево(УстанавливатьПустое); - - Данные = ?(Данные = Неопределено, ПолучитьДвоичныеДанныеИзСтроки(""), Данные); - ЕстьДанные = Данные.Размер() > 0; - - Если ЕстьДанные Или УстанавливатьПустое Тогда - - Если Не ЕстьДанные Тогда - Данные = ПолучитьДвоичныеДанныеИзСтроки(""); - КонецЕсли; - - ДобавитьЛог("УстановитьДвоичноеТело: начало установки тела"); - УстановитьТелоИзДвоичныхДанных(Данные); - ДобавитьЛог(СтрШаблон("УстановитьДвоичноеТело: тело установлено, размер %1", ЗапросТело.Размер())); - - Иначе - ДобавитьЛог("УстановитьДвоичноеТело: передано пустое тело - пропуск"); - КонецЕсли; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Установить строковое тело !NOCLI -// Устанавливает тело запроса из строки -// -// Параметры: -// Данные - Строка - Данные тела запроса - data -// ЗаписатьBOM - Булево - Истина > BOM будет добавлен - bom -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьСтроковоеТело(Знач Данные, Знач ЗаписатьBOM = Ложь) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ОтменитьЗаписьMultipart(); - - Если Не ЗначениеЗаполнено(Данные) Тогда - ДобавитьЛог("УстановитьСтроковоеТело: нет данных - пропуск"); - Возврат ЭтотОбъект; - КонецЕсли; - - Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса"); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка); - - Если Не ЗапросТипУстановленВручную Тогда - ЗапросТипДанных = СтрШаблон("text/plain; charset=%1", Кодировка); - КонецЕсли; - - ДобавитьЛог("УстановитьСтроковоеТело: начало установки тела"); - УстановитьТелоИзСтроки(Данные, ЗаписатьBOM); - ДобавитьЛог(СтрШаблон("УстановитьСтроковоеТело: тело установлено, размер %1", ЗапросТело.Размер())); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Установить JSON тело !NOCLI -// Устанавливает тело в формате JSON из подходящей коллекции или строки -// -// Параметры: -// Данные - Произвольный - Строка или коллекция для преобразования в JSON - data -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьJsonТело(Знач Данные) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ОтменитьЗаписьMultipart(); - - Если Не ЗначениеЗаполнено(Данные) Тогда - ДобавитьЛог("УстановитьJsonТело: нет данных - пропуск"); - Возврат ЭтотОбъект; - КонецЕсли; - - Если Не ЗапросТипУстановленВручную Тогда - ЗапросТипДанных = "application/json; charset=utf-8"; - КонецЕсли; - - ДобавитьЛог("УстановитьJsonТело: начало установки тела"); - - Если Не ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные); - - Если Не ТипЗнч(Данные) = Тип("Массив") Тогда - ЗапросТелоКоллекция = OPI_Инструменты.КопироватьКоллекцию(Данные); - КонецЕсли; - - КонецЕсли; - - УстановитьТелоИзСтроки(Данные); - - ДобавитьЛог(СтрШаблон("УстановитьJsonТело: тело установлено, размер %1", ЗапросТело.Размер())); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Установить Form тело !NOCLI -// Устанавливает тело в формате x-www-form-urlencoded из коллекции значений полей -// -// Параметры: -// Данные - Произвольный - Коллекция КлючЗначение с параметрами формы - data -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Установить form тело -Функция УстановитьFormТело(Знач Данные) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ОтменитьЗаписьMultipart(); - - Если Не ЗначениеЗаполнено(Данные) Тогда - ДобавитьЛог("УстановитьFormТело: нет данных - пропуск"); - Возврат ЭтотОбъект; - КонецЕсли; - - Если Не ЗапросТипУстановленВручную Тогда - ЗапросТипДанных = "application/x-www-form-urlencoded; charset=utf-8"; - КонецЕсли; - - ДобавитьЛог("УстановитьFormТело: начало установки тела"); - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные); - - Если ТипЗнч(Данные) = Тип("Массив") Тогда - - Данные = Данные[0]; - - Если Не ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда - OPI_ПреобразованиеТипов.ПолучитьСтроку(Данные); - КонецЕсли; - - Иначе - - ЗапросТелоКоллекция = OPI_Инструменты.КопироватьКоллекцию(Данные); - Данные = ПараметрыЗапросаВСтроку(Данные); - - КонецЕсли; - - УстановитьТелоИзСтроки(Данные); - УстановитьНастройку("ПоляТелаВOAuth", Истина); - - ДобавитьЛог(СтрШаблон("УстановитьFormТело: тело установлено, размер %1", ЗапросТело.Размер())); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Начать запись тела multipart !NOCLI -// Инициализирует запись данных в тело в формате multipart -// -// Примечание: -// Для дальнейшего формирования тела используются методы `ДобавитьФайлMultipart` и `ДобавитьПолеMultipart` -// -// Параметры: -// ИспользоватьФайл - Булево - Истина > использовать временный файл, Ложь > формирует тело в памяти - file -// Вид - Строка - Вид multipart загрузки: form data, related - type -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция НачатьЗаписьТелаMultipart(ИспользоватьФайл = Истина, Знач Вид = "form-data") Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьБулево(ИспользоватьФайл); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Вид); - - Multipart = Истина; - Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""); - РазделительСтрок = Символы.ВК + Символы.ПС; - Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса"); - ЗапросТипДанных = СтрШаблон("multipart/%1; boundary=%2", Вид, Boundary); - - ЗапросТелоКоллекция = Новый Структура; - - Если ИспользоватьФайл Тогда - - ДобавитьЛог("НачатьЗаписьТелаMultipart: создание временного файла"); - - // BSLLS:MissingTemporaryFileDeletion-off - ЗапросФайлТела = ПолучитьИмяВременногоФайла(); - // BSLLS:MissingTemporaryFileDeletion-on - - ФайлТелаВременный = Истина; - ЗапросЗаписьДанных = Новый ЗаписьДанных(ЗапросФайлТела - , Кодировка - , ПорядокБайтов.LittleEndian - , "" - , Ложь - , "" - , Ложь); - - Иначе - - ДобавитьЛог("НачатьЗаписьТелаMultipart: создание потока в памяти"); - - ЗапросПотокТела = Новый ПотокВПамяти(); - - ЗапросЗаписьДанных = Новый ЗаписьДанных(ЗапросПотокТела - , Кодировка - , ПорядокБайтов.LittleEndian - , "" - , "" - , Ложь); - - КонецЕсли; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Добавить файл multipart !NOCLI -// Добавляет блок файла в multipart/form-data тело -// -// Примечание: -// Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart` -// -// Параметры: -// ИмяПоля - Строка - Имя поля формы - field -// ИмяФайла - Строка - Имя файла с расширением - filename -// Данные - ДвоичныеДанные, Строка - Данные файла для записи - data -// ТипДанных - Строка - Mime тип записываемых данных - mime -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ДобавитьФайлMultipartFormData(Знач ИмяПоля, Знач ИмяФайла, Знач Данные, Знач ТипДанных = "") Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - Если Не Multipart Тогда Возврат Ошибка("ДобавитьФайлMultipart: не инициализирована запись Multipart"); КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные); - - ДобавитьЛог("ДобавитьФайлMultipart: запись шапки блока"); - - Шапка = СтрШаблон("Content-Disposition: form-data; name=""%1""; filename=""%2""", ИмяПоля, ИмяФайла); - - ЗапросЗаписьДанных.ЗаписатьСтроку("--" + Boundary + РазделительСтрок); - ЗапросЗаписьДанных.ЗаписатьСтроку(Шапка); - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - - Если ЗначениеЗаполнено(ТипДанных) Тогда - ЗапросЗаписьДанных.ЗаписатьСтроку("Content-Type: " + ТипДанных); - КонецЕсли; - - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - - ДобавитьЛог("ДобавитьФайлMultipart: запись данных"); - - ЗаписатьДвоичныеДанные(ЗапросЗаписьДанных, Данные); - - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Добавить поле multipart !NOCLI -// Добавляет поле формы в multipart/form-data тело -// -// Примечание: -// Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart` -// -// Параметры: -// ИмяПоля - Строка - Имя поля формы - field -// Значение - Произвольный - Значение поля - data -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ДобавитьПолеMultipartFormData(Знач ИмяПоля, Знач Значение) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - Если Не Multipart Тогда Возврат Ошибка("ДобавитьПолеMultipart: не инициализирована запись Multipart"); КонецЕсли; - - ТипЗначения = ТипЗнч(Значение); - - ДобавитьЛог("ДобавитьПолеMultipart: запись шапки блока"); - - Шапка = СтрШаблон("Content-Disposition: form-data; name=""%1""", ИмяПоля); - - ЗапросЗаписьДанных.ЗаписатьСтроку("--" + boundary + РазделительСтрок); - ЗапросЗаписьДанных.ЗаписатьСтроку(Шапка); - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - - ДобавитьЛог("ДобавитьПолеMultipart: запись данных"); - - Если ТипЗначения = Тип("Булево") Тогда - - Значение = ?(Значение, "true", "false"); - ЗапросЗаписьДанных.ЗаписатьСтроку(Значение); - ЗапросТелоКоллекция.Вставить(ИмяПоля, Значение); - - ИначеЕсли ТипЗначения = Тип("ДвоичныеДанные") Тогда - - ЗаписатьДвоичныеДанные(ЗапросЗаписьДанных, Значение); - - Иначе - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); - ЗапросЗаписьДанных.ЗаписатьСтроку(Значение); - ЗапросТелоКоллекция.Вставить(ИмяПоля, Значение); - - КонецЕсли; - - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Добавить данные Related !NOCLI -// Добавляет данные в multipart/related тело -// -// Примечание: -// Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart` -// -// Параметры: -// Данные - Произвольный - Данные для записи - data -// ТипДанных - Строка - MIME тип записываемых данных - mime -// IDЧасти - Строка - Content ID, если необходим - cid -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ДобавитьДанныеRelated(Знач Данные, Знач ТипДанных, Знач IDЧасти = "") Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - Если Не Multipart Тогда Возврат Ошибка("ДобавитьФайлRelated: не инициализирована запись Multipart"); КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТипДанных); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧасти); - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь); - - ДобавитьЛог("ДобавитьФайлRelated: запись шапки блока"); - ЗапросЗаписьДанных.ЗаписатьСтроку("--" + Boundary + РазделительСтрок); - ЗапросЗаписьДанных.ЗаписатьСтроку("Content-Type: " + ТипДанных); - - Если ЗначениеЗаполнено(IDЧасти) Тогда - ЗапросЗаписьДанных.ЗаписатьСтроку("Content-ID: " + IDЧасти); - КонецЕсли; - - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - - ДобавитьЛог("ДобавитьФайлRelated: запись данных"); - ЗаписатьДвоичныеДанные(ЗапросЗаписьДанных, Данные); - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -#КонецОбласти - -#Область УстановкаЗаголовков - -// Установить заголовки !NOCLI -// Устанавливает коллекцию заголовков запросов -// -// Параметры: -// Значение - Произвольный - Стрктура или соответствие заголовков запрос - headers -// ПолнаяЗамена - Булево - Очищает все добавленные ранее заголовки перед установкой - replace -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьЗаголовки(Знач Значение, Знач ПолнаяЗамена = Ложь) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Соответствие; КонецЕсли; - - ТекстОшибки = "УстановитьЗаголовки: переданные параметры не являются коллекцией ключ/значение"; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки); - OPI_ПреобразованиеТипов.ПолучитьБулево(ПолнаяЗамена); - - ДобавитьЛог("УстановитьЗаголовки: установка заголовков запроса"); - - Если ПолнаяЗамена Тогда - ЗапросЗаголовки = Значение; - Иначе - Для Каждого Заголовок Из Значение Цикл - ЗапросЗаголовки.Вставить(Заголовок.Ключ, Заголовок.Значение); - КонецЦикла; - КонецЕсли; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Добавить заголовок !NOCLI -// Добавляет заголовок в набор заголовков запроса -// -// Параметры: -// Имя - Строка - Ключ заголовка - header -// Значение - Строка - Значение заголовка - value -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ДобавитьЗаголовок(Знач Имя, Знач Значение) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Соответствие; КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); - - ДобавитьЛог("ДобавитьЗаголовок: установка заголовков запроса"); - - ЗапросЗаголовки.Вставить(Имя, Значение); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; -КонецФункции - -#КонецОбласти - -#Область Авторизация - -// Добавить Basic авторизацию !NOCLI -// Добавляет стандартную авторизацю по пользователю и паролю -// -// Параметры: -// Пользователь - Строка - Имя пользователя - user -// Пароль - Строка - Пароль - pwd -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ДобавитьBasicАвторизацию(Знач Пользователь, Знач Пароль) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Пользователь); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); - - ЗапросПользователь = Пользователь; - ЗапросПароль = Пароль; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Добавить Bearer авторизацию !NOCLI -// Добавляет заголовок запроса для Bearer авторизации -// -// Параметры: -// Токен - Строка - Значение Bearer токена - token -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ДобавитьBearerАвторизацию(Знач Токен) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - - AuthВид = "bearer"; - AuthДанные = Токен; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Добавить AWS4 авторизацию !NOCLI -// Добавляет данные для AWS4 авторизации -// -// Параметры: -// AccessKey - Строка - Access key для авторизации - access -// SecretKey - Строка - Secret key для авторизации - secret -// Region - Строка - Регион сервиса - region -// Service - Строка - Вид сервиса, если отличен от s3 - service -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ДобавитьAWS4Авторизацию(Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - Строка_ = "Строка"; - AuthВид = "aws4"; - - AuthДанные = Новый Структура; - OPI_Инструменты.ДобавитьПоле("AccessKey", AccessKey, Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("SecretKey", SecretKey, Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("Region" , Region , Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("Service" , Service , Строка_, AuthДанные); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Добавить OAuth v1 авторизацию !NOCLI -// Добавляет данные для OAuth v1 авторизации -// -// Примечание: -// По умолчанию, для создания подписи используется HMAC-SHA256. Для изменения алгоритма можно восопользоваться функцией^^ -// `УстановитьАлгоритмOAuthV1` -// -// Параметры: -// Token - Строка - Token для авторизации - token -// Secret - Строка - Secret для авторизации - secret -// ConsumerKey - Строка - Consumer key для авторизации - ck -// ConsumerSecret - Строка - Consumer secret для авторизации - cs -// Версия - Строка - Версия API - ver -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ДобавитьOAuthV1Авторизацию(Знач Token, Знач Secret, Знач ConsumerKey, Знач ConsumerSecret, Знач Версия) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - Строка_ = "Строка"; - AuthВид = "oauth1"; - - AuthДанные = Новый Структура; - OPI_Инструменты.ДобавитьПоле("OAuthToken" , Token , Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("OAuthSecret" , Secret , Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("OAuthConsumerKey" , ConsumerKey , Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("OAuthConsumerSecret", ConsumerSecret , Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("OAuthАлгоритм" , "HMAC" , Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("OAuthХешФункция" , "SHA256" , Строка_, AuthДанные); - OPI_Инструменты.ДобавитьПоле("OAuthВерсияAPI" , Версия , Строка_, AuthДанные); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Установить алгоритм OAuth V1 !NOCLI -// Изменяет алгоритм для подписи OAuth -// -// Параметры: -// Алгоритм - Строка - Алгоритм шифрования: HMAC, RSA - alg -// ХешФункция - Строка - Хеш функция для сигнатуры: SHA1, SHA256 - hash -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция УстановитьАлгоритмOAuthV1(Знач Алгоритм, Знач ХешФункция) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - Если AuthВид <> "oauth1" Тогда - Возврат Ошибка("УстановитьАлгоритмOAuthV1: перед установкой алгоритма авторизация OAuth v1 должна быть инициализирована"); - КонецЕсли; - - OPI_Инструменты.ДобавитьПоле("OAuthАлгоритм" , Алгоритм , "Строка", AuthДанные); - OPI_Инструменты.ДобавитьПоле("OAuthХешФункция", ХешФункция, "Строка", AuthДанные); - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -#КонецОбласти - -#Область ОбработкаЗапроса - -// Обработать запрос !NOCLI -// Создает запрос на основе введенных данных с выполнением или без -// -// Примечание: -// `ВыполнитьСразу = Ложь` может быть использовано для получения готовых^^ -// объектов HTTPЗапрос и HTTPСоединение без их выполнения. См. `ВернутьЗапрос` и `ВернутьСоединение` -// -// Параметры: -// Метод - Строка - HTTP метод запроса - method -// ВыполнитьСразу - Булево - Выполняет запрос сразу после формирования - run -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ОбработатьЗапрос(Знач Метод, Знач ВыполнитьСразу = Истина) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод); - OPI_ПреобразованиеТипов.ПолучитьБулево(ВыполнитьСразу); - ЗапросМетод = Метод; - - ДобавитьЛог("ОбработатьЗапрос: формирование объекта HTTPЗапроса"); - Если СформироватьЗапрос().Ошибка Тогда Возврат ЭтотОбъект; КонецЕсли; - - ДобавитьЛог("ОбработатьЗапрос: перенос тела в объект HTTPЗапроса"); - Если УстановитьТелоЗапроса().Ошибка Тогда Возврат ЭтотОбъект; КонецЕсли; - - ГарантироватьТелоКоллекцию(); - ДополнитьЗаголовки(); - - Если ВыполнитьСразу Тогда - ВызватьМетод(); - КонецЕсли; - - Возврат ЭтотОбъект; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Выполнить запрос !NOCLI -// Выполняет запрос, если он был сформирован ранее -// -// Параметры: -// Принудительно - Булево - Попытка выполнения без дополнительных проверовк - force -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки -Функция ВыполнитьЗапрос(Принудительно = Ложь) Экспорт - - Попытка - - Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; - - ДобавитьЛог("ВыполнитьЗапрос: выполнение запроса"); - - Возврат ВызватьМетод(0, Принудительно); - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Вернуть запрос !NOCLI -// Возвращает объект текущего HTTP запроса -// -// Параметры: -// Принудительно - Булево - Ложь > Вместо запроса будет возвращен объект обработки, если в ней были ошибки - force -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент, HTTPЗапрос, Неопределено - Запрос или этот же объект обработки -Функция ВернутьЗапрос(Принудительно = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); - - Если ОстановитьРаботу() И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; - - Возврат Запрос; - -КонецФункции - -// Вернуть соединение !NOCLI -// Возвращает объект текущего HTTP соединения -// -// Параметры: -// Принудительно - Булево - Ложь > Вместо соединения будет возвращен объект обработки, если в ней были ошибки - force -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент, HTTPСоединение, Неопределено - Соединение или этот же объект обработки -Функция ВернутьСоединение(Принудительно = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); - - Если ОстановитьРаботу() И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; - - Возврат Соединение; - -КонецФункции - -#КонецОбласти - -#Область ПолучениеОтвета - -// Вернуть ответ !NOCLI -// Возвращает объект текущего HTTP ответа -// -// Параметры: -// Принудительно - Булево - Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки - force -// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex -// -// Возвращаемое значение: -// ОбработкаОбъект.OPI_HTTPКлиент, HTTPОтвет, Неопределено - Ответ или этот же объект обработки -Функция ВернутьОтвет(Знач Принудительно = Ложь, Знач ИсключениеПриОшибке = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); - - Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; - - Возврат Ответ; - -КонецФункции - -// Вернуть ответ как JSON коллекцию !NOCLI -// Возвращает тело ответа как коллекцию, полученную из JSON -// -// Параметры: -// ВСоответствие - Булево - Признак использования соответствия вместо структуры - map -// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex -// -// Возвращаемое значение: -// Произвольный - Ответ или этот же объект обработки -Функция ВернутьОтветКакJSONКоллекцию(Знач ВСоответствие = Истина, Знач ИсключениеПриОшибке = Ложь) Экспорт - - Если ОстановитьРаботу(ИсключениеПриОшибке) Тогда Возврат ЭтотОбъект; КонецЕсли; - - Попытка - - OPI_ПреобразованиеТипов.ПолучитьБулево(ВСоответствие); - ТелоОтвета = ПолучитьТелоОтвета(); - - Попытка - - Если ТелоОтвета.Размер() > 0 Тогда - JSON = OPI_Инструменты.JsonВСтруктуру(ТелоОтвета, ВСоответствие); - Иначе - JSON = Новый Соответствие; - КонецЕсли; - - Исключение - - JSON = ТелоОтвета; - - КонецПопытки; - - Возврат JSON; - - Исключение - Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецФункции - -// Вернуть ответ как двоичные данные !NOCLI -// Возвращает тело ответа как двоичные данные -// -// Параметры: -// Принудительно - Булево - Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки - force -// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex -// -// Возвращаемое значение: -// Произвольный - Ответ или этот же объект обработки -Функция ВернутьОтветКакДвоичныеДанные(Знач Принудительно = Ложь, Знач ИсключениеПриОшибке = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); - - Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; - - Попытка - ТелоДвоичные = Неопределено; - ТелоДвоичные = ПолучитьТелоОтвета(); - Исключение - - Ошибка = Истина; - - Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда - ТелоДвоичные = ЭтотОбъект; - КонецЕсли; - - КонецПопытки; - - Возврат ТелоДвоичные; - -КонецФункции - -// Вернуть ответ как строку !NOCLI -// Возвращает тело ответа как строку -// -// Параметры: -// Принудительно - Булево - Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки - force -// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex -// -// Возвращаемое значение: -// Произвольный - Ответ или этот же объект обработки -Функция ВернутьОтветКакСтроку(Знач Принудительно = Ложь, Знач ИсключениеПриОшибке = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); - - Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; - - Попытка - ТелоСтрокой = Неопределено; - ТелоСтрокой = ПолучитьСтрокуИзДвоичныхДанных(ПолучитьТелоОтвета()); - Исключение - - Ошибка = Истина; - - Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда - ТелоСтрокой = ЭтотОбъект; - КонецЕсли; - - КонецПопытки; - - Возврат ТелоСтрокой; - -КонецФункции - -// Вернуть имя файла тела ответа !NOCLI -// Возвращает путь к файлу тела ответа -// -// Параметры: -// Принудительно - Булево - Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки - force -// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex -// -// Возвращаемое значение: -// Произвольный - Ответ или этот же объект обработки -Функция ВернутьИмяФайлаТелаОтвета(Знач Принудительно = Ложь, Знач ИсключениеПриОшибке = Ложь) Экспорт - - OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); - - Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; - - Попытка - ИмяФайлаТела = Неопределено; - ИмяФайлаТела = Ответ.ПолучитьИмяФайлаТела(); - Исключение - - Ошибка = Истина; - - Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда - ИмяФайлаТела = ЭтотОбъект; - КонецЕсли; - - КонецПопытки; - - Возврат ИмяФайлаТела; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область HTTP - -Функция ПреобразоватьПараметрВСтроку(Знач Значение) - - КодироватьURL = ПолучитьНастройку("КодировкаURL"); - - Если ТипЗнч(Значение) = Тип("Массив") Тогда - - Значение = OPI_Инструменты.КопироватьКоллекцию(Значение); - - Для Н = 0 По Значение.ВГраница() Цикл - Значение[Н] = ПреобразоватьПараметрВСтроку(Значение[Н]); - КонецЦикла; - - Значение = СтрСоединить(Значение, ","); - - Если КодироватьURL Тогда - Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.URLВКодировкеURL); - КонецЕсли; - - Значение = "[" + Значение + "]"; - - ИначеЕсли ТипЗнч(Значение) = Тип("Соответствие") Или ТипЗнч(Значение) = Тип("Структура") Тогда - - Значение = OPI_Инструменты.КопироватьКоллекцию(Значение); - ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, ""); - - ЗаписьJSON = Новый ЗаписьJSON; - ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); - - ЗаписатьJSON(ЗаписьJSON, Значение); - Значение = ЗаписьJSON.Закрыть(); - - ИначеЕсли ТипЗнч(Значение) = Тип("Булево") Тогда - - Значение = ?(Значение, "true", "false"); - - Иначе - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); - - Если КодироватьURL Тогда - Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL); - КонецЕсли; - - КонецЕсли; - - Возврат Значение; - -КонецФункции - -Функция УстановитьТелоИзДвоичныхДанных(Знач Значение) - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Значение, Истина, Ложь); - ЗапросТело = Значение; - - Возврат ЭтотОбъект; - -КонецФункции - -Функция УстановитьТелоИзСтроки(Знач Значение, Знач ЗаписатьBOM = Ложь) - - Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда - - ЗапросТело = Значение; - - Иначе - - Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса"); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); - OPI_ПреобразованиеТипов.ПолучитьБулево(ЗаписатьBOM); - - ЗапросТело = ПолучитьДвоичныеДанныеИзСтроки(Значение, Кодировка, ЗаписатьBOM); - - КонецЕсли; - - Возврат ЭтотОбъект; - -КонецФункции - -Функция РазбитьURL() - - ДобавитьЛог("РазбитьURL: разбиение запроса на составные части"); - - URL = ЗапросURL; - - ЗапросЗащищенное = Не СтрНачинаетсяС(ЗапросURL, "http://"); - - ДобавитьЛог("РазбитьURL: Защищенное = " + Строка(ЗапросЗащищенное)); - - URL = СтрЗаменить(URL, "https://", ""); - URL = СтрЗаменить(URL, "http://" , ""); - - Секция = СтрНайти(URL, "#"); - - Если Секция > 0 Тогда - - ЗапросСекция = Прав(URL, СтрДлина(URL) - Секция + 1); - ДобавитьЛог("РазбитьURL: Секция = " + ЗапросСекция); - - URL = Лев(URL, Секция - 1); - - КонецЕсли; - - Если СтрНайти(URL, "/") = 0 Тогда - ЗапросАдрес = ""; - ЗапросДомен = URL; - Иначе - ЗапросАдрес = Прав(URL, СтрДлина(URL) - СтрНайти(URL, "/", НаправлениеПоиска.СНачала) + 1); - ЗапросДомен = Лев(URL, СтрНайти(URL, "/", НаправлениеПоиска.СНачала) - 1); - КонецЕсли; - - ДобавитьЛог("РазбитьURL: Адрес = " + ЗапросАдрес); - ДобавитьЛог("РазбитьURL: Домен = " + ЗапросДомен); - - Если СтрНайти(ЗапросДомен, ":") <> 0 Тогда - - ХостПорт = СтрРазделить(ЗапросДомен, ":"); - ЗапросДомен = ХостПорт[0]; - ЗапросПорт = ХостПорт[1]; - - OPI_ПреобразованиеТипов.ПолучитьЧисло(ЗапросПорт); - - Иначе - - ЗапросПорт = ?(ЗапросЗащищенное, 443, 80); - - КонецЕсли; - - ДобавитьЛог("РазбитьURL: Порт = " + OPI_Инструменты.ЧислоВСтроку(ЗапросПорт)); - - Если OPI_Инструменты.ЭтоOneScript() И ЗапросЗащищенное Тогда - ЗапросСервер = "https://" + ЗапросДомен; - Иначе - ЗапросСервер = ЗапросДомен; - КонецЕсли; - - ДобавитьЛог("РазбитьURL: Сервер = " + ЗапросСервер); - - Возврат ЭтотОбъект; - -КонецФункции - -Функция СформироватьЗапрос() - - Если Не ЗначениеЗаполнено(ЗапросURL) Тогда - Возврат Ошибка("Не установлен URL"); - КонецЕсли; - - ДобавитьЛог("СформироватьЗапрос: Добавление параметров"); - ДополнитьURLПараметрами(); - - ДобавитьЛог("СформироватьЗапрос: Создание объекта запроса"); - СоздатьЗапрос(); - - ДобавитьЛог("СформироватьЗапрос: Создание объекта соединения"); - СоздатьСоединение(); - - Возврат ЭтотОбъект; - -КонецФункции - -Функция СоздатьЗапрос() - - Заголовки = ПолучитьСтандартныеЗаголовки(); - Запрос = Новый HTTPЗапрос(ЗапросАдресПолный, Заголовки); - - Возврат ЭтотОбъект; - -КонецФункции - -Функция СоздатьСоединение() - - Если Не ЗначениеЗаполнено(ЗапросПорт) Тогда - ЗапросПорт = ?(ЗапросЗащищенное, 443, 80); - КонецЕсли; - - Если ЗапросЗащищенное Тогда - - Если OPI_Инструменты.ЭтоOneScript() Тогда - - Соединение = Новый HTTPСоединение(ЗапросСервер - , ЗапросПорт - , ЗапросПользователь - , ЗапросПароль - , ЗапросПрокси - , ЗапросТаймаут); - - Иначе - - SSL = Новый ЗащищенноеСоединениеOpenSSL; - Соединение = Новый HTTPСоединение(ЗапросСервер - , ЗапросПорт - , ЗапросПользователь - , ЗапросПароль - , ЗапросПрокси - , ЗапросТаймаут - , SSL); - - КонецЕсли; - - Иначе - - Соединение = Новый HTTPСоединение(ЗапросСервер - , ЗапросПорт - , ЗапросПользователь - , ЗапросПароль - , ЗапросПрокси - , ЗапросТаймаут); - - КонецЕсли; - - Возврат ЭтотОбъект; - -КонецФункции - -Функция ДополнитьURLПараметрами() - - Если СтрЗаканчиваетсяНа(ЗапросАдрес, "?") Или Не ЗначениеЗаполнено(ЗапросПараметрыURL) Тогда - ЗнакНачала = ""; - ИначеЕсли СтрНайти(ЗапросАдрес, "?") <> 0 Тогда - ЗнакНачала = "&"; - Иначе - ЗнакНачала = "?"; - КонецЕсли; - - ЗапросАдресПолный = ЗапросАдрес + ЗнакНачала + ПараметрыЗапросаВСтроку(ЗапросПараметрыURL) + ЗапросСекция; - - Возврат ЭтотОбъект; - -КонецФункции - -Функция ПараметрыЗапросаВСтроку(Знач Параметры) - - Если Не ЗначениеЗаполнено(Параметры) Тогда - Возврат ""; - КонецЕсли; - - ДобавитьЛог("ПараметрыЗапросаВСтроку: Получение коллекции КлючЗначение"); - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Параметры); - - СтрокаПараметров = ""; - - ДобавитьЛог("ПараметрыЗапросаВСтроку: Добавление параметров"); - Для Каждого Параметр Из Параметры Цикл - - ТекущееЗначение = Параметр.Значение; - ТекущийКлюч = Параметр.Ключ; - - Если Не ТипЗнч(ТекущееЗначение) = Тип("Массив") Или Не ПолучитьНастройку("ОтдельныеЭлементыМассивов") Тогда - - ЗначениеПараметра = ПреобразоватьПараметрВСтроку(ТекущееЗначение); - СтрокаПараметров = СтрокаПараметров + Параметр.Ключ + "=" + ЗначениеПараметра + "&"; - - Иначе - - ЗначениеПараметра = РазделитьМассивНаПараметрыURL(ТекущийКлюч, ТекущееЗначение); - СтрокаПараметров = СтрокаПараметров + ЗначениеПараметра + "&"; - - КонецЕсли; - - КонецЦикла; - - СтрокаПараметров = Лев(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1); - - Возврат СтрокаПараметров; - -КонецФункции - -Функция РазделитьМассивНаПараметрыURL(Знач Ключ, Знач Значение) - - КлючМассив = СтрШаблон("%1%2=", Ключ, ?(ПолучитьНастройку("КвадратныеСкобкиМассивов"), "[]", "")); - Значение = OPI_Инструменты.КопироватьКоллекцию(Значение); - - Для Н = 0 По Значение.ВГраница() Цикл - - ТекущееЗначение = Значение[Н]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущееЗначение); - - Если ПолучитьНастройку("КодировкаURL") Тогда - ТекущееЗначение = КодироватьСтроку(ТекущееЗначение, СпособКодированияСтроки.URLВКодировкеURL); - КонецЕсли; - - Значение.Установить(Н, КлючМассив + ТекущееЗначение); - - КонецЦикла; - - ПараметрСтрокой = СтрСоединить(Значение, "&"); - - Возврат ПараметрСтрокой; - -КонецФункции - -Функция ПолучитьСтандартныеЗаголовки() - - Заголовки = Новый Соответствие; - - Заголовки.Вставить("Accept" , "*/*"); - Заголовки.Вставить("Connection" , "keep-alive"); - Заголовки.Вставить("Accept-Charset" , "utf-8"); - - Возврат Заголовки; - -КонецФункции - -Функция ДополнитьЗаголовки() - - Если Запрос.Заголовки.Получить("Content-Length") = Неопределено Тогда - - ДобавитьЛог("ДополнитьЗаголовки: установка Content-Length"); - - Если ЗапросФайлТела = Неопределено Тогда - - Если ЗапросТело = Неопределено Тогда - РазмерТела = 0; - Иначе - РазмерТела = ЗапросТело.Размер(); - КонецЕсли; - - Иначе - - ФайлТела = Новый Файл(ЗапросФайлТела); - РазмерТела = ФайлТела.Размер(); - - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(РазмерТела); - Запрос.Заголовки.Вставить("Content-Length" , РазмерТела); - - КонецЕсли; - - ДополнитьЗаголовкиАвторизации(); - - Если ПолучитьНастройку("gzip") Тогда - ДобавитьЛог("ДополнитьЗаголовки: установка заголовка ожидания gzip"); - Запрос.Заголовки.Вставить("Accept-Encoding", "gzip"); - КонецЕсли; - - Если ЗначениеЗаполнено(ЗапросТипДанных) Тогда - Запрос.Заголовки.Вставить("Content-Type", ЗапросТипДанных); - КонецЕсли; - - Если ТипЗнч(ЗапросЗаголовки) = Тип("Соответствие") Тогда - - Для Каждого Заголовок Из ЗапросЗаголовки Цикл - Запрос.Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение); - КонецЦикла; - - КонецЕсли; - - Возврат ЭтотОбъект; - -КонецФункции - -Функция ДополнитьЗаголовкиАвторизации() - - Если Не ЗначениеЗаполнено(AuthВид) Тогда - Возврат ЭтотОбъект; - КонецЕсли; - - Если AuthВид = "aws4" Тогда - - ДобавитьЛог("ДополнитьЗаголовкиАвторизации: формирование заголовка AWS4 авторизации"); - ДобавитьAWS4(); - - ИначеЕсли AuthВид = "oauth1" Тогда - - ДобавитьЛог("ДополнитьЗаголовкиАвторизации: формирование заголовка OAuth V1 авторизации"); - ДобавитьЗаголовокOAuthV1(); - - Иначе - - ДобавитьЛог("ДополнитьЗаголовкиАвторизации: формирование заголовка Bearer авторизации"); - Запрос.Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", AuthДанные)); - - КонецЕсли; - - Возврат ЭтотОбъект; - -КонецФункции - -Функция УстановитьТелоЗапроса() - - Если Multipart Тогда - ЗвершитьЗаписьMultipart(); - КонецЕсли; - - Если ЗначениеЗаполнено(ЗапросФайлТела) Тогда - Запрос.УстановитьИмяФайлаТела(ЗапросФайлТела); - Иначе - - Если ТипЗнч(ЗапросТело) = Тип("ДвоичныеДанные") Тогда - Запрос.УстановитьТелоИзДвоичныхДанных(ЗапросТело); - КонецЕсли; - - КонецЕсли; - - Возврат ЭтотОбъект; - -КонецФункции - -Функция ВызватьМетод(Знач ЧислоПереадресаций = 0, Знач Принудительно = Ложь) - - OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); - - Если (Запрос = Неопределено Или Соединение = Неопределено) И Не Принудительно Тогда - Возврат Ошибка("ВызватьМетод: запрос не был сформирован перед выполнением"); - КонецЕсли; - - Если ЗначениеЗаполнено(ЗапросВыходнойФайл) Тогда - Ответ = Соединение.ВызватьHTTPМетод(ЗапросМетод, Запрос, ЗапросВыходнойФайл); - Иначе - Ответ = Соединение.ВызватьHTTPМетод(ЗапросМетод, Запрос); - КонецЕсли; - - Если ЭтоПереадресация(Ответ) Тогда - - Если ЧислоПереадресаций = 5 Тогда - Ошибка("ВызватьМетод: превышено число переадресаций"); - Возврат ЭтотОбъект; - КонецЕсли; - - URL = Ответ.Заголовки["Location"]; - УстановитьURL(URL); - - СоздатьСоединение(); - Запрос.АдресРесурса = ЗапросАдрес; - - ВызватьМетод(ЧислоПереадресаций + 1, Принудительно); - - КонецЕсли; - - Возврат ЭтотОбъект; - -КонецФункции - -Функция ПолучитьТелоОтвета() - - НужнаРаспаковка = Ложь; - - Для Каждого ЗаголовокОтвета Из Ответ.Заголовки Цикл - - КлючЗаголовка = ЗаголовокОтвета.Ключ; - ЗначениеЗаголовка = ЗаголовокОтвета.Значение; - - Если нРег(КлючЗаголовка) = "content-encoding" Тогда - Если нРег(ЗначениеЗаголовка) = "gzip" Тогда - НужнаРаспаковка = Истина; - Прервать; - КонецЕсли; - КонецЕсли; - - КонецЦикла; - - Если НужнаРаспаковка Тогда - Данные = РаспаковатьОтвет(Ответ); - Иначе - Данные = ПолучитьТелоОтветаКакДвоичныеДанные(); - КонецЕсли; - - Данные = ?(ТипЗнч(Данные) = Тип("HTTPОтвет"), ПолучитьТелоОтветаКакДвоичныеДанные(), Данные); - - Если Не ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные); - КонецЕсли; - - Возврат Данные; - -КонецФункции - -Функция ЭтоПереадресация(Знач Ответ) - - Переадресация = 300; - ОшибкаЗапроса = 400; - - ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < ОшибкаЗапроса И ЗначениеЗаполнено( - Ответ.Заголовки["Location"]); - - Возврат ЭтоПереадресация; - -КонецФункции - -Функция ПолучитьТелоОтветаКакДвоичныеДанные() - - ПотокТела = Ответ.ПолучитьТелоКакПоток(); - - Если ПотокТела = Неопределено Тогда - Возврат ПолучитьДвоичныеДанныеИзСтроки(""); - КонецЕсли; - - ЧтениеДанных = Новый ЧтениеДанных(ПотокТела); - РезультатЧтения = ЧтениеДанных.Прочитать(); - Данные = РезультатЧтения.ПолучитьДвоичныеДанные(); - - ЧтениеДанных.Закрыть(); - ПотокТела.Закрыть(); - - Возврат Данные; - -КонецФункции - -Функция ПолучитьТелоОтветаКакДанныеИлиПуть() - - ИмяФайлаТела = Ответ.ПолучитьИмяФайлаТела(); - - Если Не ЗначениеЗаполнено(ИмяФайлаТела) Тогда - Возврат ПолучитьТелоОтветаКакДвоичныеДанные(); - Иначе - Возврат ИмяФайлаТела; - КонецЕсли; - -КонецФункции - -Функция ПолучитьТелоЗапросаКакДвоичныеДанные() - - Если ЗначениеЗаполнено(ЗапросФайлТела) Тогда - Данные = Новый ДвоичныеДанные(ЗапросФайлТела); - Иначе - Данные = ЗапросТело; - КонецЕсли; - - Если Данные = Неопределено Тогда - Данные = ПолучитьДвоичныеДанныеИзСтроки(""); - КонецЕсли; - - Возврат Данные; - -КонецФункции - -Процедура ОтменитьЗаписьMultipart() - - Если Не Multipart Тогда - Возврат; - КонецЕсли; - - ДобавитьЛог("ОтменитьЗаписьMultipart: Удаление записанных данных"); - Multipart = Ложь; - - Попытка - ЗапросЗаписьДанных.Закрыть(); - Исключение - ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось закрыть запись. Возможно, она уже была закрыта"); - КонецПопытки; - - Если ЗначениеЗаполнено(ЗапросФайлТела) Тогда - - Попытка - - УдалитьФайлы(ЗапросФайлТела); - ДобавитьЛог("ОтменитьЗаписьMultipart: Файл тела удален"); - - Исключение - ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось удалить файл тела. Возможно, он уже был удален"); - КонецПопытки; - - Иначе - - Если ТипЗнч(ЗапросПотокТела) = Тип("ПотокВПамяти") Тогда - - Попытка - ЗапросПотокТела.Закрыть(); - Исключение - ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось закрыть поток. Возможно, он уже был закрыт"); - КонецПопытки; - - КонецЕсли; - - КонецЕсли; - - ЗапросЗаписьДанных = Неопределено; - ЗапросФайлТела = Неопределено; - -КонецПроцедуры - -Процедура ЗаписатьДвоичныеДанные(ЗаписьДанных, Знач ДвоичныеДанные) - - РазмерЧасти = 268435456; - ПрочитанноБайт = 0; - ТекущаяПозиция = 0; - ОбщийРазмер = ДвоичныеДанные.Размер(); - - Пока ПрочитанноБайт < ОбщийРазмер Цикл - - ЧтениеДанных = Новый ЧтениеДанных(ДвоичныеДанные); - ПрочитанноБайт = ЧтениеДанных.Пропустить(ТекущаяПозиция); - Результат = ЧтениеДанных.Прочитать(РазмерЧасти); - ТекущиеДанные = Результат.ПолучитьДвоичныеДанные(); - РазмерТекущих = ТекущиеДанные.Размер(); - - Если Не ЗначениеЗаполнено(ТекущиеДанные) Тогда - Прервать; - КонецЕсли; - - ЗаписьДанных.Записать(ТекущиеДанные); - - ОсвободитьОбъект(ТекущиеДанные); - ВыполнитьСборкуМусора(); - - ТекущаяПозиция = ТекущаяПозиция + РазмерТекущих; - - КонецЦикла; - -КонецПроцедуры - -Процедура ЗвершитьЗаписьMultipart() - - Попытка - ЗапросЗаписьДанных.ЗаписатьСтроку("--" + Boundary + "--" + РазделительСтрок); - ЗапросЗаписьДанных.Закрыть(); - Исключение - ДобавитьЛог("ЗвершитьЗаписьMultipart: Не удалось закрыть запись. Возможно, она уже была закрыта"); - КонецПопытки; - - Если ТипЗнч(ЗапросПотокТела) = Тип("ПотокВПамяти") Тогда - ЗапросТело = ЗапросПотокТела.ЗакрытьИПолучитьДвоичныеДанные(); - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти - -#Область GZip - -// Описание структур см. здесь https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT -// Источник: https://github.com/vbondarevsky/Connector - -// Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 -// -// Copyright 2017-2023 Vladimir Bondarevskiy -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// -// URL: https://github.com/vbondarevsky/Connector -// e-mail: vbondarevsky@gmail.com -// Версия: 2.4.8 -// -// Требования: платформа 1С версии 8.3.10 и выше - -Функция РаспаковатьОтвет(Ответ) - - Попытка - Возврат ПрочитатьGZip(ПолучитьТелоОтветаКакДанныеИлиПуть()); - Исключение - Возврат Ответ; - КонецПопытки; - -КонецФункции - -Функция ПрочитатьGZip(СжатыеДанные) - - РазмерПрефиксаGZip = 10; - РазмерПостфиксаGZip = 8; - - РазмерДД = ZipРазмерDD(); - РазмерСДХ = ZipРазмерCDH(); - РазмерЕСД = ZipРазмерEOCD(); - РазмерЛФХ = ZipРазмерLFH(); - - ЧтениеДанных = Новый ЧтениеДанных(СжатыеДанные); - ЧтениеДанных.Пропустить(РазмерПрефиксаGZip); - РазмерСжатыхДанных = ЧтениеДанных.ИсходныйПоток().Размер() - РазмерПрефиксаGZip - РазмерПостфиксаGZip; - - ПотокZip = Новый ПотокВПамяти(РазмерЛФХ + РазмерСжатыхДанных + РазмерДД + РазмерСДХ + РазмерЕСД); - - ЗаписьДанных = Новый ЗаписьДанных(ПотокZip); - ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipLFH()); - ЧтениеДанных.КопироватьВ(ЗаписьДанных, РазмерСжатыхДанных); - - ЗаписьДанных.Закрыть(); - ЗаписьДанных = Новый ЗаписьДанных(ПотокZip); - - CRC32 = ЧтениеДанных.ПрочитатьЦелое32(); - РазмерНесжатыхДанных = ЧтениеДанных.ПрочитатьЦелое32(); - ЧтениеДанных.Закрыть(); - - ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipDD(CRC32 , РазмерСжатыхДанных, РазмерНесжатыхДанных)); - ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных)); - ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipEOCD(РазмерСжатыхДанных)); - ЗаписьДанных.Закрыть(); - - Возврат ПрочитатьZip(ПотокZip); - -КонецФункции - -Функция ПрочитатьZip(СжатыеДанные, ТекстОшибки = Неопределено) - - Каталог = ПолучитьИмяВременногоФайла(); - ЧтениеZip = Новый ЧтениеZipФайла(СжатыеДанные); - ИмяФайла = ЧтениеZip.Элементы[0].Имя; - Попытка - ЧтениеZip.Извлечь(ЧтениеZip.Элементы[0], Каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать); - Исключение - // Игнорируем проверку целостности архива, просто читаем результат - ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - КонецПопытки; - ЧтениеZip.Закрыть(); - - Результат = Новый ДвоичныеДанные(Каталог + ПолучитьРазделительПути() + ИмяФайла); - УдалитьФайлы(Каталог); - - Возврат Результат; - -КонецФункции - -Функция ZipРазмерLFH() - - Возврат 34; - -КонецФункции - -Функция ZipРазмерDD() - - Возврат 16; - -КонецФункции - -Функция ZipРазмерCDH() - - Возврат 50; - -КонецФункции - -Функция ZipРазмерEOCD() - - Возврат 22; - -КонецФункции - -Функция ZipLFH() - - // Local file header - Буфер = Новый БуферДвоичныхДанных(ZipРазмерLFH()); - Буфер.ЗаписатьЦелое32(0, 67324752); // signature 0x04034b50 - Буфер.ЗаписатьЦелое16(4, 20); // version - Буфер.ЗаписатьЦелое16(6, 10); // bit flags - Буфер.ЗаписатьЦелое16(8, 8); // compression method - Буфер.ЗаписатьЦелое16(10, 0); // time - Буфер.ЗаписатьЦелое16(12, 0); // date - Буфер.ЗаписатьЦелое32(14, 0); // crc-32 - Буфер.ЗаписатьЦелое32(18, 0); // compressed size - Буфер.ЗаписатьЦелое32(22, 0); // uncompressed size - Буфер.ЗаписатьЦелое16(26, 4); // filename legth - "data" - Буфер.ЗаписатьЦелое16(28, 0); // extra field length - Буфер.Записать(30, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь)); - - Возврат Буфер; - -КонецФункции - -Функция ZipDD(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных) - - // Data descriptor - Буфер = Новый БуферДвоичныхДанных(ZipРазмерDD()); - Буфер.ЗаписатьЦелое32(0, 134695760); - Буфер.ЗаписатьЦелое32(4, CRC32); - Буфер.ЗаписатьЦелое32(8, РазмерСжатыхДанных); - Буфер.ЗаписатьЦелое32(12, РазмерНесжатыхДанных); - - Возврат Буфер; - -КонецФункции - -Функция ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных) - - // Central directory header - Буфер = Новый БуферДвоичныхДанных(ZipРазмерCDH()); - Буфер.ЗаписатьЦелое32(0, 33639248); // signature 0x02014b50 - Буфер.ЗаписатьЦелое16(4, 798); // version made by - Буфер.ЗаписатьЦелое16(6, 20); // version needed to extract - Буфер.ЗаписатьЦелое16(8, 10); // bit flags - Буфер.ЗаписатьЦелое16(10, 8); // compression method - Буфер.ЗаписатьЦелое16(12, 0); // time - Буфер.ЗаписатьЦелое16(14, 0); // date - Буфер.ЗаписатьЦелое32(16, CRC32); // crc-32 - Буфер.ЗаписатьЦелое32(20, РазмерСжатыхДанных); // compressed size - Буфер.ЗаписатьЦелое32(24, РазмерНесжатыхДанных); // uncompressed size - Буфер.ЗаписатьЦелое16(28, 4); // file name length - Буфер.ЗаписатьЦелое16(30, 0); // extra field length - Буфер.ЗаписатьЦелое16(32, 0); // file comment length - Буфер.ЗаписатьЦелое16(34, 0); // disk number start - Буфер.ЗаписатьЦелое16(36, 0); // internal file attributes - Буфер.ЗаписатьЦелое32(38, 2176057344); // external file attributes - Буфер.ЗаписатьЦелое32(42, 0); // relative offset of local header - Буфер.Записать(46, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь)); - - Возврат Буфер; - -КонецФункции - -Функция ZipEOCD(РазмерСжатыхДанных) - - // End of central directory - РазмерCDH = 50; - Буфер = Новый БуферДвоичныхДанных(ZipРазмерEOCD()); - Буфер.ЗаписатьЦелое32(0, 101010256); // signature 0x06054b50 - Буфер.ЗаписатьЦелое16(4, 0); // number of this disk - Буфер.ЗаписатьЦелое16(6, 0); // number of the disk with the start of the central directory - Буфер.ЗаписатьЦелое16(8, 1); // total number of entries in the central directory on this disk - Буфер.ЗаписатьЦелое16(10, 1); // total number of entries in the central directory - Буфер.ЗаписатьЦелое32(12, РазмерCDH); // size of the central directory - // offset of start of central directory with respect to the starting disk number - Буфер.ЗаписатьЦелое32(16, ZipРазмерLFH() + РазмерСжатыхДанных + ZipРазмерDD()); - Буфер.ЗаписатьЦелое16(20, 0); // the starting disk number - - Возврат Буфер; - -КонецФункции - -#КонецОбласти - -#Область AWS4 - -Функция ДобавитьAWS4() - - ЗаголовокАвторизации = СоздатьЗаголовокАвторизации(); - - Запрос.Заголовки.Вставить("Authorization", ЗаголовокАвторизации); - - Возврат ЭтотОбъект; - -КонецФункции - -Функция СоздатьЗаголовокАвторизации() - - AccessKey = AuthДанные["AccessKey"]; - ТекущаяДата = ТекущаяУниверсальнаяДата(); - - Запрос.Заголовки.Вставить("x-amz-date", OPI_Инструменты.ВременнаяМеткаISO(ТекущаяДата)); - Запрос.Заголовки.Вставить("Host" , Соединение.Сервер); - - ОсновныеЧасти = ПолучитьОсновныеСоставляющиеПодписи(ТекущаяДата); - - Скоуп = ОсновныеЧасти["Скоуп"]; - Сигнатура = ОсновныеЧасти["Сигнатура"]; - КлючиЗаголовков = ОсновныеЧасти["КлючиЗаголовков"]; - - ЗаголовокАвторизации = СформироватьЗаголовокАвторизации(AccessKey, Скоуп, Сигнатура, КлючиЗаголовков); - - Возврат ЗаголовокАвторизации; - -КонецФункции - -Функция ПолучитьОсновныеСоставляющиеПодписи(Знач ТекущаяДата) - - SecretKey = AuthДанные["SecretKey"]; - Region = AuthДанные["Region"]; - Service = AuthДанные["Service"]; - - КлючПодписи = ПолучитьКлючПодписи(SecretKey, Region, Service, ТекущаяДата); - КаноническийЗапрос = СоздатьКаноническийЗапрос(); - Скоуп = СоздатьСкоуп(Region, Service, ТекущаяДата); - СтрокаДляПодписи = СоздатьСтрокуПодписи(КаноническийЗапрос, Скоуп, ТекущаяДата); - - Сигнатура = OPI_Криптография.HMAC(КлючПодписи, СтрокаДляПодписи, "SHA256"); - Сигнатура = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(Сигнатура)); - - КлючиЗаголовков = ПолучитьСтрокуКлючейЗаголовков(); - - СтруктураЧастей = Новый Структура; - - СтруктураЧастей.Вставить("Скоуп" , Скоуп); - СтруктураЧастей.Вставить("Сигнатура" , Сигнатура); - СтруктураЧастей.Вставить("КлючиЗаголовков", КлючиЗаголовков); - - Возврат СтруктураЧастей; - -КонецФункции - -Функция СформироватьЗаголовокАвторизации(Знач AccessKey, Знач Скоуп, Знач Сигнатура, Знач КлючиЗаголовков) - - ШаблонЗаголовка = "AWS4-HMAC-SHA256 " - + "Credential=%1/%2, " - + "SignedHeaders=%3, " - + "Signature=%4"; - - ЗаголовокАвторизации = СтрШаблон(ШаблонЗаголовка, AccessKey, Скоуп, КлючиЗаголовков, Сигнатура); - - Возврат ЗаголовокАвторизации; - -КонецФункции - -Функция ПолучитьКлючПодписи(Знач СекретныйКлюч, Знач Регион, Знач Сервис, Знач ТекущаяДата) - - СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч); - ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;")); - Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион); - Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис); - AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request"); - SHA256_ = "SHA256"; - - КлючДанных = OPI_Криптография.HMAC(СекретныйКлюч, ДанныеДата, SHA256_); - КлючРегиона = OPI_Криптография.HMAC(КлючДанных, Регион, SHA256_); - КлючСервиса = OPI_Криптография.HMAC(КлючРегиона, Сервис, SHA256_); - - ФинальныйКлюч = OPI_Криптография.HMAC(КлючСервиса, AWSЗапрос, SHA256_); - - Возврат ФинальныйКлюч; - -КонецФункции - -Функция СоздатьКаноническийЗапрос() - - ШаблонЗапроса = ""; - ТелоЗапроса = ПолучитьТелоЗапросаКакДвоичныеДанные(); - ХешСумма = OPI_Криптография.Хеш(ТелоЗапроса, ХешФункция.SHA256); - ЧислоЧастей = 6; - - Запрос.Заголовки.Вставить("x-amz-content-sha256", нРег(ПолучитьHexСтрокуИзДвоичныхДанных(ХешСумма))); - - Для Н = 1 По ЧислоЧастей Цикл - - ШаблонЗапроса = ШаблонЗапроса + "%" + Строка(Н) + ?(Н = ЧислоЧастей, "", Символы.ПС); - - КонецЦикла; - - Метод = вРег(ЗапросМетод); - СтрокаURI = ПолучитьСтрокуURI(); - СтрокаПараметров = ПолучитьСтрокуПараметров(); - СтрокаЗаголовков = ПолучитьСтрокуЗаголовков(); - СтрокаКлючей = ПолучитьСтрокуКлючейЗаголовков(); - - СтрокаХэша = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(ХешСумма)); - - КаноническийЗапрос = СтрШаблон(ШаблонЗапроса - , Метод - , СтрокаURI - , СтрокаПараметров - , СтрокаЗаголовков - , СтрокаКлючей - , СтрокаХэша); - - Возврат КаноническийЗапрос; - -КонецФункции - -Функция СоздатьСкоуп(Знач Регион, Знач Сервис, Знач ТекущаяДата) - - ДатаОбычная = Формат(ТекущаяДата, "ДФ=yyyyMMdd;"); - - Скоуп = Новый Массив; - Скоуп.Добавить(ДатаОбычная); - Скоуп.Добавить(Регион); - Скоуп.Добавить(Сервис); - Скоуп.Добавить("aws4_request"); - - СкоупСтрокой = СтрСоединить(Скоуп, "/"); - - Возврат СкоупСтрокой; - -КонецФункции - -Функция СоздатьСтрокуПодписи(Знач КаноническийЗапрос, Знач Скоуп, Знач ТекущаяДата) - - ШаблонСтроки = ""; - Алгоритм = "AWS4-HMAC-SHA256"; - ДатаISO = OPI_Инструменты.ВременнаяМеткаISO(ТекущаяДата); - ЧислоЧастей = 4; - - КаноническийЗапрос = ПолучитьДвоичныеДанныеИзСтроки(КаноническийЗапрос); - КаноническийЗапрос = OPI_Криптография.Хеш(КаноническийЗапрос, ХешФункция.SHA256); - КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос)); - - Для Н = 1 По ЧислоЧастей Цикл - - ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = ЧислоЧастей, "", Символы.ПС); - - КонецЦикла; - - СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос); - СтрокаПодписи = ПолучитьДвоичныеДанныеИзСтроки(СтрокаПодписи); - - Возврат СтрокаПодписи; - -КонецФункции - -Функция ПолучитьСтрокуКлючейЗаголовков() - - СписокЗаголовков = Новый СписокЗначений; - - Для Каждого Заголовок Из Запрос.Заголовки Цикл - - ТекущийКлюч = Заголовок.Ключ; - ТекущийКлючН = нРег(ТекущийКлюч); - - Если Не СтрНачинаетсяС(ТекущийКлючН, "host") И Не СтрНачинаетсяС(ТекущийКлючН, "x-amz") Тогда - Продолжить; - КонецЕсли; - - СтрокаЗаголовка = нРег(ТекущийКлюч); - СписокЗаголовков.Добавить(СтрокаЗаголовка); - - КонецЦикла; - - СписокЗаголовков.СортироватьПоЗначению(); - - СтрокаЗаголовков = СтрСоединить(СписокЗаголовков.ВыгрузитьЗначения(), ";"); - - Возврат СтрокаЗаголовков; - -КонецФункции - -Функция ПолучитьСтрокуURI() - - URI = Запрос.АдресРесурса; - URI = ?(СтрНачинаетсяС(URI, "/"), URI, "/" + URI); - - НачалоПараметров = СтрНайти(URI, "?"); - - Если НачалоПараметров <> 0 Тогда - URI = Лев(URI, НачалоПараметров - 1); - КонецЕсли; - - Возврат URI; - -КонецФункции - -Функция ПолучитьСтрокуПараметров() - - URI = Запрос.АдресРесурса; - НачалоПараметров = СтрНайти(URI, "?"); - - Если НачалоПараметров = 0 Тогда - - СтрокаПараметров = ""; - - Иначе - - ДлинаURI = СтрДлина(URI); - СтрокаПараметров = Прав(URI, ДлинаURI - НачалоПараметров); - ОбработатьСтрокуПараметровЗапроса(СтрокаПараметров); - - КонецЕсли; - - Возврат СтрокаПараметров; - -КонецФункции - -Функция ПолучитьСтрокуЗаголовков() - - СписокЗаголовков = Новый СписокЗначений; - - Для Каждого Заголовок Из Запрос.Заголовки Цикл - - ТекущийКлюч = Заголовок.Ключ; - ТекущийКлючН = нРег(ТекущийКлюч); - - Если Не СтрНачинаетсяС(ТекущийКлючН, "host") И Не СтрНачинаетсяС(ТекущийКлючН, "x-amz") Тогда - Продолжить; - КонецЕсли; - - СтрокаЗаголовка = нРег(ТекущийКлюч) + ":" + Заголовок.Значение; - СписокЗаголовков.Добавить(СтрокаЗаголовка); - - КонецЦикла; - - СписокЗаголовков.СортироватьПоЗначению(); - - СтрокаЗаголовков = СтрСоединить(СписокЗаголовков.ВыгрузитьЗначения(), Символы.ПС); - СтрокаЗаголовков = СтрокаЗаголовков + Символы.ПС; - - Возврат СтрокаЗаголовков; - -КонецФункции - -Процедура ОбработатьСтрокуПараметровЗапроса(СтрокаПараметров) - - МассивПараметров = СтрРазделить(СтрокаПараметров, "&"); - СписокПараметров = Новый СписокЗначений(); - СписокПараметров.ЗагрузитьЗначения(МассивПараметров); - - СписокПараметров.СортироватьПоЗначению(); - МассивПараметров = СписокПараметров.ВыгрузитьЗначения(); - - Для Н = 0 По МассивПараметров.ВГраница() Цикл - - ПараметрЗапроса = МассивПараметров[Н]; - - Если СтрНайти(ПараметрЗапроса, "=") = 0 Тогда - МассивПараметров[Н] = ПараметрЗапроса + "="; - КонецЕсли; - - КонецЦикла; - - СтрокаПараметров = СтрСоединить(МассивПараметров, "&"); - -КонецПроцедуры - -#КонецОбласти - -#Область OAuth - -Функция ДобавитьЗаголовокOAuthV1() - - ДобавитьЛог("ДобавитьЗаголовокOAuthV1: начало формирования заголовка"); - - OAuthАлгоритм = AuthДанные["OAuthАлгоритм"]; - OAuthХешФункция = AuthДанные["OAuthХешФункция"]; - OAuthToken = AuthДанные["OAuthToken"]; - OAuthSecret = AuthДанные["OAuthSecret"]; - OAuthConsumerKey = AuthДанные["OAuthConsumerKey"]; - OAuthConsumerSecret = AuthДанные["OAuthConsumerSecret"]; - OAuthВерсияAPI = AuthДанные["OAuthВерсияAPI"]; - - МетодХэширования = OAuthАлгоритм + "-" + OAuthХешФункция; - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - ЗаголовокАвторизации = ""; - СтрокаСигнатуры = ""; - Подпись = ""; - - ТекущаяДатаUNIX = OPI_Инструменты.UNIXTime(ТекущаяДата); - ТекущаяДатаUNIX = OPI_Инструменты.ЧислоВСтроку(ТекущаяДатаUNIX); - - ТаблицаПараметров = Новый ТаблицаЗначений; - ТаблицаПараметров.Колонки.Добавить("Ключ"); - ТаблицаПараметров.Колонки.Добавить("Значение"); - - Если ПолучитьНастройку("ПоляТелаВOAuth") Тогда - - ДобавитьЛог("ДобавитьЗаголовокOAuthV1: добавление полей тела в строку для подписи"); - - Для Каждого Поле Из ЗапросТелоКоллекция Цикл - - ТекущееЗначение = Поле.Значение; - - Если ТипЗнч(ТекущееЗначение) = Тип("ДвоичныеДанные") Тогда - Продолжить; - Иначе - OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущееЗначение); - КонецЕсли; - - НоваяСтрока = ТаблицаПараметров.Добавить(); - НоваяСтрока.Ключ = Поле.Ключ; - НоваяСтрока.Значение = ТекущееЗначение; - - КонецЦикла; - КонецЕсли; - - Если ЗначениеЗаполнено(ЗапросПараметрыURL) Тогда - - ДобавитьЛог("ДобавитьЗаголовокOAuthV1: добавление параметров URL в строку для подписи"); - - Для Каждого ПараметрURL Из ЗапросПараметрыURL Цикл - - НоваяСтрока = ТаблицаПараметров.Добавить(); - НоваяСтрока.Ключ = ПараметрURL.Ключ; - НоваяСтрока.Значение = ПараметрURL.Значение; - - КонецЦикла; - - КонецЕсли; - - ДобавитьЛог("ДобавитьЗаголовокOAuthV1: дополнение строки для подписи учетными данными"); - - НоваяСтрока = ТаблицаПараметров.Добавить(); - НоваяСтрока.Ключ = "oauth_consumer_key"; - НоваяСтрока.Значение = OAuthConsumerKey; - - НоваяСтрока = ТаблицаПараметров.Добавить(); - НоваяСтрока.Ключ = "oauth_token"; - НоваяСтрока.Значение = OAuthToken; - - НоваяСтрока = ТаблицаПараметров.Добавить(); - НоваяСтрока.Ключ = "oauth_version"; - НоваяСтрока.Значение = OAuthВерсияAPI; - - НоваяСтрока = ТаблицаПараметров.Добавить(); - НоваяСтрока.Ключ = "oauth_signature_method"; - НоваяСтрока.Значение = МетодХэширования; - - НоваяСтрока = ТаблицаПараметров.Добавить(); - НоваяСтрока.Ключ = "oauth_timestamp"; - НоваяСтрока.Значение = ТекущаяДатаUNIX; - - НоваяСтрока = ТаблицаПараметров.Добавить(); - НоваяСтрока.Ключ = "oauth_nonce"; - НоваяСтрока.Значение = ТекущаяДатаUNIX; - - Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл - - СтрокаТаблицы.Ключ = КодироватьСтроку(СтрокаТаблицы.Ключ, СпособКодированияСтроки.КодировкаURL); - СтрокаТаблицы.Значение = КодироватьСтроку(СтрокаТаблицы.Значение, СпособКодированияСтроки.КодировкаURL); - - КонецЦикла; - - ТаблицаПараметров.Сортировать("Ключ"); - - Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл - - СтрокаСигнатуры = СтрокаСигнатуры - + СтрокаТаблицы.Ключ - - + "=" - + СтрокаТаблицы.Значение - + "&"; - - КонецЦикла; - - СтрокаСигнатуры = Лев(СтрокаСигнатуры, СтрДлина(СтрокаСигнатуры) - 1); - СтрокаСигнатуры = вРег(ЗапросМетод) - + "&" - + КодироватьСтроку(ЗапросURL , СпособКодированияСтроки.КодировкаURL) - + "&" - + КодироватьСтроку(СтрокаСигнатуры, СпособКодированияСтроки.КодировкаURL); - - Подпись = КодироватьСтроку(OAuthConsumerSecret, СпособКодированияСтроки.КодировкаURL) - + "&" - + КодироватьСтроку(OAuthSecret, СпособКодированияСтроки.КодировкаURL); - - ПодписьДД = ПолучитьДвоичныеДанныеИзСтроки(Подпись); - СигнатураДД = ПолучитьДвоичныеДанныеИзСтроки(СтрокаСигнатуры); - - ДобавитьЛог("ДобавитьЗаголовокOAuthV1: создание подписи"); - - Сигнатура = OPI_Криптография.СоздатьПодпись(ПодписьДД, СигнатураДД, OAuthАлгоритм, OAuthХешФункция); - Сигнатура = КодироватьСтроку(Base64Строка(Сигнатура), СпособКодированияСтроки.КодировкаURL); - - Разделитель = ""","; - - ДобавитьЛог("ДобавитьЗаголовокOAuthV1: создание заголовка авторизации"); - - ЗаголовокАвторизации = ЗаголовокАвторизации - + "OAuth " - + "oauth_consumer_key=""" + OAuthConsumerKey + Разделитель - - + "oauth_token=""" + OAuthToken + Разделитель - - + "oauth_signature_method=""" + МетодХэширования + Разделитель - - + "oauth_timestamp=""" + ТекущаяДатаUNIX + Разделитель - - + "oauth_nonce=""" + ТекущаяДатаUNIX + Разделитель - - + "oauth_version=""" + OAuthВерсияAPI + Разделитель - - + "oauth_signature=" + Сигнатура; - - Запрос.Заголовки.Вставить("Authorization", ЗаголовокАвторизации); - - Возврат ЭтотОбъект; - -КонецФункции - -#КонецОбласти - -#Область Вспомогательные - -Функция ОстановитьРаботу(Знач ИсключениеПриОшибке = Ложь) - - OPI_ПреобразованиеТипов.ПолучитьБулево(ИсключениеПриОшибке); - - ЕстьОшибка = ЗапросИнициализирован().Ошибка; - - Если ЕстьОшибка И ИсключениеПриОшибке Тогда - ВызватьИсключение ПолучитьЛог(Истина); - Иначе - Возврат ЕстьОшибка; - КонецЕсли; - -КонецФункции - -Функция ЗапросИнициализирован() - - Возврат ?(ЗначениеЗаполнено(Инициализирован) - , ЭтотОбъект - , Ошибка("Запрос не инициализирован. Необходимо вызвать функцию Инициализировать() перед началом работы")); - -КонецФункции - -Функция Ошибка(Знач ТекстОшибки) - - Ошибка = Истина; - - Если ФайлТелаВременный И ЗначениеЗаполнено(ЗапросФайлТела) Тогда - - Попытка - УдалитьФайлы(ЗапросФайлТела); - ЗапросФайлТела = Неопределено; - ФайлТелаВременный = Ложь; - Исключение - ДобавитьЛог("Ошибка: Не удалось удалить временный файл при исключении"); - КонецПопытки; - - КонецЕсли; - - Возврат ДобавитьЛог(ТекстОшибки); - -КонецФункции - -Функция ДобавитьЛог(Знач Текст) - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); - - Лог.Добавить(Текст); - - OPI_Инструменты.ОтладочнаяИнформация(Текст); - - Возврат ЭтотОбъект; - -КонецФункции - -Функция ПолучитьНастройку(Знач КлючНастройки) - Возврат Настройки[КлючНастройки]; -КонецФункции - -Процедура УстановитьНастройку(Знач КлючНастройки, Знач Значение) - Настройки[КлючНастройки] = Значение; -КонецПроцедуры - -Процедура УстановитьСтандартныеНастройки() - - ДобавитьЛог("УстановитьСтандартныеНастройки: установка настроек"); - - Настройки = Новый Структура; - Настройки.Вставить("gzip" , Истина); - Настройки.Вставить("ОтдельныеЭлементыМассивов", Ложь); - Настройки.Вставить("КвадратныеСкобкиМассивов" , Ложь); - Настройки.Вставить("КодировкаURL" , Истина); - Настройки.Вставить("КодировкаТелаЗапроса" , "UTF-8"); - Настройки.Вставить("ПоляТелаВOAuth" , Ложь); - -КонецПроцедуры - -Процедура КодироватьURLВURL(URL) Экспорт - - Заглушка = СтрШаблон("@#%1#@", Строка(Новый УникальныйИдентификатор)); - - URL = СтрЗаменить(URL, "&" , Заглушка); - URL = КодироватьСтроку(URL, СпособКодированияСтроки.URLВКодировкеURL); - URL = СтрЗаменить(URL, Заглушка, "&"); - -КонецПроцедуры - -Процедура ГарантироватьТелоКоллекцию() - - Если Не ЗначениеЗаполнено(ЗапросТелоКоллекция) - Или Не OPI_Инструменты.ЭтоКоллекция(ЗапросТелоКоллекция, Истина) Тогда - - Попытка - ЗапросТелоКоллекция = ЗапросТело; - OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ЗапросТелоКоллекция); - Исключение - ЗапросТелоКоллекция = Новый Структура; - КонецПопытки; - - ЗапросТелоКоллекция = ?(ЗначениеЗаполнено(ЗапросТелоКоллекция), ЗапросТелоКоллекция, Новый Структура); - - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -// #КонецЕсли - - -#Region Alternate - -Function Initialize(Val URL = "") Export - Return Инициализировать(URL); -EndFunction - -Function SetURL(Val URL) Export - Return УстановитьURL(URL); -EndFunction - -Function SetURLParams(Val Value) Export - Return УстановитьПараметрыURL(Value); -EndFunction - -Function SetResponseFile(Val Value) Export - Return УстановитьФайлОтвета(Value); -EndFunction - -Function SetDataType(Val Value) Export - Return УстановитьТипДанных(Value); -EndFunction - -Function SetProxy(Val Settings) Export - Return УстановитьПрокси(Settings); -EndFunction - -Function GetLog(Val AsString = False) Export - Return ПолучитьЛог(AsString); -EndFunction - -Function UseEncoding(Val Encoding) Export - Return ИспользоватьКодировку(Encoding); -EndFunction - -Function UseGzipCompression(Val Flag) Export - Return ИспользоватьСжатиеGzip(Flag); -EndFunction - -Function UseBodyFiledsAtOAuth(Val Flag) Export - Return ИспользоватьПоляТелаВOAuth(Flag); -EndFunction - -Function UseURLEncoding(Val Flag) Export - Return ИспользоватьКодированиеURL(Flag); -EndFunction - -Function SplitArraysInURL(Val Flag, Val SquareBrackets = Undefined) Export - Return РазделятьМассивыВURL(Flag, SquareBrackets); -EndFunction - -Function SetBinaryBody(Val Data, Val SetIfEmpty = False) Export - Return УстановитьДвоичноеТело(Data, SetIfEmpty); -EndFunction - -Function SetStringBody(Val Data, Val WriteBOM = False) Export - Return УстановитьСтроковоеТело(Data, WriteBOM); -EndFunction - -Function SetJsonBody(Val Data) Export - Return УстановитьJsonТело(Data); -EndFunction - -Function SetFormBody(Val Data) Export - Return УстановитьFormТело(Data); -EndFunction - -Function StartMultipartBody(UseFile = True, Val View = "form-data") Export - Return НачатьЗаписьТелаMultipart(UseFile, View); -EndFunction - -Function AddMultipartFormDataFile(Val FieldName, Val FileName, Val Data, Val DataType = "") Export - Return ДобавитьФайлMultipartFormData(FieldName, FileName, Data, DataType); -EndFunction - -Function AddMultipartFormDataField(Val FieldName, Val Value) Export - Return ДобавитьПолеMultipartFormData(FieldName, Value); -EndFunction - -Function AddDataAsRelated(Val Data, Val DataType, Val ContentID = "") Export - Return ДобавитьДанныеRelated(Data, DataType, ContentID); -EndFunction - -Function SetHeaders(Val Value, Val FullReplace = False) Export - Return УстановитьЗаголовки(Value, FullReplace); -EndFunction - -Function AddHeader(Val Name, Val Value) Export - Return ДобавитьЗаголовок(Name, Value); -EndFunction - -Function AddBasicAuthorization(Val User, Val Password) Export - Return ДобавитьBasicАвторизацию(User, Password); -EndFunction - -Function AddBearerAuthorization(Val Token) Export - Return ДобавитьBearerАвторизацию(Token); -EndFunction - -Function AddAWS4Authorization(Val AccessKey, Val SecretKey, Val Region, Val Service = "s3") Export - Return ДобавитьAWS4Авторизацию(AccessKey, SecretKey, Region, Service); -EndFunction - -Function AddOAuthV1Authorization(Val Token, Val Secret, Val ConsumerKey, Val ConsumerSecret, Val Version) Export - Return ДобавитьOAuthV1Авторизацию(Token, Secret, ConsumerKey, ConsumerSecret, Version); -EndFunction - -Function SetOAuthV1Algorithm(Val Algorithm, Val HashFunction) Export - Return УстановитьАлгоритмOAuthV1(Algorithm, HashFunction); -EndFunction - -Function ProcessRequest(Val Method, Val Start = True) Export - Return ОбработатьЗапрос(Method, Start); -EndFunction - -Function ExecuteRequest(Forced = False) Export - Return ВыполнитьЗапрос(Forced); -EndFunction - -Function ReturnRequest(Forced = False) Export - Return ВернутьЗапрос(Forced); -EndFunction - -Function ReturnConnection(Forced = False) Export - Return ВернутьСоединение(Forced); -EndFunction - -Function ReturnResponse(Val Forced = False, Val ExceptionOnError = False) Export - Return ВернутьОтвет(Forced, ExceptionOnError); -EndFunction - -Function ReturnResponseAsJSONObject(Val ToMap = True, Val ExceptionOnError = False) Export - Return ВернутьОтветКакJSONКоллекцию(ToMap, ExceptionOnError); -EndFunction - -Function ReturnResponseAsBinaryData(Val Forced = False, Val ExceptionOnError = False) Export - Return ВернутьОтветКакДвоичныеДанные(Forced, ExceptionOnError); -EndFunction - -Function ReturnResponseAsString(Val Forced = False, Val ExceptionOnError = False) Export - Return ВернутьОтветКакСтроку(Forced, ExceptionOnError); -EndFunction - -Function ReturnResponseFilename(Val Forced = False, Val ExceptionOnError = False) Export - Return ВернутьИмяФайлаТелаОтвета(Forced, ExceptionOnError); -EndFunction - -Procedure EncodeURLInURL(URL) Export - КодироватьURLВURL(URL); -EndProcedure - -#EndRegion \ No newline at end of file +// OneScript: ./OInt/tools/Modules/internal/Classes/OPI_HTTPКлиент.os +// Lib: HTTP-клиент +// CLI: none + +// MIT License + +// Copyright (c) 2023-2025 Anton Tsitavets + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// https://github.com/Bayselonarrend/OpenIntegrations + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:UsingServiceTag-off +// BSLLS:LineLength-off +// BSLLS:ExportVariables-off +// BSLLS:OneStatementPerLine-off + +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check wrong-string-literal-content +//@skip-check method-too-many-params +//@skip-check constructor-function-return-section +//@skip-check doc-comment-collection-item-type +//@skip-check object-module-export-variable + +// #Если Не Клиент Тогда + +#Область ОписаниеПеременных + +// Обработка + +Перем Инициализирован; // Признак, что обязательная функция Инициализировать() была вызвана +Перем Ошибка Экспорт; // Признак ошибки выполнения для пропуска оставшихся действий в цепочке +Перем Лог; // Массив сообщений о действиях внутри обработки + +// Запрос + +Перем Запрос; // Объект HTTPЗапрос +Перем Соединение; // Объект HTTPСоединение +Перем Настройки; // Структура дополнительных настроек + +Перем ЗапросURL; // URL запроса +Перем ЗапросСервер; // Сервер из URL запроса +Перем ЗапросПорт; // Порт из URL запроса или по умолчанию +Перем ЗапросАдрес; // Путь из URL запроса +Перем ЗапросАдресПолный; // Путь с параметрами и секцией из URL запроса +Перем ЗапросСекция; // Секция в URL, если присутствует +Перем ЗапросЗащищенное; // Признак использования HTTPS +Перем ЗапросДомен; // Домен из URL запроса + +Перем ЗапросМетод; // Используемый метод HTTP +Перем ЗапросПараметрыURL; // Структура параметров URL +Перем ЗапросТело; // Данные тела запроса +Перем ЗапросТелоКоллекция; // Данные тела в виде коллекции, если возможно +Перем ЗапросЗаголовки; // Соответствие заголовков запроса +Перем ЗапросПользователь; // Пользователь для базовой авторизации +Перем ЗапросПароль; // Пароль для базовой авторизации +Перем ЗапросТаймаут; // Таймаут запроса +Перем ЗапросПрокси; // Настройки прокси запроса +Перем ЗапросВыходнойФайл; // Путь к файлу для сохранения результата запроса +Перем ЗапросФайлТела; // Путь к файлу с телом запроса +Перем ЗапросПотокТела; // Поток тела запроса +Перем ЗапросЗаписьДанных; // Запись данных тела запроса +Перем ЗапросТипДанных; // MIME тип для Content-Type +Перем ЗапросТипУстановленВручную; // Признак отключения автоматического определения Content-Type +Перем ФайлТелаВременный; // Признак удаления файла тела, если он был создан автоматически + +// Авторизация + +Перем AuthВид; // Вид авторизации +Перем AuthДанные; // Структура учетных данных + +// Ответ + +Перем Ответ; // Объект HTTPОтвет +Перем ОтветКодСостояния; // Код состояния ответа +Перем ОтветТело; // Данные тела ответа +Перем ОтветЗаголовки; // Соответствие заголовков ответа + +// Multipart + +Перем Multipart; // Признак установки тела в формате Multipart +Перем Boundary; // Boundary для разделения частей тела +Перем РазделительСтрок; // Разделитель строк тела + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#Область Инициализация + +// Инициализировать !NOCLI +// Инициализирует новый пустой запрос +// +// Примечание: +// Функция обязательная для вызова первой при создании нового объекта обработки +// URL может быть установлен позднее при помощи функции `УстановитьURL` +// +// Параметры: +// URL - Строка - URL адрес для запроса - url +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция Инициализировать(Знач URL = "") Экспорт + + Лог = Новый Массив; + + ДобавитьЛог("Инициализировать: установка стандартных значений"); + + Инициализирован = Истина; + Ошибка = Ложь; + + ЗапросПараметрыURL = Новый Структура; + ЗапросТело = Неопределено; + ЗапросТелоКоллекция = Новый Структура; + ЗапросЗаголовки = Новый Соответствие; + ЗапросТаймаут = 3600; + + ЗапросТипУстановленВручную = Ложь; + + ФайлТелаВременный = Ложь; + + ОтветКодСостояния = 0; + ОтветТело = Неопределено; + ОтветЗаголовки = Новый Соответствие; + + Multipart = Ложь; + + УстановитьСтандартныеНастройки(); + УстановитьURL(URL); + + Возврат ЭтотОбъект; + +КонецФункции + +// Установить URL !NOCLI +// Устанавливает новый URL запроса +// +// Параметры: +// URL - Строка - URL запроса - url +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьURL(Знач URL) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + Если ЗначениеЗаполнено(URL) Тогда + + ДобавитьЛог("УстановитьURL: установка значения"); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); + OPI_Инструменты.ВернутьУправляющиеПоследовательности(URL); + + Если ПолучитьНастройку("КодировкаURL") Тогда + КодироватьURLВURL(URL); + КонецЕсли; + + ЗапросURL = URL; + + Иначе + + ДобавитьЛог("УстановитьURL: URL пуст - пропуск"); + + КонецЕсли; + + Возврат РазбитьURL(); + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Установить параметры URL !NOCLI +// Устанавливает коллекцию параметров URL +// +// Параметры: +// Значение - Произвольный - Стрктура или соответствие параметров URL - params +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьПараметрыURL(Знач Значение) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Структура; КонецЕсли; + + ДобавитьЛог("УстановитьПараметрыURL: установка параметров"); + + ТекстОшибки = "УстановитьПараметрыURL: переданные параметры не являются коллекцией ключ/значение"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки); + + ЗапросПараметрыURL = OPI_Инструменты.КопироватьКоллекцию(Значение); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Установить файл ответа !NOCLI +// Устанавливает путь к файлу для сохранения результата запроса +// +// Параметры: +// Значение - Строка - Путь к файлу - filepath +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьФайлОтвета(Знач Значение) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + Если Не ЗначениеЗаполнено(Значение) Тогда + ЗапросВыходнойФайл = Неопределено; + ДобавитьЛог("УстановитьФайлОтвета: файл ответа не указан - пропуск"); + Возврат ЭтотОбъект; + КонецЕсли; + + ДобавитьЛог("УстановитьФайлОтвета: установка значения"); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); + ЗапросВыходнойФайл = Значение; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Установить тип данных !NOCLI +// Устанавливает Content-Type запроса +// +// Примечание: +// Если тип данных не установлен вручную, то он будет подобран в процессе установки тела запроса +// +// Параметры: +// Значение - Строка - Значение заголовка ContentType - type +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьТипДанных(Знач Значение) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ДобавитьЛог("УстановитьТипДанных: установка значения"); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); + + ЗапросТипДанных = Значение; + ЗапросТипУстановленВручную = Истина; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Установить прокси !NOCLI +// Устанавливает настройки прокси для соединения +// +// Параметры: +// Настройки - ИнтернетПрокси - Настройки прокси - proxy +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьПрокси(Знач Настройки) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + Если ТипЗнч(Настройки) = Тип("ИнтернетПрокси") Тогда + + ДобавитьЛог("УстановитьПрокси: установка значения"); + ЗапросПрокси = Настройки; + + Иначе + Ошибка("УстановитьПрокси: переданные настройки не являются объектом типа ИнтернетПрокси"); + КонецЕсли; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Получить лог !NOCLI +// Получает лог выполнения +// +// Параметры: +// Строкой - Булево - Возврат лога в виде строки - string +// +// Возвращаемое значение: +// Строка, Массив - Лог выполнения +Функция ПолучитьЛог(Знач Строкой = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Строкой); + + Если Не ЗначениеЗаполнено(Лог) Тогда + Возврат ?(Строкой, "" , Новый Массив); + Иначе + Возврат ?(Строкой, СтрСоединить(Лог, Символы.ПС), Лог); + КонецЕсли; + +КонецФункции + +#КонецОбласти + +#Область Настройки + +// Использовать кодировку !NOCLI +// Устанавливает кодировку тела запроса +// +// Примечание: +// По умолчанию используется UTF-8 +// +// Параметры: +// Кодировка - Строка - Название кодировки - enc +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ИспользоватьКодировку(Знач Кодировка) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ДобавитьЛог("ИспользоватьКодировку: установка значения"); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка); + + УстановитьНастройку("КодировкаТелаЗапроса", Кодировка); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Использовать сжатие gzip !NOCLI +// Включает или отключает заголовок получения данных от сервера в сжатом виде +// +// Примечание: +// По умлчанию ответ от сервера запрашивается со сжатием gzip +// +// Параметры: +// Флаг - Булево - Признак использования gzip - gzip +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ИспользоватьСжатиеGzip(Знач Флаг) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ДобавитьЛог("ИспользоватьСжатиеGzip: установка значения"); + OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг); + + УстановитьНастройку("gzip", Флаг); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Использовать поля тела в OAuth !NOCLI +// Включает или исключает поля тела при расчете подписи OAuth в зависимости от требований сервера +// +// Примечание: +// По умолчанию данные тела используются при расчете подписи, если оно было установлено при помощи функции `УстановитьFormТело` +// +// Параметры: +// Флаг - Булево - Признак использования полей тела в расчете подписи OAuth - use +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ИспользоватьПоляТелаВOAuth(Знач Флаг) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ДобавитьЛог("ИспользоватьПоляТелаВOAuth: установка значения"); + OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг); + + УстановитьНастройку("ПоляТелаВOAuth", Флаг); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Использовать кодирование URL !NOCLI +// Включает или отключает стандартное кодирование спец. символов в URL +// +// Примечание: +// По умолчанию кодирование URL включено +// +// Параметры: +// Флаг - Булево - Признак использования кодирования URL - enc +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ИспользоватьКодированиеURL(Знач Флаг) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ДобавитьЛог("ИспользоватьКодированиеURL: установка значения"); + OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг); + + УстановитьНастройку("КодировкаURL", Флаг); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Разделять массивы в URL !NOCLI +// Определяет представление массивов в параметрах URL: как цельный JSON массив или отдельные параметры для каждого элемента +// +// Примечание: +// По умолчанию массивы интерпретируются как единый параметр с JSON массивом в значении +// По умолчанию квадратные скобки к ключам параметров при разделении массива не устанавливаются +// +// Параметры: +// Флаг - Булево - Признак деления массива на отдельные параметры URL - split +// КвадратныеСкобки - Булево - Добавлять к ключам пустые скобки в стиле PHP (key[]=value), если Флаг = Истина - php +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция РазделятьМассивыВURL(Знач Флаг, Знач КвадратныеСкобки = Неопределено) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ДобавитьЛог("РазделятьМассивыВURL: установка значения"); + OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг); + + Если КвадратныеСкобки <> Неопределено Тогда + + ДобавитьЛог("РазделятьМассивыВURL: установка настройки использованя квадратных скобок"); + OPI_ПреобразованиеТипов.ПолучитьБулево(КвадратныеСкобки); + + УстановитьНастройку("КвадратныеСкобкиМассивов", КвадратныеСкобки); + + КонецЕсли; + + УстановитьНастройку("ОтдельныеЭлементыМассивов", Флаг); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +#КонецОбласти + +#Область УстановкаТела + +// Установить двоичное тело !NOCLI +// Устанавливает тело запрос из двоичных данных, файла или строки (с преобразованием в двоичные данные) +// +// Параметры: +// Данные - Строка, ДвоичныеДанные - Файл, строка или данные тела запроса - data +// УстанавливатьПустое - Булево - Устанавливает тело даже при передаче пустых данных - empty +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьДвоичноеТело(Знач Данные, Знач УстанавливатьПустое = Ложь) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ОтменитьЗаписьMultipart(); + + Если Не ЗапросТипУстановленВручную Тогда + ЗапросТипДанных = "application/octet-stream"; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь); + OPI_ПреобразованиеТипов.ПолучитьБулево(УстанавливатьПустое); + + Данные = ?(Данные = Неопределено, ПолучитьДвоичныеДанныеИзСтроки(""), Данные); + ЕстьДанные = Данные.Размер() > 0; + + Если ЕстьДанные Или УстанавливатьПустое Тогда + + Если Не ЕстьДанные Тогда + Данные = ПолучитьДвоичныеДанныеИзСтроки(""); + КонецЕсли; + + ДобавитьЛог("УстановитьДвоичноеТело: начало установки тела"); + УстановитьТелоИзДвоичныхДанных(Данные); + ДобавитьЛог(СтрШаблон("УстановитьДвоичноеТело: тело установлено, размер %1", ЗапросТело.Размер())); + + Иначе + ДобавитьЛог("УстановитьДвоичноеТело: передано пустое тело - пропуск"); + КонецЕсли; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Установить строковое тело !NOCLI +// Устанавливает тело запроса из строки +// +// Параметры: +// Данные - Строка - Данные тела запроса - data +// ЗаписатьBOM - Булево - Истина > BOM будет добавлен - bom +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьСтроковоеТело(Знач Данные, Знач ЗаписатьBOM = Ложь) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ОтменитьЗаписьMultipart(); + + Если Не ЗначениеЗаполнено(Данные) Тогда + ДобавитьЛог("УстановитьСтроковоеТело: нет данных - пропуск"); + Возврат ЭтотОбъект; + КонецЕсли; + + Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса"); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка); + + Если Не ЗапросТипУстановленВручную Тогда + ЗапросТипДанных = СтрШаблон("text/plain; charset=%1", Кодировка); + КонецЕсли; + + ДобавитьЛог("УстановитьСтроковоеТело: начало установки тела"); + УстановитьТелоИзСтроки(Данные, ЗаписатьBOM); + ДобавитьЛог(СтрШаблон("УстановитьСтроковоеТело: тело установлено, размер %1", ЗапросТело.Размер())); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Установить JSON тело !NOCLI +// Устанавливает тело в формате JSON из подходящей коллекции или строки +// +// Параметры: +// Данные - Произвольный - Строка или коллекция для преобразования в JSON - data +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьJsonТело(Знач Данные) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ОтменитьЗаписьMultipart(); + + Если Не ЗначениеЗаполнено(Данные) Тогда + ДобавитьЛог("УстановитьJsonТело: нет данных - пропуск"); + Возврат ЭтотОбъект; + КонецЕсли; + + Если Не ЗапросТипУстановленВручную Тогда + ЗапросТипДанных = "application/json; charset=utf-8"; + КонецЕсли; + + ДобавитьЛог("УстановитьJsonТело: начало установки тела"); + + Если Не ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные); + + Если Не ТипЗнч(Данные) = Тип("Массив") Тогда + ЗапросТелоКоллекция = OPI_Инструменты.КопироватьКоллекцию(Данные); + КонецЕсли; + + КонецЕсли; + + УстановитьТелоИзСтроки(Данные); + + ДобавитьЛог(СтрШаблон("УстановитьJsonТело: тело установлено, размер %1", ЗапросТело.Размер())); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Установить Form тело !NOCLI +// Устанавливает тело в формате x-www-form-urlencoded из коллекции значений полей +// +// Параметры: +// Данные - Произвольный - Коллекция КлючЗначение с параметрами формы - data +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Установить form тело +Функция УстановитьFormТело(Знач Данные) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ОтменитьЗаписьMultipart(); + + Если Не ЗначениеЗаполнено(Данные) Тогда + ДобавитьЛог("УстановитьFormТело: нет данных - пропуск"); + Возврат ЭтотОбъект; + КонецЕсли; + + Если Не ЗапросТипУстановленВручную Тогда + ЗапросТипДанных = "application/x-www-form-urlencoded; charset=utf-8"; + КонецЕсли; + + ДобавитьЛог("УстановитьFormТело: начало установки тела"); + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные); + + Если ТипЗнч(Данные) = Тип("Массив") Тогда + + Данные = Данные[0]; + + Если Не ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда + OPI_ПреобразованиеТипов.ПолучитьСтроку(Данные); + КонецЕсли; + + Иначе + + ЗапросТелоКоллекция = OPI_Инструменты.КопироватьКоллекцию(Данные); + Данные = ПараметрыЗапросаВСтроку(Данные); + + КонецЕсли; + + УстановитьТелоИзСтроки(Данные); + УстановитьНастройку("ПоляТелаВOAuth", Истина); + + ДобавитьЛог(СтрШаблон("УстановитьFormТело: тело установлено, размер %1", ЗапросТело.Размер())); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Начать запись тела multipart !NOCLI +// Инициализирует запись данных в тело в формате multipart +// +// Примечание: +// Для дальнейшего формирования тела используются методы `ДобавитьФайлMultipart` и `ДобавитьПолеMultipart` +// +// Параметры: +// ИспользоватьФайл - Булево - Истина > использовать временный файл, Ложь > формирует тело в памяти - file +// Вид - Строка - Вид multipart загрузки: form data, related - type +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция НачатьЗаписьТелаMultipart(ИспользоватьФайл = Истина, Знач Вид = "form-data") Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьБулево(ИспользоватьФайл); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Вид); + + Multipart = Истина; + Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""); + РазделительСтрок = Символы.ВК + Символы.ПС; + Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса"); + ЗапросТипДанных = СтрШаблон("multipart/%1; boundary=%2", Вид, Boundary); + + ЗапросТелоКоллекция = Новый Структура; + + Если ИспользоватьФайл Тогда + + ДобавитьЛог("НачатьЗаписьТелаMultipart: создание временного файла"); + + // BSLLS:MissingTemporaryFileDeletion-off + ЗапросФайлТела = ПолучитьИмяВременногоФайла(); + // BSLLS:MissingTemporaryFileDeletion-on + + ФайлТелаВременный = Истина; + ЗапросЗаписьДанных = Новый ЗаписьДанных(ЗапросФайлТела + , Кодировка + , ПорядокБайтов.LittleEndian + , "" + , Ложь + , "" + , Ложь); + + Иначе + + ДобавитьЛог("НачатьЗаписьТелаMultipart: создание потока в памяти"); + + ЗапросПотокТела = Новый ПотокВПамяти(); + + ЗапросЗаписьДанных = Новый ЗаписьДанных(ЗапросПотокТела + , Кодировка + , ПорядокБайтов.LittleEndian + , "" + , "" + , Ложь); + + КонецЕсли; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Добавить файл multipart !NOCLI +// Добавляет блок файла в multipart/form-data тело +// +// Примечание: +// Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart` +// +// Параметры: +// ИмяПоля - Строка - Имя поля формы - field +// ИмяФайла - Строка - Имя файла с расширением - filename +// Данные - ДвоичныеДанные, Строка - Данные файла для записи - data +// ТипДанных - Строка - Mime тип записываемых данных - mime +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ДобавитьФайлMultipartFormData(Знач ИмяПоля, Знач ИмяФайла, Знач Данные, Знач ТипДанных = "") Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + Если Не Multipart Тогда Возврат Ошибка("ДобавитьФайлMultipart: не инициализирована запись Multipart"); КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные); + + ДобавитьЛог("ДобавитьФайлMultipart: запись шапки блока"); + + Шапка = СтрШаблон("Content-Disposition: form-data; name=""%1""; filename=""%2""", ИмяПоля, ИмяФайла); + + ЗапросЗаписьДанных.ЗаписатьСтроку("--" + Boundary + РазделительСтрок); + ЗапросЗаписьДанных.ЗаписатьСтроку(Шапка); + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + + Если ЗначениеЗаполнено(ТипДанных) Тогда + ЗапросЗаписьДанных.ЗаписатьСтроку("Content-Type: " + ТипДанных); + КонецЕсли; + + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + + ДобавитьЛог("ДобавитьФайлMultipart: запись данных"); + + ЗаписатьДвоичныеДанные(ЗапросЗаписьДанных, Данные); + + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Добавить поле multipart !NOCLI +// Добавляет поле формы в multipart/form-data тело +// +// Примечание: +// Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart` +// +// Параметры: +// ИмяПоля - Строка - Имя поля формы - field +// Значение - Произвольный - Значение поля - data +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ДобавитьПолеMultipartFormData(Знач ИмяПоля, Знач Значение) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + Если Не Multipart Тогда Возврат Ошибка("ДобавитьПолеMultipart: не инициализирована запись Multipart"); КонецЕсли; + + ТипЗначения = ТипЗнч(Значение); + + ДобавитьЛог("ДобавитьПолеMultipart: запись шапки блока"); + + Шапка = СтрШаблон("Content-Disposition: form-data; name=""%1""", ИмяПоля); + + ЗапросЗаписьДанных.ЗаписатьСтроку("--" + boundary + РазделительСтрок); + ЗапросЗаписьДанных.ЗаписатьСтроку(Шапка); + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + + ДобавитьЛог("ДобавитьПолеMultipart: запись данных"); + + Если ТипЗначения = Тип("Булево") Тогда + + Значение = ?(Значение, "true", "false"); + ЗапросЗаписьДанных.ЗаписатьСтроку(Значение); + ЗапросТелоКоллекция.Вставить(ИмяПоля, Значение); + + ИначеЕсли ТипЗначения = Тип("ДвоичныеДанные") Тогда + + ЗаписатьДвоичныеДанные(ЗапросЗаписьДанных, Значение); + + Иначе + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); + ЗапросЗаписьДанных.ЗаписатьСтроку(Значение); + ЗапросТелоКоллекция.Вставить(ИмяПоля, Значение); + + КонецЕсли; + + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Добавить данные Related !NOCLI +// Добавляет данные в multipart/related тело +// +// Примечание: +// Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart` +// +// Параметры: +// Данные - Произвольный - Данные для записи - data +// ТипДанных - Строка - MIME тип записываемых данных - mime +// IDЧасти - Строка - Content ID, если необходим - cid +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ДобавитьДанныеRelated(Знач Данные, Знач ТипДанных, Знач IDЧасти = "") Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + Если Не Multipart Тогда Возврат Ошибка("ДобавитьФайлRelated: не инициализирована запись Multipart"); КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТипДанных); + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧасти); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь); + + ДобавитьЛог("ДобавитьФайлRelated: запись шапки блока"); + ЗапросЗаписьДанных.ЗаписатьСтроку("--" + Boundary + РазделительСтрок); + ЗапросЗаписьДанных.ЗаписатьСтроку("Content-Type: " + ТипДанных); + + Если ЗначениеЗаполнено(IDЧасти) Тогда + ЗапросЗаписьДанных.ЗаписатьСтроку("Content-ID: " + IDЧасти); + КонецЕсли; + + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + + ДобавитьЛог("ДобавитьФайлRelated: запись данных"); + ЗаписатьДвоичныеДанные(ЗапросЗаписьДанных, Данные); + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + ЗапросЗаписьДанных.ЗаписатьСтроку(РазделительСтрок); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +#КонецОбласти + +#Область УстановкаЗаголовков + +// Установить заголовки !NOCLI +// Устанавливает коллекцию заголовков запросов +// +// Параметры: +// Значение - Произвольный - Стрктура или соответствие заголовков запрос - headers +// ПолнаяЗамена - Булево - Очищает все добавленные ранее заголовки перед установкой - replace +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьЗаголовки(Знач Значение, Знач ПолнаяЗамена = Ложь) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Соответствие; КонецЕсли; + + ТекстОшибки = "УстановитьЗаголовки: переданные параметры не являются коллекцией ключ/значение"; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки); + OPI_ПреобразованиеТипов.ПолучитьБулево(ПолнаяЗамена); + + ДобавитьЛог("УстановитьЗаголовки: установка заголовков запроса"); + + Если ПолнаяЗамена Тогда + ЗапросЗаголовки = Значение; + Иначе + Для Каждого Заголовок Из Значение Цикл + ЗапросЗаголовки.Вставить(Заголовок.Ключ, Заголовок.Значение); + КонецЦикла; + КонецЕсли; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Добавить заголовок !NOCLI +// Добавляет заголовок в набор заголовков запроса +// +// Параметры: +// Имя - Строка - Ключ заголовка - header +// Значение - Строка - Значение заголовка - value +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ДобавитьЗаголовок(Знач Имя, Знач Значение) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Соответствие; КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); + + ДобавитьЛог("ДобавитьЗаголовок: установка заголовков запроса"); + + ЗапросЗаголовки.Вставить(Имя, Значение); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; +КонецФункции + +#КонецОбласти + +#Область Авторизация + +// Добавить Basic авторизацию !NOCLI +// Добавляет стандартную авторизацю по пользователю и паролю +// +// Параметры: +// Пользователь - Строка - Имя пользователя - user +// Пароль - Строка - Пароль - pwd +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ДобавитьBasicАвторизацию(Знач Пользователь, Знач Пароль) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Пользователь); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль); + + ЗапросПользователь = Пользователь; + ЗапросПароль = Пароль; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Добавить Bearer авторизацию !NOCLI +// Добавляет заголовок запроса для Bearer авторизации +// +// Параметры: +// Токен - Строка - Значение Bearer токена - token +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ДобавитьBearerАвторизацию(Знач Токен) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + + AuthВид = "bearer"; + AuthДанные = Токен; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Добавить AWS4 авторизацию !NOCLI +// Добавляет данные для AWS4 авторизации +// +// Параметры: +// AccessKey - Строка - Access key для авторизации - access +// SecretKey - Строка - Secret key для авторизации - secret +// Region - Строка - Регион сервиса - region +// Service - Строка - Вид сервиса, если отличен от s3 - service +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ДобавитьAWS4Авторизацию(Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + Строка_ = "Строка"; + AuthВид = "aws4"; + + AuthДанные = Новый Структура; + OPI_Инструменты.ДобавитьПоле("AccessKey", AccessKey, Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("SecretKey", SecretKey, Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("Region" , Region , Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("Service" , Service , Строка_, AuthДанные); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Добавить OAuth v1 авторизацию !NOCLI +// Добавляет данные для OAuth v1 авторизации +// +// Примечание: +// По умолчанию, для создания подписи используется HMAC-SHA256. Для изменения алгоритма можно восопользоваться функцией^^ +// `УстановитьАлгоритмOAuthV1` +// +// Параметры: +// Token - Строка - Token для авторизации - token +// Secret - Строка - Secret для авторизации - secret +// ConsumerKey - Строка - Consumer key для авторизации - ck +// ConsumerSecret - Строка - Consumer secret для авторизации - cs +// Версия - Строка - Версия API - ver +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ДобавитьOAuthV1Авторизацию(Знач Token, Знач Secret, Знач ConsumerKey, Знач ConsumerSecret, Знач Версия) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + Строка_ = "Строка"; + AuthВид = "oauth1"; + + AuthДанные = Новый Структура; + OPI_Инструменты.ДобавитьПоле("OAuthToken" , Token , Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("OAuthSecret" , Secret , Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("OAuthConsumerKey" , ConsumerKey , Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("OAuthConsumerSecret", ConsumerSecret , Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("OAuthАлгоритм" , "HMAC" , Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("OAuthХешФункция" , "SHA256" , Строка_, AuthДанные); + OPI_Инструменты.ДобавитьПоле("OAuthВерсияAPI" , Версия , Строка_, AuthДанные); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Установить алгоритм OAuth V1 !NOCLI +// Изменяет алгоритм для подписи OAuth +// +// Параметры: +// Алгоритм - Строка - Алгоритм шифрования: HMAC, RSA - alg +// ХешФункция - Строка - Хеш функция для сигнатуры: SHA1, SHA256 - hash +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция УстановитьАлгоритмOAuthV1(Знач Алгоритм, Знач ХешФункция) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + Если AuthВид <> "oauth1" Тогда + Возврат Ошибка("УстановитьАлгоритмOAuthV1: перед установкой алгоритма авторизация OAuth v1 должна быть инициализирована"); + КонецЕсли; + + OPI_Инструменты.ДобавитьПоле("OAuthАлгоритм" , Алгоритм , "Строка", AuthДанные); + OPI_Инструменты.ДобавитьПоле("OAuthХешФункция", ХешФункция, "Строка", AuthДанные); + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +#КонецОбласти + +#Область ОбработкаЗапроса + +// Обработать запрос !NOCLI +// Создает запрос на основе введенных данных с выполнением или без +// +// Примечание: +// `ВыполнитьСразу = Ложь` может быть использовано для получения готовых^^ +// объектов HTTPЗапрос и HTTPСоединение без их выполнения. См. `ВернутьЗапрос` и `ВернутьСоединение` +// +// Параметры: +// Метод - Строка - HTTP метод запроса - method +// ВыполнитьСразу - Булево - Выполняет запрос сразу после формирования - run +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ОбработатьЗапрос(Знач Метод, Знач ВыполнитьСразу = Истина) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод); + OPI_ПреобразованиеТипов.ПолучитьБулево(ВыполнитьСразу); + ЗапросМетод = Метод; + + ДобавитьЛог("ОбработатьЗапрос: формирование объекта HTTPЗапроса"); + Если СформироватьЗапрос().Ошибка Тогда Возврат ЭтотОбъект; КонецЕсли; + + ДобавитьЛог("ОбработатьЗапрос: перенос тела в объект HTTPЗапроса"); + Если УстановитьТелоЗапроса().Ошибка Тогда Возврат ЭтотОбъект; КонецЕсли; + + ГарантироватьТелоКоллекцию(); + ДополнитьЗаголовки(); + + Если ВыполнитьСразу Тогда + ВызватьМетод(); + КонецЕсли; + + Возврат ЭтотОбъект; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Выполнить запрос !NOCLI +// Выполняет запрос, если он был сформирован ранее +// +// Параметры: +// Принудительно - Булево - Попытка выполнения без дополнительных проверовк - force +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки +Функция ВыполнитьЗапрос(Принудительно = Ложь) Экспорт + + Попытка + + Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли; + + ДобавитьЛог("ВыполнитьЗапрос: выполнение запроса"); + + Возврат ВызватьМетод(0, Принудительно); + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Вернуть запрос !NOCLI +// Возвращает объект текущего HTTP запроса +// +// Параметры: +// Принудительно - Булево - Ложь > Вместо запроса будет возвращен объект обработки, если в ней были ошибки - force +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент, HTTPЗапрос, Неопределено - Запрос или этот же объект обработки +Функция ВернутьЗапрос(Принудительно = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); + + Если ОстановитьРаботу() И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; + + Возврат Запрос; + +КонецФункции + +// Вернуть соединение !NOCLI +// Возвращает объект текущего HTTP соединения +// +// Параметры: +// Принудительно - Булево - Ложь > Вместо соединения будет возвращен объект обработки, если в ней были ошибки - force +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент, HTTPСоединение, Неопределено - Соединение или этот же объект обработки +Функция ВернутьСоединение(Принудительно = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); + + Если ОстановитьРаботу() И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; + + Возврат Соединение; + +КонецФункции + +#КонецОбласти + +#Область ПолучениеОтвета + +// Вернуть ответ !NOCLI +// Возвращает объект текущего HTTP ответа +// +// Параметры: +// Принудительно - Булево - Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки - force +// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex +// +// Возвращаемое значение: +// ОбработкаОбъект.OPI_HTTPКлиент, HTTPОтвет, Неопределено - Ответ или этот же объект обработки +Функция ВернутьОтвет(Знач Принудительно = Ложь, Знач ИсключениеПриОшибке = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); + + Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; + + Возврат Ответ; + +КонецФункции + +// Вернуть ответ как JSON коллекцию !NOCLI +// Возвращает тело ответа как коллекцию, полученную из JSON +// +// Параметры: +// ВСоответствие - Булево - Признак использования соответствия вместо структуры - map +// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex +// +// Возвращаемое значение: +// Произвольный - Ответ или этот же объект обработки +Функция ВернутьОтветКакJSONКоллекцию(Знач ВСоответствие = Истина, Знач ИсключениеПриОшибке = Ложь) Экспорт + + Если ОстановитьРаботу(ИсключениеПриОшибке) Тогда Возврат ЭтотОбъект; КонецЕсли; + + Попытка + + OPI_ПреобразованиеТипов.ПолучитьБулево(ВСоответствие); + ТелоОтвета = ПолучитьТелоОтвета(); + + Попытка + + Если ТелоОтвета.Размер() > 0 Тогда + JSON = OPI_Инструменты.JsonВСтруктуру(ТелоОтвета, ВСоответствие); + Иначе + JSON = Новый Соответствие; + КонецЕсли; + + Исключение + + JSON = ТелоОтвета; + + КонецПопытки; + + Возврат JSON; + + Исключение + Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецФункции + +// Вернуть ответ как двоичные данные !NOCLI +// Возвращает тело ответа как двоичные данные +// +// Параметры: +// Принудительно - Булево - Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки - force +// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex +// +// Возвращаемое значение: +// Произвольный - Ответ или этот же объект обработки +Функция ВернутьОтветКакДвоичныеДанные(Знач Принудительно = Ложь, Знач ИсключениеПриОшибке = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); + + Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; + + Попытка + ТелоДвоичные = Неопределено; + ТелоДвоичные = ПолучитьТелоОтвета(); + Исключение + + Ошибка = Истина; + + Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда + ТелоДвоичные = ЭтотОбъект; + КонецЕсли; + + КонецПопытки; + + Возврат ТелоДвоичные; + +КонецФункции + +// Вернуть ответ как строку !NOCLI +// Возвращает тело ответа как строку +// +// Параметры: +// Принудительно - Булево - Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки - force +// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex +// +// Возвращаемое значение: +// Произвольный - Ответ или этот же объект обработки +Функция ВернутьОтветКакСтроку(Знач Принудительно = Ложь, Знач ИсключениеПриОшибке = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); + + Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; + + Попытка + ТелоСтрокой = Неопределено; + ТелоСтрокой = ПолучитьСтрокуИзДвоичныхДанных(ПолучитьТелоОтвета()); + Исключение + + Ошибка = Истина; + + Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда + ТелоСтрокой = ЭтотОбъект; + КонецЕсли; + + КонецПопытки; + + Возврат ТелоСтрокой; + +КонецФункции + +// Вернуть имя файла тела ответа !NOCLI +// Возвращает путь к файлу тела ответа +// +// Параметры: +// Принудительно - Булево - Ложь > Вместо ответа будет возвращен объект обработки, если в ней были ошибки - force +// ИсключениеПриОшибке - Булево - Вызывает исключение с логом, если во время обработки были ошибки - ex +// +// Возвращаемое значение: +// Произвольный - Ответ или этот же объект обработки +Функция ВернутьИмяФайлаТелаОтвета(Знач Принудительно = Ложь, Знач ИсключениеПриОшибке = Ложь) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); + + Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли; + + Попытка + ИмяФайлаТела = Неопределено; + ИмяФайлаТела = Ответ.ПолучитьИмяФайлаТела(); + Исключение + + Ошибка = Истина; + + Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда + ИмяФайлаТела = ЭтотОбъект; + КонецЕсли; + + КонецПопытки; + + Возврат ИмяФайлаТела; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область HTTP + +Функция ПреобразоватьПараметрВСтроку(Знач Значение) + + КодироватьURL = ПолучитьНастройку("КодировкаURL"); + + Если ТипЗнч(Значение) = Тип("Массив") Тогда + + Значение = OPI_Инструменты.КопироватьКоллекцию(Значение); + + Для Н = 0 По Значение.ВГраница() Цикл + Значение[Н] = ПреобразоватьПараметрВСтроку(Значение[Н]); + КонецЦикла; + + Значение = СтрСоединить(Значение, ","); + + Если КодироватьURL Тогда + Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.URLВКодировкеURL); + КонецЕсли; + + Значение = "[" + Значение + "]"; + + ИначеЕсли ТипЗнч(Значение) = Тип("Соответствие") Или ТипЗнч(Значение) = Тип("Структура") Тогда + + Значение = OPI_Инструменты.КопироватьКоллекцию(Значение); + ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, ""); + + ЗаписьJSON = Новый ЗаписьJSON; + ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); + + ЗаписатьJSON(ЗаписьJSON, Значение); + Значение = ЗаписьJSON.Закрыть(); + + ИначеЕсли ТипЗнч(Значение) = Тип("Булево") Тогда + + Значение = ?(Значение, "true", "false"); + + Иначе + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); + + Если КодироватьURL Тогда + Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL); + КонецЕсли; + + КонецЕсли; + + Возврат Значение; + +КонецФункции + +Функция УстановитьТелоИзДвоичныхДанных(Знач Значение) + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Значение, Истина, Ложь); + ЗапросТело = Значение; + + Возврат ЭтотОбъект; + +КонецФункции + +Функция УстановитьТелоИзСтроки(Знач Значение, Знач ЗаписатьBOM = Ложь) + + Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда + + ЗапросТело = Значение; + + Иначе + + Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса"); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); + OPI_ПреобразованиеТипов.ПолучитьБулево(ЗаписатьBOM); + + ЗапросТело = ПолучитьДвоичныеДанныеИзСтроки(Значение, Кодировка, ЗаписатьBOM); + + КонецЕсли; + + Возврат ЭтотОбъект; + +КонецФункции + +Функция РазбитьURL() + + ДобавитьЛог("РазбитьURL: разбиение запроса на составные части"); + + URL = ЗапросURL; + + ЗапросЗащищенное = Не СтрНачинаетсяС(ЗапросURL, "http://"); + + ДобавитьЛог("РазбитьURL: Защищенное = " + Строка(ЗапросЗащищенное)); + + URL = СтрЗаменить(URL, "https://", ""); + URL = СтрЗаменить(URL, "http://" , ""); + + Секция = СтрНайти(URL, "#"); + + Если Секция > 0 Тогда + + ЗапросСекция = Прав(URL, СтрДлина(URL) - Секция + 1); + ДобавитьЛог("РазбитьURL: Секция = " + ЗапросСекция); + + URL = Лев(URL, Секция - 1); + + КонецЕсли; + + Если СтрНайти(URL, "/") = 0 Тогда + ЗапросАдрес = ""; + ЗапросДомен = URL; + Иначе + ЗапросАдрес = Прав(URL, СтрДлина(URL) - СтрНайти(URL, "/", НаправлениеПоиска.СНачала) + 1); + ЗапросДомен = Лев(URL, СтрНайти(URL, "/", НаправлениеПоиска.СНачала) - 1); + КонецЕсли; + + ДобавитьЛог("РазбитьURL: Адрес = " + ЗапросАдрес); + ДобавитьЛог("РазбитьURL: Домен = " + ЗапросДомен); + + Если СтрНайти(ЗапросДомен, ":") <> 0 Тогда + + ХостПорт = СтрРазделить(ЗапросДомен, ":"); + ЗапросДомен = ХостПорт[0]; + ЗапросПорт = ХостПорт[1]; + + OPI_ПреобразованиеТипов.ПолучитьЧисло(ЗапросПорт); + + Иначе + + ЗапросПорт = ?(ЗапросЗащищенное, 443, 80); + + КонецЕсли; + + ДобавитьЛог("РазбитьURL: Порт = " + OPI_Инструменты.ЧислоВСтроку(ЗапросПорт)); + + Если OPI_Инструменты.ЭтоOneScript() И ЗапросЗащищенное Тогда + ЗапросСервер = "https://" + ЗапросДомен; + Иначе + ЗапросСервер = ЗапросДомен; + КонецЕсли; + + ДобавитьЛог("РазбитьURL: Сервер = " + ЗапросСервер); + + Возврат ЭтотОбъект; + +КонецФункции + +Функция СформироватьЗапрос() + + Если Не ЗначениеЗаполнено(ЗапросURL) Тогда + Возврат Ошибка("Не установлен URL"); + КонецЕсли; + + ДобавитьЛог("СформироватьЗапрос: Добавление параметров"); + ДополнитьURLПараметрами(); + + ДобавитьЛог("СформироватьЗапрос: Создание объекта запроса"); + СоздатьЗапрос(); + + ДобавитьЛог("СформироватьЗапрос: Создание объекта соединения"); + СоздатьСоединение(); + + Возврат ЭтотОбъект; + +КонецФункции + +Функция СоздатьЗапрос() + + Заголовки = ПолучитьСтандартныеЗаголовки(); + Запрос = Новый HTTPЗапрос(ЗапросАдресПолный, Заголовки); + + Возврат ЭтотОбъект; + +КонецФункции + +Функция СоздатьСоединение() + + Если Не ЗначениеЗаполнено(ЗапросПорт) Тогда + ЗапросПорт = ?(ЗапросЗащищенное, 443, 80); + КонецЕсли; + + Если ЗапросЗащищенное Тогда + + Если OPI_Инструменты.ЭтоOneScript() Тогда + + Соединение = Новый HTTPСоединение(ЗапросСервер + , ЗапросПорт + , ЗапросПользователь + , ЗапросПароль + , ЗапросПрокси + , ЗапросТаймаут); + + Иначе + + SSL = Новый ЗащищенноеСоединениеOpenSSL; + Соединение = Новый HTTPСоединение(ЗапросСервер + , ЗапросПорт + , ЗапросПользователь + , ЗапросПароль + , ЗапросПрокси + , ЗапросТаймаут + , SSL); + + КонецЕсли; + + Иначе + + Соединение = Новый HTTPСоединение(ЗапросСервер + , ЗапросПорт + , ЗапросПользователь + , ЗапросПароль + , ЗапросПрокси + , ЗапросТаймаут); + + КонецЕсли; + + Возврат ЭтотОбъект; + +КонецФункции + +Функция ДополнитьURLПараметрами() + + Если СтрЗаканчиваетсяНа(ЗапросАдрес, "?") Или Не ЗначениеЗаполнено(ЗапросПараметрыURL) Тогда + ЗнакНачала = ""; + ИначеЕсли СтрНайти(ЗапросАдрес, "?") <> 0 Тогда + ЗнакНачала = "&"; + Иначе + ЗнакНачала = "?"; + КонецЕсли; + + ЗапросАдресПолный = ЗапросАдрес + ЗнакНачала + ПараметрыЗапросаВСтроку(ЗапросПараметрыURL) + ЗапросСекция; + + Возврат ЭтотОбъект; + +КонецФункции + +Функция ПараметрыЗапросаВСтроку(Знач Параметры) + + Если Не ЗначениеЗаполнено(Параметры) Тогда + Возврат ""; + КонецЕсли; + + ДобавитьЛог("ПараметрыЗапросаВСтроку: Получение коллекции КлючЗначение"); + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Параметры); + + СтрокаПараметров = ""; + + ДобавитьЛог("ПараметрыЗапросаВСтроку: Добавление параметров"); + Для Каждого Параметр Из Параметры Цикл + + ТекущееЗначение = Параметр.Значение; + ТекущийКлюч = Параметр.Ключ; + + Если Не ТипЗнч(ТекущееЗначение) = Тип("Массив") Или Не ПолучитьНастройку("ОтдельныеЭлементыМассивов") Тогда + + ЗначениеПараметра = ПреобразоватьПараметрВСтроку(ТекущееЗначение); + СтрокаПараметров = СтрокаПараметров + Параметр.Ключ + "=" + ЗначениеПараметра + "&"; + + Иначе + + ЗначениеПараметра = РазделитьМассивНаПараметрыURL(ТекущийКлюч, ТекущееЗначение); + СтрокаПараметров = СтрокаПараметров + ЗначениеПараметра + "&"; + + КонецЕсли; + + КонецЦикла; + + СтрокаПараметров = Лев(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1); + + Возврат СтрокаПараметров; + +КонецФункции + +Функция РазделитьМассивНаПараметрыURL(Знач Ключ, Знач Значение) + + КлючМассив = СтрШаблон("%1%2=", Ключ, ?(ПолучитьНастройку("КвадратныеСкобкиМассивов"), "[]", "")); + Значение = OPI_Инструменты.КопироватьКоллекцию(Значение); + + Для Н = 0 По Значение.ВГраница() Цикл + + ТекущееЗначение = Значение[Н]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущееЗначение); + + Если ПолучитьНастройку("КодировкаURL") Тогда + ТекущееЗначение = КодироватьСтроку(ТекущееЗначение, СпособКодированияСтроки.URLВКодировкеURL); + КонецЕсли; + + Значение.Установить(Н, КлючМассив + ТекущееЗначение); + + КонецЦикла; + + ПараметрСтрокой = СтрСоединить(Значение, "&"); + + Возврат ПараметрСтрокой; + +КонецФункции + +Функция ПолучитьСтандартныеЗаголовки() + + Заголовки = Новый Соответствие; + + Заголовки.Вставить("Accept" , "*/*"); + Заголовки.Вставить("Connection" , "keep-alive"); + Заголовки.Вставить("Accept-Charset" , "utf-8"); + + Возврат Заголовки; + +КонецФункции + +Функция ДополнитьЗаголовки() + + Если Запрос.Заголовки.Получить("Content-Length") = Неопределено Тогда + + ДобавитьЛог("ДополнитьЗаголовки: установка Content-Length"); + + Если ЗапросФайлТела = Неопределено Тогда + + Если ЗапросТело = Неопределено Тогда + РазмерТела = 0; + Иначе + РазмерТела = ЗапросТело.Размер(); + КонецЕсли; + + Иначе + + ФайлТела = Новый Файл(ЗапросФайлТела); + РазмерТела = ФайлТела.Размер(); + + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(РазмерТела); + Запрос.Заголовки.Вставить("Content-Length" , РазмерТела); + + КонецЕсли; + + ДополнитьЗаголовкиАвторизации(); + + Если ПолучитьНастройку("gzip") Тогда + ДобавитьЛог("ДополнитьЗаголовки: установка заголовка ожидания gzip"); + Запрос.Заголовки.Вставить("Accept-Encoding", "gzip"); + КонецЕсли; + + Если ЗначениеЗаполнено(ЗапросТипДанных) Тогда + Запрос.Заголовки.Вставить("Content-Type", ЗапросТипДанных); + КонецЕсли; + + Если ТипЗнч(ЗапросЗаголовки) = Тип("Соответствие") Тогда + + Для Каждого Заголовок Из ЗапросЗаголовки Цикл + Запрос.Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение); + КонецЦикла; + + КонецЕсли; + + Возврат ЭтотОбъект; + +КонецФункции + +Функция ДополнитьЗаголовкиАвторизации() + + Если Не ЗначениеЗаполнено(AuthВид) Тогда + Возврат ЭтотОбъект; + КонецЕсли; + + Если AuthВид = "aws4" Тогда + + ДобавитьЛог("ДополнитьЗаголовкиАвторизации: формирование заголовка AWS4 авторизации"); + ДобавитьAWS4(); + + ИначеЕсли AuthВид = "oauth1" Тогда + + ДобавитьЛог("ДополнитьЗаголовкиАвторизации: формирование заголовка OAuth V1 авторизации"); + ДобавитьЗаголовокOAuthV1(); + + Иначе + + ДобавитьЛог("ДополнитьЗаголовкиАвторизации: формирование заголовка Bearer авторизации"); + Запрос.Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", AuthДанные)); + + КонецЕсли; + + Возврат ЭтотОбъект; + +КонецФункции + +Функция УстановитьТелоЗапроса() + + Если Multipart Тогда + ЗвершитьЗаписьMultipart(); + КонецЕсли; + + Если ЗначениеЗаполнено(ЗапросФайлТела) Тогда + Запрос.УстановитьИмяФайлаТела(ЗапросФайлТела); + Иначе + + Если ТипЗнч(ЗапросТело) = Тип("ДвоичныеДанные") Тогда + Запрос.УстановитьТелоИзДвоичныхДанных(ЗапросТело); + КонецЕсли; + + КонецЕсли; + + Возврат ЭтотОбъект; + +КонецФункции + +Функция ВызватьМетод(Знач ЧислоПереадресаций = 0, Знач Принудительно = Ложь) + + OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно); + + Если (Запрос = Неопределено Или Соединение = Неопределено) И Не Принудительно Тогда + Возврат Ошибка("ВызватьМетод: запрос не был сформирован перед выполнением"); + КонецЕсли; + + Если ЗначениеЗаполнено(ЗапросВыходнойФайл) Тогда + Ответ = Соединение.ВызватьHTTPМетод(ЗапросМетод, Запрос, ЗапросВыходнойФайл); + Иначе + Ответ = Соединение.ВызватьHTTPМетод(ЗапросМетод, Запрос); + КонецЕсли; + + Если ЭтоПереадресация(Ответ) Тогда + + Если ЧислоПереадресаций = 5 Тогда + Ошибка("ВызватьМетод: превышено число переадресаций"); + Возврат ЭтотОбъект; + КонецЕсли; + + URL = Ответ.Заголовки["Location"]; + УстановитьURL(URL); + + СоздатьСоединение(); + Запрос.АдресРесурса = ЗапросАдрес; + + ВызватьМетод(ЧислоПереадресаций + 1, Принудительно); + + КонецЕсли; + + Возврат ЭтотОбъект; + +КонецФункции + +Функция ПолучитьТелоОтвета() + + НужнаРаспаковка = Ложь; + + Для Каждого ЗаголовокОтвета Из Ответ.Заголовки Цикл + + КлючЗаголовка = ЗаголовокОтвета.Ключ; + ЗначениеЗаголовка = ЗаголовокОтвета.Значение; + + Если нРег(КлючЗаголовка) = "content-encoding" Тогда + Если нРег(ЗначениеЗаголовка) = "gzip" Тогда + НужнаРаспаковка = Истина; + Прервать; + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + Если НужнаРаспаковка Тогда + Данные = РаспаковатьОтвет(Ответ); + Иначе + Данные = ПолучитьТелоОтветаКакДвоичныеДанные(); + КонецЕсли; + + Данные = ?(ТипЗнч(Данные) = Тип("HTTPОтвет"), ПолучитьТелоОтветаКакДвоичныеДанные(), Данные); + + Если Не ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные); + КонецЕсли; + + Возврат Данные; + +КонецФункции + +Функция ЭтоПереадресация(Знач Ответ) + + Переадресация = 300; + ОшибкаЗапроса = 400; + + ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < ОшибкаЗапроса И ЗначениеЗаполнено( + Ответ.Заголовки["Location"]); + + Возврат ЭтоПереадресация; + +КонецФункции + +Функция ПолучитьТелоОтветаКакДвоичныеДанные() + + ПотокТела = Ответ.ПолучитьТелоКакПоток(); + + Если ПотокТела = Неопределено Тогда + Возврат ПолучитьДвоичныеДанныеИзСтроки(""); + КонецЕсли; + + ЧтениеДанных = Новый ЧтениеДанных(ПотокТела); + РезультатЧтения = ЧтениеДанных.Прочитать(); + Данные = РезультатЧтения.ПолучитьДвоичныеДанные(); + + ЧтениеДанных.Закрыть(); + ПотокТела.Закрыть(); + + Возврат Данные; + +КонецФункции + +Функция ПолучитьТелоОтветаКакДанныеИлиПуть() + + ИмяФайлаТела = Ответ.ПолучитьИмяФайлаТела(); + + Если Не ЗначениеЗаполнено(ИмяФайлаТела) Тогда + Возврат ПолучитьТелоОтветаКакДвоичныеДанные(); + Иначе + Возврат ИмяФайлаТела; + КонецЕсли; + +КонецФункции + +Функция ПолучитьТелоЗапросаКакДвоичныеДанные() + + Если ЗначениеЗаполнено(ЗапросФайлТела) Тогда + Данные = Новый ДвоичныеДанные(ЗапросФайлТела); + Иначе + Данные = ЗапросТело; + КонецЕсли; + + Если Данные = Неопределено Тогда + Данные = ПолучитьДвоичныеДанныеИзСтроки(""); + КонецЕсли; + + Возврат Данные; + +КонецФункции + +Процедура ОтменитьЗаписьMultipart() + + Если Не Multipart Тогда + Возврат; + КонецЕсли; + + ДобавитьЛог("ОтменитьЗаписьMultipart: Удаление записанных данных"); + Multipart = Ложь; + + Попытка + ЗапросЗаписьДанных.Закрыть(); + Исключение + ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось закрыть запись. Возможно, она уже была закрыта"); + КонецПопытки; + + Если ЗначениеЗаполнено(ЗапросФайлТела) Тогда + + Попытка + + УдалитьФайлы(ЗапросФайлТела); + ДобавитьЛог("ОтменитьЗаписьMultipart: Файл тела удален"); + + Исключение + ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось удалить файл тела. Возможно, он уже был удален"); + КонецПопытки; + + Иначе + + Если ТипЗнч(ЗапросПотокТела) = Тип("ПотокВПамяти") Тогда + + Попытка + ЗапросПотокТела.Закрыть(); + Исключение + ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось закрыть поток. Возможно, он уже был закрыт"); + КонецПопытки; + + КонецЕсли; + + КонецЕсли; + + ЗапросЗаписьДанных = Неопределено; + ЗапросФайлТела = Неопределено; + +КонецПроцедуры + +Процедура ЗаписатьДвоичныеДанные(ЗаписьДанных, Знач ДвоичныеДанные) + + РазмерЧасти = 268435456; + ПрочитанноБайт = 0; + ТекущаяПозиция = 0; + ОбщийРазмер = ДвоичныеДанные.Размер(); + + Пока ПрочитанноБайт < ОбщийРазмер Цикл + + ЧтениеДанных = Новый ЧтениеДанных(ДвоичныеДанные); + ПрочитанноБайт = ЧтениеДанных.Пропустить(ТекущаяПозиция); + Результат = ЧтениеДанных.Прочитать(РазмерЧасти); + ТекущиеДанные = Результат.ПолучитьДвоичныеДанные(); + РазмерТекущих = ТекущиеДанные.Размер(); + + Если Не ЗначениеЗаполнено(ТекущиеДанные) Тогда + Прервать; + КонецЕсли; + + ЗаписьДанных.Записать(ТекущиеДанные); + + ОсвободитьОбъект(ТекущиеДанные); + ВыполнитьСборкуМусора(); + + ТекущаяПозиция = ТекущаяПозиция + РазмерТекущих; + + КонецЦикла; + +КонецПроцедуры + +Процедура ЗвершитьЗаписьMultipart() + + Попытка + ЗапросЗаписьДанных.ЗаписатьСтроку("--" + Boundary + "--" + РазделительСтрок); + ЗапросЗаписьДанных.Закрыть(); + Исключение + ДобавитьЛог("ЗвершитьЗаписьMultipart: Не удалось закрыть запись. Возможно, она уже была закрыта"); + КонецПопытки; + + Если ТипЗнч(ЗапросПотокТела) = Тип("ПотокВПамяти") Тогда + ЗапросТело = ЗапросПотокТела.ЗакрытьИПолучитьДвоичныеДанные(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область GZip + +// Описание структур см. здесь https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT +// Источник: https://github.com/vbondarevsky/Connector + +// Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 +// +// Copyright 2017-2023 Vladimir Bondarevskiy +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +// URL: https://github.com/vbondarevsky/Connector +// e-mail: vbondarevsky@gmail.com +// Версия: 2.4.8 +// +// Требования: платформа 1С версии 8.3.10 и выше + +Функция РаспаковатьОтвет(Ответ) + + Попытка + Возврат ПрочитатьGZip(ПолучитьТелоОтветаКакДанныеИлиПуть()); + Исключение + Возврат Ответ; + КонецПопытки; + +КонецФункции + +Функция ПрочитатьGZip(СжатыеДанные) + + РазмерПрефиксаGZip = 10; + РазмерПостфиксаGZip = 8; + + РазмерДД = ZipРазмерDD(); + РазмерСДХ = ZipРазмерCDH(); + РазмерЕСД = ZipРазмерEOCD(); + РазмерЛФХ = ZipРазмерLFH(); + + ЧтениеДанных = Новый ЧтениеДанных(СжатыеДанные); + ЧтениеДанных.Пропустить(РазмерПрефиксаGZip); + РазмерСжатыхДанных = ЧтениеДанных.ИсходныйПоток().Размер() - РазмерПрефиксаGZip - РазмерПостфиксаGZip; + + ПотокZip = Новый ПотокВПамяти(РазмерЛФХ + РазмерСжатыхДанных + РазмерДД + РазмерСДХ + РазмерЕСД); + + ЗаписьДанных = Новый ЗаписьДанных(ПотокZip); + ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipLFH()); + ЧтениеДанных.КопироватьВ(ЗаписьДанных, РазмерСжатыхДанных); + + ЗаписьДанных.Закрыть(); + ЗаписьДанных = Новый ЗаписьДанных(ПотокZip); + + CRC32 = ЧтениеДанных.ПрочитатьЦелое32(); + РазмерНесжатыхДанных = ЧтениеДанных.ПрочитатьЦелое32(); + ЧтениеДанных.Закрыть(); + + ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipDD(CRC32 , РазмерСжатыхДанных, РазмерНесжатыхДанных)); + ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных)); + ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipEOCD(РазмерСжатыхДанных)); + ЗаписьДанных.Закрыть(); + + Возврат ПрочитатьZip(ПотокZip); + +КонецФункции + +Функция ПрочитатьZip(СжатыеДанные, ТекстОшибки = Неопределено) + + Каталог = ПолучитьИмяВременногоФайла(); + ЧтениеZip = Новый ЧтениеZipФайла(СжатыеДанные); + ИмяФайла = ЧтениеZip.Элементы[0].Имя; + Попытка + ЧтениеZip.Извлечь(ЧтениеZip.Элементы[0], Каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать); + Исключение + // Игнорируем проверку целостности архива, просто читаем результат + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + ЧтениеZip.Закрыть(); + + Результат = Новый ДвоичныеДанные(Каталог + ПолучитьРазделительПути() + ИмяФайла); + УдалитьФайлы(Каталог); + + Возврат Результат; + +КонецФункции + +Функция ZipРазмерLFH() + + Возврат 34; + +КонецФункции + +Функция ZipРазмерDD() + + Возврат 16; + +КонецФункции + +Функция ZipРазмерCDH() + + Возврат 50; + +КонецФункции + +Функция ZipРазмерEOCD() + + Возврат 22; + +КонецФункции + +Функция ZipLFH() + + // Local file header + Буфер = Новый БуферДвоичныхДанных(ZipРазмерLFH()); + Буфер.ЗаписатьЦелое32(0, 67324752); // signature 0x04034b50 + Буфер.ЗаписатьЦелое16(4, 20); // version + Буфер.ЗаписатьЦелое16(6, 10); // bit flags + Буфер.ЗаписатьЦелое16(8, 8); // compression method + Буфер.ЗаписатьЦелое16(10, 0); // time + Буфер.ЗаписатьЦелое16(12, 0); // date + Буфер.ЗаписатьЦелое32(14, 0); // crc-32 + Буфер.ЗаписатьЦелое32(18, 0); // compressed size + Буфер.ЗаписатьЦелое32(22, 0); // uncompressed size + Буфер.ЗаписатьЦелое16(26, 4); // filename legth - "data" + Буфер.ЗаписатьЦелое16(28, 0); // extra field length + Буфер.Записать(30, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь)); + + Возврат Буфер; + +КонецФункции + +Функция ZipDD(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных) + + // Data descriptor + Буфер = Новый БуферДвоичныхДанных(ZipРазмерDD()); + Буфер.ЗаписатьЦелое32(0, 134695760); + Буфер.ЗаписатьЦелое32(4, CRC32); + Буфер.ЗаписатьЦелое32(8, РазмерСжатыхДанных); + Буфер.ЗаписатьЦелое32(12, РазмерНесжатыхДанных); + + Возврат Буфер; + +КонецФункции + +Функция ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных) + + // Central directory header + Буфер = Новый БуферДвоичныхДанных(ZipРазмерCDH()); + Буфер.ЗаписатьЦелое32(0, 33639248); // signature 0x02014b50 + Буфер.ЗаписатьЦелое16(4, 798); // version made by + Буфер.ЗаписатьЦелое16(6, 20); // version needed to extract + Буфер.ЗаписатьЦелое16(8, 10); // bit flags + Буфер.ЗаписатьЦелое16(10, 8); // compression method + Буфер.ЗаписатьЦелое16(12, 0); // time + Буфер.ЗаписатьЦелое16(14, 0); // date + Буфер.ЗаписатьЦелое32(16, CRC32); // crc-32 + Буфер.ЗаписатьЦелое32(20, РазмерСжатыхДанных); // compressed size + Буфер.ЗаписатьЦелое32(24, РазмерНесжатыхДанных); // uncompressed size + Буфер.ЗаписатьЦелое16(28, 4); // file name length + Буфер.ЗаписатьЦелое16(30, 0); // extra field length + Буфер.ЗаписатьЦелое16(32, 0); // file comment length + Буфер.ЗаписатьЦелое16(34, 0); // disk number start + Буфер.ЗаписатьЦелое16(36, 0); // internal file attributes + Буфер.ЗаписатьЦелое32(38, 2176057344); // external file attributes + Буфер.ЗаписатьЦелое32(42, 0); // relative offset of local header + Буфер.Записать(46, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь)); + + Возврат Буфер; + +КонецФункции + +Функция ZipEOCD(РазмерСжатыхДанных) + + // End of central directory + РазмерCDH = 50; + Буфер = Новый БуферДвоичныхДанных(ZipРазмерEOCD()); + Буфер.ЗаписатьЦелое32(0, 101010256); // signature 0x06054b50 + Буфер.ЗаписатьЦелое16(4, 0); // number of this disk + Буфер.ЗаписатьЦелое16(6, 0); // number of the disk with the start of the central directory + Буфер.ЗаписатьЦелое16(8, 1); // total number of entries in the central directory on this disk + Буфер.ЗаписатьЦелое16(10, 1); // total number of entries in the central directory + Буфер.ЗаписатьЦелое32(12, РазмерCDH); // size of the central directory + // offset of start of central directory with respect to the starting disk number + Буфер.ЗаписатьЦелое32(16, ZipРазмерLFH() + РазмерСжатыхДанных + ZipРазмерDD()); + Буфер.ЗаписатьЦелое16(20, 0); // the starting disk number + + Возврат Буфер; + +КонецФункции + +#КонецОбласти + +#Область AWS4 + +Функция ДобавитьAWS4() + + ЗаголовокАвторизации = СоздатьЗаголовокАвторизации(); + + Запрос.Заголовки.Вставить("Authorization", ЗаголовокАвторизации); + + Возврат ЭтотОбъект; + +КонецФункции + +Функция СоздатьЗаголовокАвторизации() + + AccessKey = AuthДанные["AccessKey"]; + ТекущаяДата = ТекущаяУниверсальнаяДата(); + + Запрос.Заголовки.Вставить("x-amz-date", OPI_Инструменты.ВременнаяМеткаISO(ТекущаяДата)); + Запрос.Заголовки.Вставить("Host" , Соединение.Сервер); + + ОсновныеЧасти = ПолучитьОсновныеСоставляющиеПодписи(ТекущаяДата); + + Скоуп = ОсновныеЧасти["Скоуп"]; + Сигнатура = ОсновныеЧасти["Сигнатура"]; + КлючиЗаголовков = ОсновныеЧасти["КлючиЗаголовков"]; + + ЗаголовокАвторизации = СформироватьЗаголовокАвторизации(AccessKey, Скоуп, Сигнатура, КлючиЗаголовков); + + Возврат ЗаголовокАвторизации; + +КонецФункции + +Функция ПолучитьОсновныеСоставляющиеПодписи(Знач ТекущаяДата) + + SecretKey = AuthДанные["SecretKey"]; + Region = AuthДанные["Region"]; + Service = AuthДанные["Service"]; + + КлючПодписи = ПолучитьКлючПодписи(SecretKey, Region, Service, ТекущаяДата); + КаноническийЗапрос = СоздатьКаноническийЗапрос(); + Скоуп = СоздатьСкоуп(Region, Service, ТекущаяДата); + СтрокаДляПодписи = СоздатьСтрокуПодписи(КаноническийЗапрос, Скоуп, ТекущаяДата); + + Сигнатура = OPI_Криптография.HMAC(КлючПодписи, СтрокаДляПодписи, "SHA256"); + Сигнатура = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(Сигнатура)); + + КлючиЗаголовков = ПолучитьСтрокуКлючейЗаголовков(); + + СтруктураЧастей = Новый Структура; + + СтруктураЧастей.Вставить("Скоуп" , Скоуп); + СтруктураЧастей.Вставить("Сигнатура" , Сигнатура); + СтруктураЧастей.Вставить("КлючиЗаголовков", КлючиЗаголовков); + + Возврат СтруктураЧастей; + +КонецФункции + +Функция СформироватьЗаголовокАвторизации(Знач AccessKey, Знач Скоуп, Знач Сигнатура, Знач КлючиЗаголовков) + + ШаблонЗаголовка = "AWS4-HMAC-SHA256 " + + "Credential=%1/%2, " + + "SignedHeaders=%3, " + + "Signature=%4"; + + ЗаголовокАвторизации = СтрШаблон(ШаблонЗаголовка, AccessKey, Скоуп, КлючиЗаголовков, Сигнатура); + + Возврат ЗаголовокАвторизации; + +КонецФункции + +Функция ПолучитьКлючПодписи(Знач СекретныйКлюч, Знач Регион, Знач Сервис, Знач ТекущаяДата) + + СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч); + ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;")); + Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион); + Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис); + AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request"); + SHA256_ = "SHA256"; + + КлючДанных = OPI_Криптография.HMAC(СекретныйКлюч, ДанныеДата, SHA256_); + КлючРегиона = OPI_Криптография.HMAC(КлючДанных, Регион, SHA256_); + КлючСервиса = OPI_Криптография.HMAC(КлючРегиона, Сервис, SHA256_); + + ФинальныйКлюч = OPI_Криптография.HMAC(КлючСервиса, AWSЗапрос, SHA256_); + + Возврат ФинальныйКлюч; + +КонецФункции + +Функция СоздатьКаноническийЗапрос() + + ШаблонЗапроса = ""; + ТелоЗапроса = ПолучитьТелоЗапросаКакДвоичныеДанные(); + ХешСумма = OPI_Криптография.Хеш(ТелоЗапроса, ХешФункция.SHA256); + ЧислоЧастей = 6; + + Запрос.Заголовки.Вставить("x-amz-content-sha256", нРег(ПолучитьHexСтрокуИзДвоичныхДанных(ХешСумма))); + + Для Н = 1 По ЧислоЧастей Цикл + + ШаблонЗапроса = ШаблонЗапроса + "%" + Строка(Н) + ?(Н = ЧислоЧастей, "", Символы.ПС); + + КонецЦикла; + + Метод = вРег(ЗапросМетод); + СтрокаURI = ПолучитьСтрокуURI(); + СтрокаПараметров = ПолучитьСтрокуПараметров(); + СтрокаЗаголовков = ПолучитьСтрокуЗаголовков(); + СтрокаКлючей = ПолучитьСтрокуКлючейЗаголовков(); + + СтрокаХэша = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(ХешСумма)); + + КаноническийЗапрос = СтрШаблон(ШаблонЗапроса + , Метод + , СтрокаURI + , СтрокаПараметров + , СтрокаЗаголовков + , СтрокаКлючей + , СтрокаХэша); + + Возврат КаноническийЗапрос; + +КонецФункции + +Функция СоздатьСкоуп(Знач Регион, Знач Сервис, Знач ТекущаяДата) + + ДатаОбычная = Формат(ТекущаяДата, "ДФ=yyyyMMdd;"); + + Скоуп = Новый Массив; + Скоуп.Добавить(ДатаОбычная); + Скоуп.Добавить(Регион); + Скоуп.Добавить(Сервис); + Скоуп.Добавить("aws4_request"); + + СкоупСтрокой = СтрСоединить(Скоуп, "/"); + + Возврат СкоупСтрокой; + +КонецФункции + +Функция СоздатьСтрокуПодписи(Знач КаноническийЗапрос, Знач Скоуп, Знач ТекущаяДата) + + ШаблонСтроки = ""; + Алгоритм = "AWS4-HMAC-SHA256"; + ДатаISO = OPI_Инструменты.ВременнаяМеткаISO(ТекущаяДата); + ЧислоЧастей = 4; + + КаноническийЗапрос = ПолучитьДвоичныеДанныеИзСтроки(КаноническийЗапрос); + КаноническийЗапрос = OPI_Криптография.Хеш(КаноническийЗапрос, ХешФункция.SHA256); + КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос)); + + Для Н = 1 По ЧислоЧастей Цикл + + ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = ЧислоЧастей, "", Символы.ПС); + + КонецЦикла; + + СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос); + СтрокаПодписи = ПолучитьДвоичныеДанныеИзСтроки(СтрокаПодписи); + + Возврат СтрокаПодписи; + +КонецФункции + +Функция ПолучитьСтрокуКлючейЗаголовков() + + СписокЗаголовков = Новый СписокЗначений; + + Для Каждого Заголовок Из Запрос.Заголовки Цикл + + ТекущийКлюч = Заголовок.Ключ; + ТекущийКлючН = нРег(ТекущийКлюч); + + Если Не СтрНачинаетсяС(ТекущийКлючН, "host") И Не СтрНачинаетсяС(ТекущийКлючН, "x-amz") Тогда + Продолжить; + КонецЕсли; + + СтрокаЗаголовка = нРег(ТекущийКлюч); + СписокЗаголовков.Добавить(СтрокаЗаголовка); + + КонецЦикла; + + СписокЗаголовков.СортироватьПоЗначению(); + + СтрокаЗаголовков = СтрСоединить(СписокЗаголовков.ВыгрузитьЗначения(), ";"); + + Возврат СтрокаЗаголовков; + +КонецФункции + +Функция ПолучитьСтрокуURI() + + URI = Запрос.АдресРесурса; + URI = ?(СтрНачинаетсяС(URI, "/"), URI, "/" + URI); + + НачалоПараметров = СтрНайти(URI, "?"); + + Если НачалоПараметров <> 0 Тогда + URI = Лев(URI, НачалоПараметров - 1); + КонецЕсли; + + Возврат URI; + +КонецФункции + +Функция ПолучитьСтрокуПараметров() + + URI = Запрос.АдресРесурса; + НачалоПараметров = СтрНайти(URI, "?"); + + Если НачалоПараметров = 0 Тогда + + СтрокаПараметров = ""; + + Иначе + + ДлинаURI = СтрДлина(URI); + СтрокаПараметров = Прав(URI, ДлинаURI - НачалоПараметров); + ОбработатьСтрокуПараметровЗапроса(СтрокаПараметров); + + КонецЕсли; + + Возврат СтрокаПараметров; + +КонецФункции + +Функция ПолучитьСтрокуЗаголовков() + + СписокЗаголовков = Новый СписокЗначений; + + Для Каждого Заголовок Из Запрос.Заголовки Цикл + + ТекущийКлюч = Заголовок.Ключ; + ТекущийКлючН = нРег(ТекущийКлюч); + + Если Не СтрНачинаетсяС(ТекущийКлючН, "host") И Не СтрНачинаетсяС(ТекущийКлючН, "x-amz") Тогда + Продолжить; + КонецЕсли; + + СтрокаЗаголовка = нРег(ТекущийКлюч) + ":" + Заголовок.Значение; + СписокЗаголовков.Добавить(СтрокаЗаголовка); + + КонецЦикла; + + СписокЗаголовков.СортироватьПоЗначению(); + + СтрокаЗаголовков = СтрСоединить(СписокЗаголовков.ВыгрузитьЗначения(), Символы.ПС); + СтрокаЗаголовков = СтрокаЗаголовков + Символы.ПС; + + Возврат СтрокаЗаголовков; + +КонецФункции + +Процедура ОбработатьСтрокуПараметровЗапроса(СтрокаПараметров) + + МассивПараметров = СтрРазделить(СтрокаПараметров, "&"); + СписокПараметров = Новый СписокЗначений(); + СписокПараметров.ЗагрузитьЗначения(МассивПараметров); + + СписокПараметров.СортироватьПоЗначению(); + МассивПараметров = СписокПараметров.ВыгрузитьЗначения(); + + Для Н = 0 По МассивПараметров.ВГраница() Цикл + + ПараметрЗапроса = МассивПараметров[Н]; + + Если СтрНайти(ПараметрЗапроса, "=") = 0 Тогда + МассивПараметров[Н] = ПараметрЗапроса + "="; + КонецЕсли; + + КонецЦикла; + + СтрокаПараметров = СтрСоединить(МассивПараметров, "&"); + +КонецПроцедуры + +#КонецОбласти + +#Область OAuth + +Функция ДобавитьЗаголовокOAuthV1() + + ДобавитьЛог("ДобавитьЗаголовокOAuthV1: начало формирования заголовка"); + + OAuthАлгоритм = AuthДанные["OAuthАлгоритм"]; + OAuthХешФункция = AuthДанные["OAuthХешФункция"]; + OAuthToken = AuthДанные["OAuthToken"]; + OAuthSecret = AuthДанные["OAuthSecret"]; + OAuthConsumerKey = AuthДанные["OAuthConsumerKey"]; + OAuthConsumerSecret = AuthДанные["OAuthConsumerSecret"]; + OAuthВерсияAPI = AuthДанные["OAuthВерсияAPI"]; + + МетодХэширования = OAuthАлгоритм + "-" + OAuthХешФункция; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ЗаголовокАвторизации = ""; + СтрокаСигнатуры = ""; + Подпись = ""; + + ТекущаяДатаUNIX = OPI_Инструменты.UNIXTime(ТекущаяДата); + ТекущаяДатаUNIX = OPI_Инструменты.ЧислоВСтроку(ТекущаяДатаUNIX); + + ТаблицаПараметров = Новый ТаблицаЗначений; + ТаблицаПараметров.Колонки.Добавить("Ключ"); + ТаблицаПараметров.Колонки.Добавить("Значение"); + + Если ПолучитьНастройку("ПоляТелаВOAuth") Тогда + + ДобавитьЛог("ДобавитьЗаголовокOAuthV1: добавление полей тела в строку для подписи"); + + Для Каждого Поле Из ЗапросТелоКоллекция Цикл + + ТекущееЗначение = Поле.Значение; + + Если ТипЗнч(ТекущееЗначение) = Тип("ДвоичныеДанные") Тогда + Продолжить; + Иначе + OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущееЗначение); + КонецЕсли; + + НоваяСтрока = ТаблицаПараметров.Добавить(); + НоваяСтрока.Ключ = Поле.Ключ; + НоваяСтрока.Значение = ТекущееЗначение; + + КонецЦикла; + КонецЕсли; + + Если ЗначениеЗаполнено(ЗапросПараметрыURL) Тогда + + ДобавитьЛог("ДобавитьЗаголовокOAuthV1: добавление параметров URL в строку для подписи"); + + Для Каждого ПараметрURL Из ЗапросПараметрыURL Цикл + + НоваяСтрока = ТаблицаПараметров.Добавить(); + НоваяСтрока.Ключ = ПараметрURL.Ключ; + НоваяСтрока.Значение = ПараметрURL.Значение; + + КонецЦикла; + + КонецЕсли; + + ДобавитьЛог("ДобавитьЗаголовокOAuthV1: дополнение строки для подписи учетными данными"); + + НоваяСтрока = ТаблицаПараметров.Добавить(); + НоваяСтрока.Ключ = "oauth_consumer_key"; + НоваяСтрока.Значение = OAuthConsumerKey; + + НоваяСтрока = ТаблицаПараметров.Добавить(); + НоваяСтрока.Ключ = "oauth_token"; + НоваяСтрока.Значение = OAuthToken; + + НоваяСтрока = ТаблицаПараметров.Добавить(); + НоваяСтрока.Ключ = "oauth_version"; + НоваяСтрока.Значение = OAuthВерсияAPI; + + НоваяСтрока = ТаблицаПараметров.Добавить(); + НоваяСтрока.Ключ = "oauth_signature_method"; + НоваяСтрока.Значение = МетодХэширования; + + НоваяСтрока = ТаблицаПараметров.Добавить(); + НоваяСтрока.Ключ = "oauth_timestamp"; + НоваяСтрока.Значение = ТекущаяДатаUNIX; + + НоваяСтрока = ТаблицаПараметров.Добавить(); + НоваяСтрока.Ключ = "oauth_nonce"; + НоваяСтрока.Значение = ТекущаяДатаUNIX; + + Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл + + СтрокаТаблицы.Ключ = КодироватьСтроку(СтрокаТаблицы.Ключ, СпособКодированияСтроки.КодировкаURL); + СтрокаТаблицы.Значение = КодироватьСтроку(СтрокаТаблицы.Значение, СпособКодированияСтроки.КодировкаURL); + + КонецЦикла; + + ТаблицаПараметров.Сортировать("Ключ"); + + Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл + + СтрокаСигнатуры = СтрокаСигнатуры + + СтрокаТаблицы.Ключ + + + "=" + + СтрокаТаблицы.Значение + + "&"; + + КонецЦикла; + + СтрокаСигнатуры = Лев(СтрокаСигнатуры, СтрДлина(СтрокаСигнатуры) - 1); + СтрокаСигнатуры = вРег(ЗапросМетод) + + "&" + + КодироватьСтроку(ЗапросURL , СпособКодированияСтроки.КодировкаURL) + + "&" + + КодироватьСтроку(СтрокаСигнатуры, СпособКодированияСтроки.КодировкаURL); + + Подпись = КодироватьСтроку(OAuthConsumerSecret, СпособКодированияСтроки.КодировкаURL) + + "&" + + КодироватьСтроку(OAuthSecret, СпособКодированияСтроки.КодировкаURL); + + ПодписьДД = ПолучитьДвоичныеДанныеИзСтроки(Подпись); + СигнатураДД = ПолучитьДвоичныеДанныеИзСтроки(СтрокаСигнатуры); + + ДобавитьЛог("ДобавитьЗаголовокOAuthV1: создание подписи"); + + Сигнатура = OPI_Криптография.СоздатьПодпись(ПодписьДД, СигнатураДД, OAuthАлгоритм, OAuthХешФункция); + Сигнатура = КодироватьСтроку(Base64Строка(Сигнатура), СпособКодированияСтроки.КодировкаURL); + + Разделитель = ""","; + + ДобавитьЛог("ДобавитьЗаголовокOAuthV1: создание заголовка авторизации"); + + ЗаголовокАвторизации = ЗаголовокАвторизации + + "OAuth " + + "oauth_consumer_key=""" + OAuthConsumerKey + Разделитель + + + "oauth_token=""" + OAuthToken + Разделитель + + + "oauth_signature_method=""" + МетодХэширования + Разделитель + + + "oauth_timestamp=""" + ТекущаяДатаUNIX + Разделитель + + + "oauth_nonce=""" + ТекущаяДатаUNIX + Разделитель + + + "oauth_version=""" + OAuthВерсияAPI + Разделитель + + + "oauth_signature=" + Сигнатура; + + Запрос.Заголовки.Вставить("Authorization", ЗаголовокАвторизации); + + Возврат ЭтотОбъект; + +КонецФункции + +#КонецОбласти + +#Область Вспомогательные + +Функция ОстановитьРаботу(Знач ИсключениеПриОшибке = Ложь) + + OPI_ПреобразованиеТипов.ПолучитьБулево(ИсключениеПриОшибке); + + ЕстьОшибка = ЗапросИнициализирован().Ошибка; + + Если ЕстьОшибка И ИсключениеПриОшибке Тогда + ВызватьИсключение ПолучитьЛог(Истина); + Иначе + Возврат ЕстьОшибка; + КонецЕсли; + +КонецФункции + +Функция ЗапросИнициализирован() + + Возврат ?(ЗначениеЗаполнено(Инициализирован) + , ЭтотОбъект + , Ошибка("Запрос не инициализирован. Необходимо вызвать функцию Инициализировать() перед началом работы")); + +КонецФункции + +Функция Ошибка(Знач ТекстОшибки) + + Ошибка = Истина; + + Если ФайлТелаВременный И ЗначениеЗаполнено(ЗапросФайлТела) Тогда + + Попытка + УдалитьФайлы(ЗапросФайлТела); + ЗапросФайлТела = Неопределено; + ФайлТелаВременный = Ложь; + Исключение + ДобавитьЛог("Ошибка: Не удалось удалить временный файл при исключении"); + КонецПопытки; + + КонецЕсли; + + Возврат ДобавитьЛог(ТекстОшибки); + +КонецФункции + +Функция ДобавитьЛог(Знач Текст) + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); + + Лог.Добавить(Текст); + + OPI_Инструменты.ОтладочнаяИнформация(Текст); + + Возврат ЭтотОбъект; + +КонецФункции + +Функция ПолучитьНастройку(Знач КлючНастройки) + Возврат Настройки[КлючНастройки]; +КонецФункции + +Процедура УстановитьНастройку(Знач КлючНастройки, Знач Значение) + Настройки[КлючНастройки] = Значение; +КонецПроцедуры + +Процедура УстановитьСтандартныеНастройки() + + ДобавитьЛог("УстановитьСтандартныеНастройки: установка настроек"); + + Настройки = Новый Структура; + Настройки.Вставить("gzip" , Истина); + Настройки.Вставить("ОтдельныеЭлементыМассивов", Ложь); + Настройки.Вставить("КвадратныеСкобкиМассивов" , Ложь); + Настройки.Вставить("КодировкаURL" , Истина); + Настройки.Вставить("КодировкаТелаЗапроса" , "UTF-8"); + Настройки.Вставить("ПоляТелаВOAuth" , Ложь); + +КонецПроцедуры + +Процедура КодироватьURLВURL(URL) Экспорт + + Заглушка = СтрШаблон("@#%1#@", Строка(Новый УникальныйИдентификатор)); + + URL = СтрЗаменить(URL, "&" , Заглушка); + URL = КодироватьСтроку(URL, СпособКодированияСтроки.URLВКодировкеURL); + URL = СтрЗаменить(URL, Заглушка, "&"); + +КонецПроцедуры + +Процедура ГарантироватьТелоКоллекцию() + + Если Не ЗначениеЗаполнено(ЗапросТелоКоллекция) + Или Не OPI_Инструменты.ЭтоКоллекция(ЗапросТелоКоллекция, Истина) Тогда + + Попытка + ЗапросТелоКоллекция = ЗапросТело; + OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ЗапросТелоКоллекция); + Исключение + ЗапросТелоКоллекция = Новый Структура; + КонецПопытки; + + ЗапросТелоКоллекция = ?(ЗначениеЗаполнено(ЗапросТелоКоллекция), ЗапросТелоКоллекция, Новый Структура); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +// #КонецЕсли diff --git a/src/ru/OInt/tools/Modules/internal/Modules/OPI_Инструменты.os b/src/ru/OInt/tools/Modules/internal/Modules/OPI_Инструменты.os index 5509f35614..835ee8e63c 100644 --- a/src/ru/OInt/tools/Modules/internal/Modules/OPI_Инструменты.os +++ b/src/ru/OInt/tools/Modules/internal/Modules/OPI_Инструменты.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os +// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os // MIT License @@ -727,9 +727,9 @@ Попытка - ЭтоОтладка = Неопределено; + ЭтоОтладка = Неопределено; ЭтоОтладка = ПолучитьПеременнуюСреды("OINT_DEBUG"); - ЭтоОтладка = ?(ЗначениеЗаполнено(ЭтоОтладка), ЭтоОтладка, "NO"); + ЭтоОтладка = ?(ЗначениеЗаполнено(ЭтоОтладка), ЭтоОтладка, "NO"); Исключение ЭтоОтладка = "NO"; @@ -1144,156 +1144,3 @@ КонецФункции #КонецОбласти - - -#Region Alternate - -Function RequestParametersToString(Val Parameters, Val SplitArrayParams = False, Val Start = True) Export - Return ПараметрыЗапросаВСтроку(Parameters, SplitArrayParams, Start); -EndFunction - -Function RequestParametersToMap(Val ParameterString) Export - Return ПараметрыЗапросаВСоответствие(ParameterString); -EndFunction - -Function SplitURL(Val URL) Export - Return РазбитьURL(URL); -EndFunction - -Function GetDomain(Val ConnectionString) Export - Return ПолучитьДомен(ConnectionString); -EndFunction - -Function JsonToStructure(Val Text, Val ToMap = True) Export - Return JsonВСтруктуру(Text, ToMap); -EndFunction - -Function JSONString(Val Data, Val Escaping = "None", Val LineBreaks = True, Val DoubleQuotes = True) Export - Return JSONСтрокой(Data, Escaping, LineBreaks, DoubleQuotes); -EndFunction - -Function ReadJSONFile(Val Path) Export - Return ПрочитатьJSONФайл(Path); -EndFunction - -Function ProcessXML(XML) Export - Return ОбработатьXML(XML); -EndFunction - -Function GetXML(Value, TargetNamespace = "", XMLWriter = Undefined) Export - Return ПолучитьXML(Value, TargetNamespace, XMLWriter); -EndFunction - -Procedure AddField(Val Name, Val Value, Val Type, Collection) Export - ДобавитьПоле(Name, Value, Type, Collection); -EndProcedure - -Procedure AddKeyValue(Table, Val Key, Val Value) Export - ДобавитьКлючЗначение(Table, Key, Value); -EndProcedure - -Procedure RemoveEmptyCollectionFields(Collection) Export - УдалитьПустыеПоляКоллекции(Collection); -EndProcedure - -Procedure ValueToArray(Value) Export - ЗначениеВМассив(Value); -EndProcedure - -Function CollectionFieldExist(Val Collection, Val Field, FieldValue = Undefined) Export - Return ПолеКоллекцииСуществует(Collection, Field, FieldValue); -EndFunction - -Function FindMissingCollectionFields(Val Collection, Val Fields) Export - Return НайтиОтсутствующиеПоляКоллекции(Collection, Fields); -EndFunction - -Function ClearCollectionRecursively(Val Collection) Export - Return ОчиститьКоллекциюРекурсивно(Collection); -EndFunction - -Function CopyCollection(Val Collection) Export - Return КопироватьКоллекцию(Collection); -EndFunction - -Function GetOr(Val Collection, Val Field, Val DefaultValue) Export - Return ПолучитьИли(Collection, Field, DefaultValue); -EndFunction - -Function IsOneScript() Export - Return ЭтоOneScript(); -EndFunction - -Procedure ProgressInformation(Val Current, Val Total, Val Unit, Val Divider = 1) Export - ИнформацияОПрогрессе(Current, Total, Unit, Divider); -EndProcedure - -Procedure DebugInfo(Val Text) Export - ОтладочнаяИнформация(Text); -EndProcedure - -Procedure ReplaceSpecialCharacters(Text, Markup = "Markdown") Export - ЗаменитьСпецСимволы(Text, Markup); -EndProcedure - -Procedure Pause(Val Seconds) Export - Пауза(Seconds); -EndProcedure - -Procedure ReplaceEscapeSequences(Text) Export - ЗаменитьУправляющиеПоследовательности(Text); -EndProcedure - -Procedure RestoreEscapeSequences(Text) Export - ВернутьУправляющиеПоследовательности(Text); -EndProcedure - -Procedure StreamToStart(CurrentStream) Export - ПотокВНачало(CurrentStream); -EndProcedure - -Function NumberToString(Val Value) Export - Return ЧислоВСтроку(Value); -EndFunction - -Function GetCurrentDate() Export - Return ПолучитьТекущуюДату(); -EndFunction - -Function DateRFC3339(Val Date, Val Offset = "Z") Export - Return ДатаRFC3339(Date, Offset); -EndFunction - -Function ConvertDataWithSizeRetrieval(Data, Val MinimumStreamSize = 0) Export - Return ПреобразоватьДанныеСПолучениемРазмера(Data, MinimumStreamSize); -EndFunction - -Function ISOTimestamp(Val Date) Export - Return ВременнаяМеткаISO(Date); -EndFunction - -Function CreateStream(Val FilePath = Undefined) Export - Return СоздатьПоток(FilePath); -EndFunction - -Function IsWindows() Export - Return ЭтоWindows(); -EndFunction - -Function MergeData(Val Data, Val Addition) Export - Return СклеитьДанные(Data, Addition); -EndFunction - -Function IsPrimitiveType(Val Value) Export - Return ЭтоПримитивныйТип(Value); -EndFunction - -Function ThisIsCollection(Val Value, Val KeyValue = False) Export - Return ЭтоКоллекция(Value, KeyValue); -EndFunction - -Procedure WriteOnCurrentLine(Val Text, Val Color = "", Val ToStart = False) Export - ВывестиТекстВТекущуюСтроку(Text, Color, ToStart); -EndProcedure - -#EndRegion \ No newline at end of file diff --git a/src/ru/OInt/tools/Modules/internal/Modules/OPI_Криптография.os b/src/ru/OInt/tools/Modules/internal/Modules/OPI_Криптография.os index bac2a35ff6..b0b9f517da 100644 --- a/src/ru/OInt/tools/Modules/internal/Modules/OPI_Криптография.os +++ b/src/ru/OInt/tools/Modules/internal/Modules/OPI_Криптография.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os +// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os // MIT License @@ -240,24 +240,3 @@ #КонецОбласти #КонецОбласти - - -#Region Alternate - -Function CreateSignature(Val SignKey, Val SignatureData, Val Algorithm, Val HashFunc) Export - Return СоздатьПодпись(SignKey, SignatureData, Algorithm, HashFunc); -EndFunction - -Function Hash(BinaryData, Type) Export - Return Хеш(BinaryData, Type); -EndFunction - -Function UniteBinaryData(BinaryData1, BinaryData2) Export - Return СклеитьДвоичныеДанные(BinaryData1, BinaryData2); -EndFunction - -Function RepeatString(String, Count) Export - Return ПовторитьСтроку(String, Count); -EndFunction - -#EndRegion \ No newline at end of file