├── .feature └── Начальное заполнение.feature ├── .gitignore ├── LICENSE ├── Other └── Консоль mmc (1с эксперт).msc ├── README.md ├── build ├── ЗанимательныеЗамеры.epf └── Шаблон обработки с тестами.epf ├── docs ├── Заметки по ERP.md ├── Командная строка 1с.md └── Шаблоны кода │ └── ШаблоныКода.st ├── src ├── 1с Исполнитель │ └── TDD.sbsl ├── Bat │ ├── decompileeppf.bat │ ├── readme.md │ └── tests │ │ ├── start_tests.bat │ │ ├── vrunner json │ │ ├── vrunner_ext.json │ │ └── vrunner_tests.json │ │ └── xUnitParams.json ├── RabbitMQ │ ├── RabbitMQ.bsl │ ├── ОбменСRabbitMQ.xml │ └── ОбменСRabbitMQ │ │ └── Forms │ │ ├── Форма.xml │ │ └── Форма │ │ └── Ext │ │ ├── Form.xml │ │ └── Form │ │ └── Module.bsl ├── oScript │ ├── ЗавершитьВсеПроцессы1С.os │ ├── ОбновитьТестовуюБазу.os │ └── Отключить безопасный режим.os ├── Анализ ТЖ │ └── Call_exemple.sh ├── Анализ метаданных │ ├── АнализМетаданныхКонфигурации.xml │ └── АнализМетаданныхКонфигурации │ │ └── Forms │ │ ├── Форма.xml │ │ └── Форма │ │ └── Ext │ │ ├── Form.xml │ │ └── Form │ │ └── Module.bsl ├── Интеграции │ ├── ИнтеграцияDaData.xml │ ├── ИнтеграцияDaData │ │ └── Forms │ │ │ ├── Форма.xml │ │ │ └── Форма │ │ │ └── Ext │ │ │ ├── Form.xml │ │ │ └── Form │ │ │ └── Module.bsl │ ├── СравнениеДвухТекстовDiffchecker.xml │ └── СравнениеДвухТекстовDiffchecker │ │ └── Forms │ │ ├── Форма.xml │ │ └── Форма │ │ └── Ext │ │ ├── Form.xml │ │ └── Form │ │ └── Module.bsl ├── Паттерны │ └── Пример работы с адаптером.bsl ├── Работа с системными настройками │ ├── РаботаССистемнымиНастройками.xml │ └── РаботаССистемнымиНастройками │ │ ├── Ext │ │ ├── Help.xml │ │ ├── Help │ │ │ └── ru.html │ │ └── ObjectModule.bsl │ │ └── Forms │ │ ├── Форма.xml │ │ └── Форма │ │ └── Ext │ │ ├── Form.xml │ │ └── Form │ │ └── Module.bsl ├── Расширения │ └── Доработка печати (УНФ) │ │ ├── Catalogs │ │ └── ДоговорыКонтрагентов.xml │ │ ├── CommonPictures │ │ ├── ВидимостьРазрешена.xml │ │ ├── ИсходящийЗапросЕГАИС.xml │ │ ├── Набор.xml │ │ ├── Наборы.xml │ │ ├── Органайзер.xml │ │ ├── ПрослеживаемыйТовар.xml │ │ ├── СостояниеОригиналаПервичногоДокументаОригиналНеПолучен.xml │ │ └── СтатусыСерийНоменклатуры.xml │ │ ├── ConfigDumpInfo.xml │ │ ├── Configuration.xml │ │ ├── DataProcessors │ │ ├── ПечатьСчетНаОплату.xml │ │ └── ПечатьСчетНаОплату │ │ │ ├── Ext │ │ │ └── ManagerModule.bsl │ │ │ └── Templates │ │ │ ├── ПФ_MXL_СчетНаОплату.xml │ │ │ └── ПФ_MXL_СчетНаОплату │ │ │ └── Ext │ │ │ └── Template.xml │ │ ├── Documents │ │ ├── ЗаказПокупателя.xml │ │ ├── РасходнаяНакладная.xml │ │ ├── РасходнаяНакладная │ │ │ ├── Ext │ │ │ │ └── ObjectModule.bsl │ │ │ └── Forms │ │ │ │ ├── ФормаДокумента.xml │ │ │ │ └── ФормаДокумента │ │ │ │ └── Ext │ │ │ │ ├── Form.xml │ │ │ │ └── Form │ │ │ │ └── Module.bsl │ │ └── СчетНаОплату.xml │ │ ├── Enums │ │ ├── ВариантыЗаполненияРасшифровкиПлатежа.xml │ │ ├── СервисыДоставки.xml │ │ ├── СпособыЗачетаИРаспределенияПлатежей.xml │ │ ├── ТипыДенежныхСредств.xml │ │ └── ТипыДокументовЭДО.xml │ │ ├── Languages │ │ └── Русский.xml │ │ ├── Roles │ │ └── ДПЗ_ОсновнаяРоль.xml │ │ └── StyleItems │ │ ├── ИтогиФонГруппы.xml │ │ ├── СветлыйСерый.xml │ │ └── ФонУправляющегоПоля.xml └── Эксперименты │ ├── ЗапросыВПлатформе8_3_20.xml │ ├── ЗапросыВПлатформе8_3_20 │ └── Forms │ │ ├── Форма.xml │ │ └── Форма │ │ └── Ext │ │ ├── Form.xml │ │ └── Form │ │ └── Module.bsl │ ├── РаботаСАсинх.xml │ ├── РаботаСАсинх │ ├── Ext │ │ └── ObjectModule.bsl │ └── Forms │ │ ├── Форма.xml │ │ └── Форма │ │ └── Ext │ │ ├── Form.xml │ │ └── Form │ │ └── Module.bsl │ ├── РаботаФункцийПодстановкиПараметровВСтроку.xml │ └── РаботаФункцийПодстановкиПараметровВСтроку │ └── Forms │ ├── Форма.xml │ └── Форма │ └── Ext │ ├── Form.xml │ └── Form │ └── Module.bsl └── tests ├── start_tests_exemple ├── only allure.bat ├── start_bdd_tests.bat ├── start_tests.bat ├── vanessa_json │ └── vanessa.json └── vrunner json │ └── vrunner_tests.json ├── unit tests ├── ВыгрузкаДанных.xml ├── ВыгрузкаДанных │ └── Ext │ │ └── ObjectModule.bsl ├── Шаблон обработки с тестами.xml └── Шаблон обработки с тестами │ ├── Ext │ └── ObjectModule.bsl │ └── Forms │ ├── Форма.xml │ └── Форма │ └── Ext │ ├── Form.xml │ └── Form │ └── Module.bsl ├── vrunner.json └── xUnitParams.json /.gitignore: -------------------------------------------------------------------------------- 1 | custom-dictionary-workspace.txt 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # **Наработки по 1С для демонстрации кода** 2 | 3 | С 01.05.2024 помечаю данный репозиторий как неактивный и пока оставляю для истории. 4 | 5 | Предназначен для хранения небольших разработок (тестовых и не очень). 6 | 7 | ## Краткое описание структуры 8 | 9 | - .feature - наработки по bdd-тестированию, в частности пример сценария для генерации тестовых данных 10 | - docs - заметки по разным темам; там же лежат шаблоны коды 11 | - Other - пока туда сложил файл настройки mmc, сделанный в рамках подготовки к 1С:Эксперт (2022 год) 12 | - src - исходники обработок и наработок за разные года 13 | - tests - наработки по юнит-тестированию (xUnitRunner): json-автозапуска и примеры тестов 14 | 15 | ## Описание обработок (src) 16 | 17 | ### Анализ метаданных 18 | 19 | Год 2018 - для обучения работы с метаданными и с тем, какие реквизиты и как можно посмотреть - сделал простенький построитель дерева избранных разделов метаданых 20 | 21 | ### Интеграции 22 | 23 | ИнтеграцияDaData (год 2019) - возникла потребность в интеграции с сервисом для проверки клиентов и адресов. Это была обработка для тестирования. 24 | 25 | СравнениеДвухТекстовDiffchecker (год 2021) - возникла задача сравнения текстов - накидал на коленке интеграцию с одним из сервисов для примера 26 | 27 | ### 1с Исполнитель 28 | 29 | TDD.sbsl (год 2022) - попытка реализовать подход Бека - изучения языка через написание тестов, на примере изучения языка 1С:Исполнитель. 30 | 31 | ### Паттерны 32 | 33 | Пример работы с адаптером.bsl (Год 2022) - выдранный из контекста пример, как я понимаю паттерн "Адаптер". На основе видео от жёлтого клуба где рефакторили модуль 34 | 35 | ### Эксперименты 36 | 37 | РаботаСАсинх (Год 2022) - проба пера для работы с новым механизмом Асинх, для укрепления понимания 38 | -------------------------------------------------------------------------------- /build/ЗанимательныеЗамеры.epf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeltyr/z1c_develop_nonactive/a1ceeffc7b9de91e1b1cb0a0822369ab8d8e1037/build/ЗанимательныеЗамеры.epf -------------------------------------------------------------------------------- /build/Шаблон обработки с тестами.epf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeltyr/z1c_develop_nonactive/a1ceeffc7b9de91e1b1cb0a0822369ab8d8e1037/build/Шаблон обработки с тестами.epf -------------------------------------------------------------------------------- /docs/Заметки по ERP.md: -------------------------------------------------------------------------------- 1 | # Заметки по ERP 2 | 3 | ## Общие модули 4 | 5 | * Модуль "ПартнерыИКонтрагенты" 6 | * Содержит функции для работы и синхронизации справочников, иной раз удобно использовать функции оттуда, н-р: 7 | 8 | ```1с 9 | КонтрагентСсылка = ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(ПартнерСсылка); 10 | ``` 11 | 12 | * Если стоит функциональная опция "ИспользоватьПартнеровКакКонтрагентов" создавать надо и партнёров и контрагентов 13 | * при этом часть информации для отображения в форме контрагента тянется из партнёра (н-р: дата рождения) 14 | 15 | * Модуль "ОбменССайтом...." - содержит алгоритмы по загрузке данных из сторонних программ, чтоб не выдумывать свой велосипед 16 | 17 | ```1с 18 | ОбменССайтомПереопределяемый.ЗаполнитьЗаказ(ДокументОбъект, РеквизитыЗаказа, СвойстваЗаказа, ПрикладныеПараметры, ОписаниеОшибки, Успешно); 19 | 20 | СамообслуживаниеСервер.ОформитьЗаказ(); 21 | ``` 22 | 23 | ## Работа с контактной информацией 24 | 25 | ```1с 26 | // ПАРАМЕТРЫ: 27 | // ОбъектДляЗаполнения - СправочникОбъект.Контрагенты, СправочникОбъект.Партнеры 28 | // ДанныеДляЗагрузки - Структура 29 | // ДатаЗагрузки - Дата 30 | // 31 | Процедура ЗаполнитьКонтактнуюИнформацию(ОбъектДляЗаполнения, ДанныеДляЗагрузки, ДатаЗагрузки) 32 | 33 | ДатаЗагрузки = ТекущаяДатаСеанса(); 34 | 35 | Если ТипЗнч(ОбъектДляЗаполнения) = Тип("СправочникОбъект.Партнеры") Тогда 36 | 37 | ВидАдрес = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("АдресПартнера"); 38 | ВидТелефон = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("ТелефонПартнера"); 39 | ВидЭлектронныйАдрес = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("EmailПартнера"); 40 | 41 | Иначе 42 | 43 | ВидАдрес = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("ЮрАдресКонтрагента"); 44 | ВидТелефон = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("ТелефонКонтрагента"); 45 | ВидЭлектронныйАдрес = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("EmailКонтрагента"); 46 | 47 | КонецЕсли; 48 | 49 | // адрес 50 | ДанныеАдреса = СтрШаблон("%1, %2 г", ДанныеДляЗагрузки.Страна, ДанныеДляЗагрузки.Город); 51 | УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию( 52 | ОбъектДляЗаполнения, 53 | ДанныеАдреса, 54 | ВидАдрес, 55 | ДатаЗагрузки); 56 | 57 | // телефон 58 | ДанныеТелефона = ДанныеДляЗагрузки.Телефон; 59 | УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию( 60 | ОбъектДляЗаполнения, 61 | ДанныеТелефона, 62 | ДанныеДляЗагрузки.Телефон, 63 | ДатаЗагрузки); 64 | 65 | // e-mail 66 | УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию( 67 | ОбъектДляЗаполнения, 68 | ДанныеДляЗагрузки.ЭлектронныйАдрес, 69 | ВидЭлектронныйАдрес, 70 | ДатаЗагрузки); 71 | 72 | КонецПроцедуры 73 | ``` 74 | -------------------------------------------------------------------------------- /docs/Командная строка 1с.md: -------------------------------------------------------------------------------- 1 | # Работа из командной строки с 1С 2 | 3 | 1. Пример создания информационной базы 4 | 5 | ```cmd 6 | 7 | rem Создание информационной базы 8 | 9 | "C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" CREATEINFOBASE "File=""C:\Work\1c_bases\test""" 10 | 11 | ``` 12 | 13 | 2. Небольшой скрипт: обновить ИБ из хранилища, сохранить ИБ в файл, загрузить ИБ в другую конфигурацию 14 | 15 | ```cmd 16 | 17 | rem Обновить конфигурацию-источник из хранилища до последней версии 18 | 19 | "C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"" /ConfigurationRepositoryF"tcp://test:1849/ERP/ERPdev" /ConfigurationRepositoryN "testUser" /ConfigurationRepositoryP "testPasswd" /ConfigurationRepositoryUpdateCfg -force /UpdateDBCfg 20 | 21 | rem Выгрузить конфигурацию-источник в файл 22 | 23 | "C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"" /ConfigurationRepositoryF"tcp://test:1849/ERP/ERPdev" /ConfigurationRepositoryN "testUser" /ConfigurationRepositoryP "testPasswd" /DumpCfg"C:\tmp\tempCFG.cf" 24 | 25 | rem Загрузить конфигурацию источника в конфигурацию-приёмник 26 | 27 | "C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /LoadCfg "C:\tmp\tempCFG.cf" 28 | 29 | rem обновить базу данных после загрузки 30 | 31 | "C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /UpdateDBCfg 32 | 33 | rem отвязать загруженную конфигурацию от хранилища 34 | 35 | "C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /ConfigurationRepositoryUnbindCfg -force 36 | 37 | ``` 38 | 39 | 3. Создать для базы хранилище 40 | 41 | ```cmd 42 | 43 | rem Создание хранилища конфигурации 44 | 45 | "C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /ConfigurationRepositoryCreate /ConfigurationRepositoryF"tcp://test/ERP/test/test" /ConfigurationRepositoryN "Администратор" /ConfigurationRepositoryP "123" 46 | ``` 47 | 48 | 4. Создать пользователя хранилища 49 | 50 | ```cmd 51 | 52 | rem Создание пользователя 53 | 54 | "C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /ConfigurationRepositoryF"tcp://test/ERP/test/test" /ConfigurationRepositoryN "Администратор" /ConfigurationRepositoryP "123" /ConfigurationRepositoryAddUser -User tests -Pwd test -Rights ReadOnly 55 | 56 | ``` 57 | -------------------------------------------------------------------------------- /src/1с Исполнитель/TDD.sbsl: -------------------------------------------------------------------------------- 1 | метод assert(Утверждение:Булево, ДополнительнаяИнформация:Строка = "") 2 | 3 | пер ТекстСообщения:Строка 4 | 5 | если Утверждение 6 | 7 | ТекстСообщения = "Утверждение ИСТИНО" 8 | 9 | иначе если ДополнительнаяИнформация != "" 10 | 11 | ТекстСообщения = "Утверждение ЛОЖНО: " + ДополнительнаяИнформация 12 | 13 | иначе 14 | 15 | ТекстСообщения = "Утверждение ЛОЖНО" 16 | ; 17 | 18 | Консоль.Записать(ТекстСообщения) 19 | ; 20 | 21 | метод Тест_СформироватьСообщениеПриветМир():Булево 22 | 23 | пер Утверждение:Булево 24 | пер ДополнительнаяИнформация:Строка = "" 25 | 26 | попытка 27 | 28 | Утверждение = ("Привет мир" == СформироватьСообщениеПриветМир()) 29 | 30 | поймать искл: Исключение 31 | 32 | Утверждение = Ложь 33 | ДополнительнаяИнформация = искл.Информация() 34 | 35 | ; 36 | 37 | assert(Утверждение, "вернулась неожиданная строка") 38 | 39 | возврат Утверждение 40 | 41 | ; 42 | 43 | метод Тест_СформироватьОшибочноеСообщениеПриветМир():Булево 44 | 45 | пер Утверждение:Булево 46 | пер ДополнительнаяИнформация:Строка = "" 47 | 48 | попытка 49 | 50 | Утверждение = ("Привет мир" == СформироватьОшибочноеСообщениеПриветМир()) 51 | 52 | поймать искл: Исключение 53 | 54 | Утверждение = Ложь 55 | ДополнительнаяИнформация = искл.Описание 56 | ; 57 | 58 | assert(Утверждение, ДополнительнаяИнформация) 59 | 60 | возврат Утверждение 61 | 62 | ; 63 | 64 | метод СформироватьОшибочноеСообщениеПриветМир():Строка 65 | 66 | выбросить новый ЙяКреведко("йя креведко") 67 | 68 | ; 69 | 70 | исключение ЙяКреведко 71 | 72 | ; 73 | 74 | метод СформироватьСообщениеПриветМир():Строка 75 | 76 | возврат "Привет мир" 77 | 78 | ; 79 | 80 | метод Скрипт() 81 | 82 | пер Успешно:Число = 0 83 | пер Неуспешно:Число = 0 84 | 85 | Консоль.Записать(Успешно) 86 | если Тест_СформироватьСообщениеПриветМир() 87 | Успешно += 1 88 | иначе 89 | Неуспешно += 1 90 | ; 91 | если Тест_СформироватьОшибочноеСообщениеПриветМир() 92 | Успешно += 1 93 | иначе 94 | Неуспешно += 1 95 | ; 96 | пер Текст:Строка = "Успешно: %Успешно, Не успешно: %Неуспешно" 97 | 98 | Консоль.Записать(Текст) 99 | 100 | ; 101 | 102 | -------------------------------------------------------------------------------- /src/Bat/decompileeppf.bat: -------------------------------------------------------------------------------- 1 | cd "C:\VSA\develop.git\" 2 | call vrunner decompileepf "./build/ext" "./src/ext" 3 | call vrunner decompileepf "./build/old_test" "./src/old_test" 4 | call vrunner decompileepf "./build/tests" "./src/tests" 5 | 6 | -------------------------------------------------------------------------------- /src/Bat/readme.md: -------------------------------------------------------------------------------- 1 | decompileeppf - скрипт разбора epf на составляющие через vrunner 2 | tests - запуск юнит-тестироания через vrunner -------------------------------------------------------------------------------- /src/Bat/tests/start_tests.bat: -------------------------------------------------------------------------------- 1 | cd "vrunner json/" 2 | call vrunner xunit --settings vrunner_ext.json 3 | call vrunner xunit --settings vrunner_tests.json 4 | 5 | cd "../../build/" 6 | call allure generate --clean allure -o html_report 7 | call allure open html_report -------------------------------------------------------------------------------- /src/Bat/tests/vrunner json/vrunner_ext.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": { 3 | "--ibconnection": "/Sdev-erp\\erp_dev_2", 4 | "--db-user": "Админ", 5 | "--db-pwd": "", 6 | "--v8version":"8.3.20", 7 | "---no-wait": "", 8 | "--ordinaryapp": "-1" 9 | }, 10 | "xunit": { 11 | "--xddConfig": "./tests/xUnitParams.json", 12 | "testsPath": "./build/ext", 13 | "--reportsxunit": "ГенераторОтчетаAllureXMLВерсия2{./build/allure/allure.xml}", 14 | "--xddExitCodePath": "./build/xddExitCodePath.txt", 15 | "--testclient": "Админ::48223", 16 | "--testclient-additional" : "/iTaxi" 17 | } 18 | } -------------------------------------------------------------------------------- /src/Bat/tests/vrunner json/vrunner_tests.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": { 3 | "--ibconnection": "/Sdev-erp\\erp_dev_2", 4 | "--db-user": "Админ", 5 | "--db-pwd": "", 6 | "--v8version":"8.3.20", 7 | "---no-wait": "", 8 | "--ordinaryapp": "-1" 9 | }, 10 | "xunit": { 11 | "--xddConfig": "./tests/xUnitParams.json", 12 | "testsPath": "./build/tests", 13 | "--reportsxunit": "ГенераторОтчетаAllureXMLВерсия2{./build/allure/allure.xml}", 14 | "--xddExitCodePath": "./build/xddExitCodePath.txt", 15 | "--testclient": "Админ::48223", 16 | "--testclient-additional" : "/iTaxi" 17 | } 18 | } -------------------------------------------------------------------------------- /src/Bat/tests/xUnitParams.json: -------------------------------------------------------------------------------- 1 | { 2 | "Отладка":false, 3 | "ВыводитьПодробноеПредставлениеОшибки": true, 4 | "ДобавлятьИмяПользователяВПредставлениеТеста":true, 5 | "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, 6 | "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", 7 | "ОбластьДанныхМенеджера": 4512, 8 | "smoke" : { 9 | } 10 | } -------------------------------------------------------------------------------- /src/RabbitMQ/RabbitMQ.bsl: -------------------------------------------------------------------------------- 1 | // проба использования библиотеки: https://sbpg.atlassian.net/wiki/spaces/1C2RMQ/overview 2 | // 3 | 4 | Функция ПараметрыПодключенияAMQP() 5 | 6 | параметры = новый Структура; 7 | параметры.Вставить("HostName"); 8 | параметры.Вставить("UserName"); 9 | параметры.Вставить("Password"); 10 | параметры.Вставить("Port"); 11 | параметры.Вставить("VirtualHost"); 12 | возврат параметры; 13 | 14 | КонецФункции 15 | 16 | Функция ПараметрыПодключенияAMQPПоУмолчанию() 17 | 18 | параметры = новый Структура; 19 | параметры.Вставить("HostName", "192.168.0.1"); 20 | параметры.Вставить("UserName", ""); 21 | параметры.Вставить("Password", ""); 22 | параметры.Вставить("Port", ""); 23 | параметры.Вставить("VirtualHost", ""); 24 | Возврат параметры; 25 | 26 | КонецФункции 27 | 28 | Функция ПараметрыОбменаБезОчереди() 29 | 30 | ПараметрыОбмена = Новый Структура; 31 | ПараметрыОбмена.Вставить("ИмяОбмена"); 32 | ПараметрыОбмена.Вставить("ИмяМаршрута"); 33 | Возврат ПараметрыОбмена; 34 | 35 | КонецФункции 36 | 37 | Функция ПараметрыОбменаСОчередью() 38 | 39 | ПараметрыОбмена = Новый Структура; 40 | ПараметрыОбмена.Вставить("ИмяОбмена"); 41 | ПараметрыОбмена.Вставить("ИмяМаршрута"); 42 | ПараметрыОбмена.Вставить("ИмяОчереди"); 43 | Возврат ПараметрыОбмена; 44 | 45 | КонецФункции 46 | 47 | Функция ИменаМаршрутов() 48 | 49 | имена = новый Структура; 50 | имена.Вставить("Розница", "Roznica"); 51 | Возврат имена; 52 | 53 | КонецФункции 54 | 55 | 56 | Функция ИмяОбмена() 57 | 58 | Возврат "test"; 59 | 60 | КонецФункции 61 | 62 | Функция ИмяОтправителя() 63 | 64 | возврат "testSend"; 65 | 66 | КонецФункции // ИмяОтправителя() 67 | 68 | Функция ИдентификаторСообщения() 69 | 70 | Возврат Строка(Новый УникальныйИдентификатор); 71 | 72 | КонецФункции // ИдентификаторСообщения() 73 | 74 | 75 | Функция ПодключитьсяКФабрикеAMQP() 76 | 77 | Попытка 78 | ФабрикаAMQP = Новый COMОбъект("RabbitMQ.Client.ConnectionFactory"); 79 | Исключение 80 | ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 81 | ЗаписьЖурналаРегистрации("RabbitMQ: подключение к фабрике", 82 | УровеньЖурналаРегистрации.Ошибка, 83 | Метаданные().ПолноеИмя(), 84 | , 85 | ТекстОшибки); 86 | ФабрикаAMQP = Неопределено; 87 | КонецПопытки; 88 | возврат ФабрикаAMQP; 89 | 90 | КонецФункции 91 | 92 | Функция ОткрытьСоединениеRabbitMQ(параметры) 93 | 94 | ФабрикаAMQP = ПодключитьсяКФабрикеAMQP(); 95 | если ФабрикаAMQP = Неопределено тогда 96 | возврат Неопределено; 97 | КонецЕсли; 98 | ЗаполнитьЗначенияСвойств(ФабрикаAMQP, параметры); 99 | Попытка 100 | соединение = ФабрикаAMQP.CreateConnection(); 101 | Исключение 102 | ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 103 | ЗаписьЖурналаРегистрации("RabbitMQ: создание соединения (CreateConnection)", 104 | УровеньЖурналаРегистрации.Ошибка, 105 | Метаданные().ПолноеИмя(), 106 | , 107 | ТекстОшибки); 108 | соединение = Неопределено; 109 | КонецПопытки; 110 | возврат соединение; 111 | 112 | КонецФункции 113 | 114 | Функция НетНастройкиОбменаВRabbitMQ(Модель, ИмяОбмена) 115 | 116 | Отказ = Ложь; 117 | Попытка 118 | Модель.ExchangeDeclarePassive(ИмяОбмена); 119 | Исключение 120 | Отказ = Истина; 121 | ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 122 | Заголовок = СтрШаблон("RabbitMQ: имя обмен %1 не существует", ИмяОбмена); 123 | ЗаписьЖурналаРегистрации(Заголовок, 124 | УровеньЖурналаРегистрации.Ошибка, 125 | Метаданные().ПолноеИмя(), 126 | , 127 | ТекстОшибки); 128 | КонецПопытки; 129 | возврат Отказ; 130 | 131 | КонецФункции 132 | 133 | Функция НетОчередиВRabbitMQ(Модель, ИмяОчереди) 134 | 135 | Отказ = Ложь; 136 | Попытка 137 | Модель.QueueDeclarePassive(ИмяОчереди); 138 | Исключение 139 | Отказ = Истина; 140 | ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 141 | Заголовок = СтрШаблон("RabbitMQ: очередь %1 не существует", ИмяОчереди); 142 | ЗаписьЖурналаРегистрации(Заголовок, 143 | УровеньЖурналаРегистрации.Ошибка, 144 | Метаданные().ПолноеИмя(), 145 | , 146 | ТекстОшибки); 147 | КонецПопытки; 148 | возврат Отказ; 149 | 150 | КонецФункции 151 | 152 | Функция ВыполнитьКомандуBasicPublish(модель, ПараметрыОбмена, параметрыОтправки, СтрокаSafeArray) 153 | 154 | Попытка 155 | модель.BasicPublish( 156 | ПараметрыОбмена.ИмяОбмена, 157 | ПараметрыОбмена.ИмяМаршрута, 158 | False, 159 | ПараметрыОтправки, 160 | СтрокаSafeArray); 161 | Успех = Истина; 162 | Исключение 163 | Успех = Ложь; 164 | ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 165 | ЗаписьЖурналаРегистрации("RabbitMQ: отправка сообщения (BasicPublish)", 166 | УровеньЖурналаРегистрации.Ошибка, 167 | Метаданные().ПолноеИмя(), 168 | , 169 | ТекстОшибки); 170 | КонецПопытки; 171 | 172 | Возврат Успех; 173 | 174 | КонецФункции 175 | 176 | Процедура ЗакрытьСодединениеСRabbitMQ(Модель, Соединение) 177 | 178 | Модель.Close(); 179 | Соединение.Close(); 180 | 181 | КонецПроцедуры 182 | 183 | 184 | Функция ПодготовитьСообщениеКОтправке(СообщениеДляОтправки) 185 | 186 | Кодировка = КодировкаТекста.UTF8; 187 | ПотокВПамяти = ПолучитьДвоичныеДанныеИзСтроки(СообщениеДляОтправки, Кодировка).ОткрытьПотокДляЧтения(); 188 | ЧтениеДанных = Новый ЧтениеДанных(ПотокВПамяти, Кодировка); 189 | СтрокаSafeArray = Новый COMSafeArray("VT_UI1", ПотокВПамяти.Размер()); 190 | Пока ПотокВПамяти.ТекущаяПозиция() < ПотокВПамяти.Размер() Цикл 191 | Позиция = ПотокВПамяти.ТекущаяПозиция(); 192 | СтрокаSafeArray.SetValue(Позиция, ЧтениеДанных.ПрочитатьБайт()); 193 | КонецЦикла; 194 | ЧтениеДанных.Закрыть(); 195 | ПотокВПамяти.Закрыть(); 196 | Возврат СтрокаSafeArray; 197 | 198 | КонецФункции // ПодготовитьСообщениеКОтправке() 199 | 200 | Функция ПараметрыОтправкиПоУмолчанию() 201 | 202 | параметры = Новый Структура; 203 | параметры.Вставить("AppId", ИмяОтправителя()); 204 | параметры.Вставить("ContentType", "application/json"); // тип передоваемых данных // text/plain application/json 205 | параметры.Вставить("DeliveryMode", МетодыХранения().ХранитьНаДиске); 206 | параметры.Вставить("CorrelationId", ИдентификаторСообщения()); 207 | возврат параметры; 208 | 209 | КонецФункции // ПараметрыОтправкиПоУмолчанию() 210 | 211 | Функция МетодыХранения() 212 | 213 | параметры = Новый Структура; 214 | параметры.Вставить("ХранитьВОЗУ", 1); 215 | параметры.Вставить("ХранитьНаДиске", 2); 216 | возврат параметры; 217 | 218 | КонецФункции // МетодыХранения() 219 | 220 | Функция ОтправитьВRabbitMQ(СообщениеДляОтправки, ИмяМаршрута, ИмяОчереди = "") Экспорт 221 | 222 | параметры = ПараметрыПодключенияAMQP(); 223 | ЗаполнитьЗначенияСвойств(параметры, ПараметрыПодключенияAMQPПоУмолчанию()); 224 | 225 | соединение = ОткрытьСоединениеRabbitMQ(параметры); 226 | если соединение = Неопределено тогда 227 | возврат Ложь; 228 | КонецЕсли; 229 | 230 | модель = Соединение.CreateModel(); 231 | ПараметрыОбмена = ИнициализироватьПараметрыОбмена(ИмяМаршрута, ИмяОчереди); 232 | 233 | Если МодельНеисправна(ПараметрыОбмена, модель) Тогда 234 | ЗакрытьСодединениеСRabbitMQ(модель, соединение); 235 | Возврат Ложь; 236 | КонецЕсли; 237 | 238 | строкаSafeArray = ПодготовитьСообщениеКОтправке(СообщениеДляОтправки); 239 | 240 | параметрыОтправки = модель.CreateBasicProperties(); 241 | ЗаполнитьЗначенияСвойств(параметрыОтправки, ПараметрыОтправкиПоУмолчанию()); 242 | 243 | Успех = ВыполнитьКомандуBasicPublish(модель, ПараметрыОбмена, параметрыОтправки, СтрокаSafeArray); 244 | ЗакрытьСодединениеСRabbitMQ(модель, соединение); 245 | 246 | Возврат Успех; 247 | 248 | КонецФункции 249 | 250 | Функция ИнициализироватьПараметрыОбмена(ИмяМаршрута, ИмяОчереди = "") 251 | 252 | Если ИмяОчереди = "" Тогда 253 | параметрыОбмена = ПараметрыОбменаБезОчереди(); 254 | иначе 255 | параметрыОбмена = ПараметрыОбменаСОчередью(); 256 | параметрыОбмена.ИмяОчереди = ИмяОчереди; 257 | КонецЕсли; 258 | 259 | параметрыОбмена.ИмяОбмена = ИмяОбмена(); 260 | параметрыОбмена.ИмяМаршрута = ИмяМаршрута; 261 | 262 | Возврат параметрыОбмена; 263 | 264 | КонецФункции 265 | 266 | Функция МодельНеисправна(ПараметрыОбмена, модель) 267 | 268 | Если НетНастройкиОбменаВRabbitMQ(модель, параметрыОбмена.ИмяОбмена) Тогда 269 | Возврат Истина; 270 | КонецЕсли; 271 | Если ПараметрыОбмена.Свойство("Очередь") И НетОчередиВRabbitMQ(модель, параметрыОбмена.ИмяОчереди) Тогда 272 | возврат Истина; 273 | КонецЕсли; 274 | Возврат Ложь; 275 | 276 | КонецФункции 277 | 278 | Процедура ТестДолжен_ОтправитьПустоеСообщениеВРэббит() Экспорт 279 | 280 | Успех = ОтправитьВRabbitMQ(ИменаМаршрутов().Розница, СформироватьJSON(Новый Структура)); 281 | Утверждения.проверить(Успех, "обмен с рэббит завершился ошибкой"); 282 | 283 | КонецПроцедуры 284 | 285 | 286 | // преборазует входящую структуру в JSON 287 | // экранирует не ASCII символы, для отключения поправить параметры записи 288 | // 289 | // ПАРАМЕТРЫ: 290 | // ВходящиеДанные - Структура 291 | // Ключ - строка 292 | // Значение - Строка, Число, Дата, Булево, Массив, Структура - 293 | // любое серилизуемое в JSON значение 294 | // ФорматироватьJSON - БУЛЕВО - если нужно сформировать JSON для вывода в форматированном виде 295 | // 296 | // Возвращаемое значение: 297 | // Строка - сформированный JSON 298 | // 299 | Функция СформироватьJSON(ВходящиеДанные, ФорматироватьJSON = Ложь) 300 | 301 | Если ФорматироватьJSON Тогда 302 | СимволФорматирования = Символы.Таб; 303 | Иначе 304 | СимволФорматирования = Неопределено; 305 | КонецЕсли; 306 | 307 | ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(,СимволФорматирования,, ЭкранированиеСимволовJSON.СимволыВнеASCII); 308 | 309 | ЗаписьJSON = Новый ЗаписьJSON; 310 | ЗаписьJSON.ПроверятьСтруктуру = Ложь; 311 | ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); 312 | ЗаписатьJSON(ЗаписьJSON, ВходящиеДанные); 313 | 314 | Возврат ЗаписьJSON.Закрыть(); 315 | 316 | КонецФункции // СформироватьJSON() 317 | 318 | -------------------------------------------------------------------------------- /src/RabbitMQ/ОбменСRabbitMQ.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c3831ec8-d8d5-4f93-8a22-f9bfae07327f 7 | 6321721a-b235-4d46-88db-a9692e32ee8d 8 | 9 | 10 | 86c3433c-c864-4e10-a7f1-0b446cc619e5 11 | 9526fb9a-4127-4376-ae82-30307bd34b92 12 | 13 | 14 | 15 | ОбменСRabbitMQ 16 | 17 | 18 | ru 19 | Обмен с rabbit MQ 20 | 21 | 22 | 23 | ExternalDataProcessor.ОбменСRabbitMQ.Form.Форма 24 | 25 | 26 | 27 |
Форма
28 |
29 |
30 |
-------------------------------------------------------------------------------- /src/RabbitMQ/ОбменСRabbitMQ/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /src/RabbitMQ/ОбменСRabbitMQ/Forms/Форма/Ext/Form.xml: -------------------------------------------------------------------------------- 1 |  2 |
3 | 4 | 5 | 10 | 15 | 16 | 17 | 18 | 19 | cfg:ExternalDataProcessorObject.ОбменСRabbitMQ 20 | 21 | true 22 | 23 | 24 | 25 | 26 | 27 | <v8:item> 28 | <v8:lang>ru</v8:lang> 29 | <v8:content>Получить сообщение</v8:content> 30 | </v8:item> 31 | 32 | 33 | 34 | ru 35 | Получить сообщение 36 | 37 | 38 | ПолучитьСообщение 39 | 40 | 41 | 42 | <v8:item> 43 | <v8:lang>ru</v8:lang> 44 | <v8:content>Отправить пользователей</v8:content> 45 | </v8:item> 46 | 47 | 48 | 49 | ru 50 | Отправить пользователей 51 | 52 | 53 | ОтправитьПользователей 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/RabbitMQ/ОбменСRabbitMQ/Forms/Форма/Ext/Form/Module.bsl: -------------------------------------------------------------------------------- 1 |  2 | &НаКлиенте 3 | Процедура ПолучитьСообщениеНаКлиенте() 4 | 5 | ИмяОчереди = "registration"; 6 | ОтправляемоеСообщение = "Test"; 7 | ОтветноеСообщение = ""; 8 | ТегСообщения = 0; 9 | 10 | Попытка 11 | Клиент = Новый("AddIn.RabbitMQ.PinkRabbitMQ"); 12 | Исключение 13 | 14 | Сообщение = Новый СообщениеПользователю; 15 | Сообщение.Текст = "Не удалось получить из макета PinkRabbitMQ"; 16 | Сообщение.Сообщить(); 17 | Возврат; 18 | 19 | КонецПопытки; 20 | 21 | Клиент.Connect("localhost", 5672, "guest", "guest", "/"); 22 | 23 | МассивИмен = Новый Массив; 24 | ДанныеТелеграм = Новый Соответствие; 25 | Попытка 26 | Потребитель = Клиент.BasicConsume(ИмяОчереди, "", Истина, Ложь, 0); 27 | Пока Клиент.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения, 5000) Цикл 28 | Клиент.BasicAck(ТегСообщения); 29 | Данные = ПреборазоватьJSONвСоответствие(ОтветноеСообщение); 30 | Если Данные.Получить("fio") <> Неопределено Тогда 31 | МассивИмен.Добавить(Данные.Получить("fio")); 32 | ДанныеТелеграм.Вставить(Данные.Получить("fio"), Данные.Получить("_telegram_id")); 33 | КонецЕсли; 34 | Сообщить("Успешно! Из очереди прочитано сообщение " + ОтветноеСообщение); 35 | ОтветноеСообщение = ""; // Обнуляем, чтобы избежать утечку памяти 36 | ТегСообщения = 0; // Обнуляем, чтобы избежать утечку памяти 37 | КонецЦикла; 38 | Клиент.BasicCancel(""); 39 | Исключение 40 | Сообщить(Клиент.GetLastError()); 41 | КонецПопытки; 42 | 43 | 44 | ОбновитьФизЛицНаСервере(МассивИмен, ДанныеТелеграм); 45 | 46 | Клиент = Неопределено; 47 | 48 | КонецПроцедуры 49 | 50 | &НаСервереБезКонтекста 51 | Процедура ОбновитьФизЛицНаСервере(МассивИмен, ДанныеТелеграм) 52 | 53 | Запрос = Новый Запрос; 54 | Запрос.Текст = 55 | "ВЫБРАТЬ 56 | | ФизическиеЛица.Ссылка КАК Ссылка, 57 | | ФизическиеЛица.Наименование КАК Наименование 58 | |ИЗ 59 | | Справочник.ФизическиеЛица КАК ФизическиеЛица 60 | |ГДЕ 61 | | ФизическиеЛица.Наименование В(&МассивИмен)"; 62 | 63 | Запрос.УстановитьПараметр("МассивИмен", МассивИмен); 64 | 65 | РезультатЗапроса = Запрос.Выполнить(); 66 | 67 | ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); 68 | 69 | Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 70 | 71 | ДанныеОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); 72 | ДанныеОбъект.ИдТелеграм = Формат(ДанныеТелеграм.Получить(ВыборкаДетальныеЗаписи.Наименование), "ЧГ="); 73 | ДанныеОбъект.Записать(); 74 | 75 | КонецЦикла; 76 | 77 | КонецПроцедуры 78 | 79 | &НаСервереБезКонтекста 80 | Функция ОтправитьСообщениеНаСервере() 81 | 82 | Запрос = Новый Запрос; 83 | Запрос.Текст = 84 | "ВЫБРАТЬ 85 | | ФизическиеЛица.Ссылка КАК Ссылка, 86 | | ФизическиеЛица1.Наименование КАК Наименование 87 | |ИЗ 88 | | Справочник.ФизическиеЛица.Изменения КАК ФизическиеЛица 89 | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица1 90 | | ПО ФизическиеЛица.Ссылка = ФизическиеЛица1.Ссылка"; 91 | 92 | РезультатЗапроса = Запрос.Выполнить(); 93 | 94 | ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); 95 | 96 | МассивJSON = Новый Массив; 97 | Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 98 | 99 | МояСтруктура = Новый Структура; 100 | МояСтруктура.Вставить("fio", СокрЛП(ВыборкаДетальныеЗаписи.Наименование)); 101 | СтрокаLSON = СформироватьJSON(МояСтруктура, Ложь); 102 | 103 | МассивJSON.Добавить(СтрокаLSON); 104 | 105 | КонецЦикла; 106 | 107 | // todo добавить очистку узла от ссылок физических лиц 108 | 109 | Возврат МассивJSON; 110 | 111 | КонецФункции 112 | 113 | &НаСервереБезКонтекста 114 | // преборазует входящую структуру в JSON 115 | // экранирует не ASCII символы, для отключения поправить параметры записи 116 | // 117 | // ПАРАМЕТРЫ: 118 | // ВходящиеДанные - Структура 119 | // Ключ - строка 120 | // Значение - Строка, Число, Дата, Булево, Массив, Структура - 121 | // любое серилизуемое в JSON значение 122 | // ФорматироватьJSON - БУЛЕВО - если нужно сформировать JSON для вывода в форматированном виде 123 | // 124 | // Возвращаемое значение: 125 | // Строка - сформированный JSON 126 | // 127 | Функция СформироватьJSON(ВходящиеДанные, ФорматироватьJSON = Ложь) 128 | 129 | Если ФорматироватьJSON Тогда 130 | СимволФорматирования = Символы.Таб; 131 | Иначе 132 | СимволФорматирования = Неопределено; 133 | КонецЕсли; 134 | 135 | ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " "); 136 | 137 | ЗаписьJSON = Новый ЗаписьJSON; 138 | ЗаписьJSON.ПроверятьСтруктуру = Ложь; 139 | ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); 140 | ЗаписатьJSON(ЗаписьJSON, ВходящиеДанные); 141 | 142 | Возврат ЗаписьJSON.Закрыть(); 143 | 144 | КонецФункции // СформироватьJSON() 145 | 146 | Функция ПреборазоватьJSONвСоответствие(ОтветноеСообщение) 147 | 148 | ЧтениеJSON = Новый ЧтениеJSON(); 149 | ЧтениеJSON.УстановитьСтроку(ОтветноеСообщение); 150 | ДанныеJSON = ПрочитатьJSON(ЧтениеJSON, Истина); 151 | ЧтениеJSON.Закрыть(); 152 | 153 | Возврат ДанныеJSON; 154 | 155 | КонецФункции 156 | 157 | 158 | &НаКлиенте 159 | Процедура ОтправитьСообщениеНаКлиенте() 160 | 161 | ИмяОчереди = "hello"; 162 | ОтправляемоеСообщение = "Test"; 163 | ОтветноеСообщение = ""; 164 | ТегСообщения = 0; 165 | 166 | Попытка 167 | Клиент = Новый("AddIn.RabbitMQ.PinkRabbitMQ"); 168 | Исключение 169 | 170 | Сообщение = Новый СообщениеПользователю; 171 | Сообщение.Текст = "Не удалось получить из макета PinkRabbitMQ"; 172 | Сообщение.Сообщить(); 173 | Возврат; 174 | 175 | КонецПопытки; 176 | 177 | ИмяОчереди = "fio"; 178 | МассивJSON = ОтправитьСообщениеНаСервере(); 179 | 180 | Клиент.Connect("localhost", 5672, "guest", "guest", "/"); 181 | Для каждого ОтправляемоеСообщение ИЗ МассивJSON Цикл 182 | Клиент.DeclareQueue(ИмяОчереди, Ложь, Ложь, Ложь, Ложь); 183 | Клиент.BasicPublish("", ИмяОчереди, ОтправляемоеСообщение, 0, Ложь); 184 | КонецЦикла; 185 | 186 | Клиент = Неопределено; 187 | 188 | КонецПроцедуры 189 | 190 | &НаКлиенте 191 | Процедура ПодключитьКомпонентуPinkRabbitMQ(ДопПараметры) Экспорт 192 | 193 | ОписаниеОповещения = Новый ОписаниеОповещения( 194 | "ПослеПодключенияВнешнейКомпоненты", 195 | ЭтотОбъект, 196 | ДопПараметры); 197 | 198 | НачатьПодключениеВнешнейКомпоненты( 199 | ОписаниеОповещения, 200 | "ОбщийМакет.PinkRabbitMQ", 201 | "RabbitMQ"); 202 | 203 | КонецПроцедуры 204 | 205 | &НаКлиенте 206 | Процедура ПослеПодключенияВнешнейКомпоненты(Подключено, ДопПараметры) Экспорт 207 | 208 | Если Подключено Тогда 209 | 210 | Клиент = Новый("AddIn.RabbitMQ.PinkRabbitMQ"); 211 | Если ДопПараметры.Свойство("Отправить") Тогда 212 | ОтправитьСообщениеНаКлиенте(); 213 | Иначе 214 | ПолучитьСообщениеНаКлиенте(); 215 | КонецЕсли; 216 | Возврат; 217 | 218 | ИначеЕсли ДопПараметры.УстановитьЕслиНеПодключено Тогда 219 | 220 | ОписаниеОповещения = Новый ОписаниеОповещения( 221 | "ПослеПодключенияВнешнейКомпоненты", 222 | ЭтотОбъект, 223 | Ложь); 224 | 225 | НачатьУстановкуВнешнейКомпоненты( 226 | ОписаниеОповещения, 227 | "ОбщийМакет.PinkRabbitMQ"); 228 | 229 | Иначе 230 | 231 | Сообщение = Новый СообщениеПользователю; 232 | Сообщение.Текст = "Не удалось подключить компоненту PinkRabbitMQ"; 233 | Сообщение.Сообщить(); 234 | 235 | КонецЕсли; 236 | 237 | КонецПроцедуры 238 | 239 | &НаКлиенте 240 | Процедура ПолучитьСообщение(Команда) 241 | 242 | ДопПараметры = Новый Структура; 243 | ДопПараметры.Вставить("УстановитьЕслиНеПодключено", Истина); 244 | ПодключитьКомпонентуPinkRabbitMQ(ДопПараметры); 245 | //ПолучитьСообщениеНаКлиенте(); 246 | 247 | КонецПроцедуры 248 | 249 | &НаКлиенте 250 | Процедура ОтправитьПользователей(Команда) 251 | 252 | ДопПараметры = Новый Структура; 253 | ДопПараметры.Вставить("УстановитьЕслиНеПодключено", Истина); 254 | ДопПараметры.Вставить("Отправить", Истина); 255 | 256 | ПодключитьКомпонентуPinkRabbitMQ(ДопПараметры); 257 | //ПолучитьСообщениеНаКлиенте(); 258 | КонецПроцедуры 259 | -------------------------------------------------------------------------------- /src/oScript/ЗавершитьВсеПроцессы1С.os: -------------------------------------------------------------------------------- 1 | Процедура ЗавершитьВсеПроцессы1С() 2 | 3 | МассивПроцессов = НайтиПроцессыПоИмени("1c)v8"); 4 | 5 | Для Каждого Процесс Из МассивПроцессов Цикл 6 | Процесс.Завершить(); 7 | КонецЦикла; 8 | 9 | КонецПроцедуры 10 | 11 | ЗавершитьВсеПроцессы1С(); -------------------------------------------------------------------------------- /src/oScript/ОбновитьТестовуюБазу.os: -------------------------------------------------------------------------------- 1 | #Использовать v8runner 2 | #Область ОписаниеПеременных 3 | 4 | Перем ФайлХранилища; // путь к файлу, в который будем сохранять конфигурацию хранилища 5 | Перем ФайлТестовойБазы; //путь к файлу, в который будем сохранять конфигурацию тестовой базы 6 | 7 | Перем ФайлБДХранилища; // путь к файлу, в который будем сохранять базу данных хранилища 8 | Перем ФайлБДТестовойБазы; //путь к файлу, в который будем сохранять базу данных тестовой базы 9 | 10 | #КонецОбласти 11 | 12 | Процедура ЗавершитьВсеПроцессы1С() 13 | 14 | МассивПроцессов = НайтиПроцессыПоИмени("1cv8"); 15 | 16 | Для Каждого Процесс Из МассивПроцессов Цикл 17 | Процесс.Завершить(); 18 | КонецЦикла; 19 | 20 | КонецПроцедуры 21 | 22 | Процедура ВыгрузитьКонфигурациюХранилищаВФайл(Отказ) 23 | 24 | ПутьККонфигурацииХранилища = "/IBConnectionString""Srvr=testserver; Ref='testbase'"""; 25 | Логин1сХранилища = "Вдовенко"; 26 | Пароль1сХранилища = ""; 27 | 28 | ПутьКХранилищу = "\\testpath\..."; 29 | ПользовательХранилища = "Вдовенко"; 30 | ПарольХранилища = ""; 31 | 32 | КонфигураторХранилища = Новый УправлениеКонфигуратором(); 33 | Попытка 34 | КонфигураторХранилища.УстановитьКонтекст(ПутьККонфигурацииХранилища, Логин1сХранилища, Пароль1сХранилища); 35 | КонфигураторХранилища.ЗагрузитьКонфигурациюИзХранилища(ПутьКХранилищу, ПользовательХранилища, ПарольХранилища); 36 | КонфигураторХранилища.ОбновитьКонфигурациюБазыДанных(); 37 | КонфигураторХранилища.ВыгрузитьКонфигурациюВФайл(ФайлХранилища); 38 | Исключение 39 | Отказ = Истина; 40 | КонецПопытки; 41 | 42 | КонфигураторХранилища = Неопределено; 43 | 44 | КонецПроцедуры 45 | 46 | Процедура ВыгрузитьХранилищеВФайлБД(Отказ) 47 | 48 | ПутьККонфигурацииХранилища = "/IBConnectionString""Srvr=testserver; Ref='testbase'"""; 49 | Логин1сХранилища = "Вдовенко"; 50 | Пароль1сХранилища = ""; 51 | 52 | ПутьКХранилищу = "\\testpath\..."; 53 | ПользовательХранилища = "Вдовенко"; 54 | ПарольХранилища = ""; 55 | 56 | КонфигураторХранилища = Новый УправлениеКонфигуратором(); 57 | Попытка 58 | КонфигураторХранилища.УстановитьКонтекст(ПутьККонфигурацииХранилища, Логин1сХранилища, Пароль1сХранилища); 59 | КонфигураторХранилища.ЗагрузитьКонфигурациюИзХранилища(ПутьКХранилищу, ПользовательХранилища, ПарольХранилища); 60 | КонфигураторХранилища.ОбновитьКонфигурациюБазыДанных(); 61 | КонфигураторХранилища.ВыгрузитьИнформационнуюБазу(ФайлБДХранилища); 62 | Исключение 63 | Отказ = Истина; 64 | КонецПопытки; 65 | 66 | КонфигураторХранилища = Неопределено; 67 | 68 | КонецПроцедуры 69 | 70 | Функция ПодключитьсяКТестовойБазе() 71 | 72 | ПутьКТестовойБазе = "/F""D:\1C_Bases\Тест"""; 73 | ЛогинТестовой = "Вдовенко"; 74 | ПарольТестовой = ""; 75 | 76 | Конфигуратор = Новый УправлениеКонфигуратором(); 77 | 78 | Попытка 79 | Конфигуратор.УстановитьКонтекст(ПутьКТестовойБазе, ЛогинТестовой, ПарольТестовой); 80 | Исключение 81 | Конфигуратор = Неопределено; 82 | КонецПопытки; 83 | 84 | Возврат Конфигуратор; 85 | 86 | КонецФункции 87 | 88 | Процедура ВыполнитьОбновлениеКонфигурации() 89 | 90 | // инициализация переменных 91 | ФайлХранилища = "D:\Buffer\КонфигурацияХранилища.cf"; 92 | ФайлТестовойБазы = "D:\Buffer\КонфигурацияТестовойБазыДоОбновления.cf"; 93 | 94 | // закрываем 1С, чтоб не мешали скрипту 95 | ЗавершитьВсеПроцессы1С(); 96 | 97 | // удаляем ранние версии файлов, если они есть 98 | УдалитьФайлы(ФайлХранилища); 99 | УдалитьФайлы(ФайлТестовойБазы); 100 | 101 | Отказ = Ложь; 102 | ВыгрузитьКонфигурациюХранилищаВФайл(Отказ); 103 | 104 | Если НЕ Отказ Тогда 105 | 106 | // Выгружаем конфигурации хранилища 107 | КонфигураторТестовойБазы = ПодключитьсяКТестовойБазе(); 108 | Если КонфигураторТестовойБазы <> Неопределено Тогда 109 | 110 | // Выгружаем конфигурации тестовой базы 111 | КонфигураторТестовойБазы.ВыгрузитьКонфигурациюВФайл(ФайлТестовойБазы); 112 | 113 | // обновляем конфигурацию тестовой базы конфигурацией хранилища 114 | КонфигураторТестовойБазы.ЗагрузитьКонфигурациюИзФайла(ФайлХранилища, ИСТИНА); 115 | 116 | КонецЕсли; 117 | 118 | КонфигураторТестовойБазы.ЗапуститьВРежимеПредприятия(); 119 | 120 | Параметры = КонфигураторТестовойБазы.ПолучитьПараметрыЗапуска(); 121 | КонфигураторТестовойБазы.ВыполнитьКоманду(Параметры); 122 | 123 | КонецЕсли; 124 | 125 | КонецПроцедуры // ВыполнитьОбновлениеКонфигурации() 126 | 127 | // оставлено для примера и напоминания, что можно и так 128 | Процедура ВыполнитьОбновлениеЧерезВыгрузкуБД() 129 | 130 | ФайлБДХранилища = "D:\Buffer\Хранилище.dt"; 131 | ФайлБДТестовойБазы = "D:\Buffer\ТестоваяБазыДоОбновления.dt"; 132 | 133 | // закрываем 1С, чтоб не мешали скрипту 134 | ЗавершитьВсеПроцессы1С(); 135 | 136 | // удаляем ранние версии файлов, если они есть 137 | УдалитьФайлы(ФайлБДХранилища); 138 | УдалитьФайлы(ФайлБДТестовойБазы); 139 | 140 | Отказ = Ложь; 141 | ВыгрузитьХранилищеВФайлБД(Отказ); 142 | 143 | Если НЕ Отказ Тогда 144 | 145 | // Выгружаем конфигурации хранилища 146 | КонфигураторТестовойБазы = ПодключитьсяКТестовойБазе(); 147 | Если КонфигураторТестовойБазы <> Неопределено Тогда 148 | 149 | // Выгружаем конфигурации тестовой базы 150 | КонфигураторТестовойБазы.ВыгрузитьИнформационнуюБазу(ФайлБДТестовойБазы); 151 | 152 | // обновляем конфигурацию тестовой базы конфигурацией хранилища 153 | КонфигураторТестовойБазы.ЗагрузитьИнформационнуюБазу(ФайлБДХранилища); 154 | 155 | КонфигураторТестовойБазы.ОтключитьсяОтХранилища(); 156 | 157 | КонфигураторТестовойБазы.ОбновитьКонфигурациюБазыДанных(); 158 | 159 | КонецЕсли; 160 | 161 | Параметры = КонфигураторТестовойБазы.ПолучитьПараметрыЗапуска(); 162 | КонфигураторТестовойБазы.ВыполнитьКоманду(Параметры); 163 | 164 | КонецЕсли; 165 | 166 | КонецПроцедуры 167 | 168 | ВыполнитьОбновлениеКонфигурации(); 169 | -------------------------------------------------------------------------------- /src/oScript/Отключить безопасный режим.os: -------------------------------------------------------------------------------- 1 | Процедура ВставитьОпциюОтключающуюПроверкуБезопасности1С (ПутьКФайлу) 2 | 3 | Файл = Новый Файл(ПутьКФайлу); 4 | Если Не Файл.Существует() Тогда 5 | Возврат; 6 | КонецЕсли; 7 | 8 | ЧтениеФайла = Новый ЧтениеТекста(ПутьКФайлу); 9 | 10 | СтрокаФайла = ЧтениеФайла.ПрочитатьСтроку(); 11 | СтрокаОтключения = "DisableUnsafeActionProtection=.*"; 12 | 13 | СтрокаЕстьВФайле = Ложь; 14 | ЕстьСтрокиВФайле = Ложь; 15 | Пока СтрокаФайла <> Неопределено Цикл 16 | 17 | ЕстьСтрокиВФайле = Истина; 18 | Если СтрокаФайла = СтрокаОтключения Тогда 19 | СтрокаЕстьВФайле = Истина; 20 | Прервать; 21 | КонецЕсли; 22 | 23 | СтрокаФайла = ЧтениеФайла.ПрочитатьСтроку(); 24 | 25 | КонецЦикла; 26 | ЧтениеФайла.Закрыть(); 27 | 28 | Если НЕ СтрокаЕстьВФайле Тогда 29 | ЗаписьФайла = Новый ЗаписьТекста(ПутьКФайлу, , Символы.ПС, Истина); 30 | Если ЕстьСтрокиВФайле Тогда 31 | ЗаписьФайла.ЗаписатьСтроку(, Символы.ПС); 32 | КонецЕсли; 33 | ЗаписьФайла.ЗаписатьСтроку(СтрокаОтключения); 34 | ЗаписьФайла.Закрыть(); 35 | КонецЕсли; 36 | 37 | КонецПроцедуры 38 | 39 | ВставитьОпциюОтключающуюПроверкуБезопасности1С ("C:\Program Files (x86)\1cv8\conf\conf.cfg"); 40 | ВставитьОпциюОтключающуюПроверкуБезопасности1С ("C:\Program Files\1cv8\conf\conf.cfg"); -------------------------------------------------------------------------------- /src/Анализ ТЖ/Call_exemple.sh: -------------------------------------------------------------------------------- 1 | cat rphost*/*.log | 2 | grep -P 'CALL.+Context=' | 3 | sed -r 's/\xef\xbb\xbf//; s/^[0-9]+:[0-9]+.[0-9]+-//; s/CALL.+Context=/CALL,Context=/;s/,Memory=.+$//' | 4 | gawk -F',CALL,' '{Dur[$2]+=$1; Execs[$2]+=1} END {for (i in Dur) printf "%d %d %d %s\n", (Dur[i]/Execs[i])/1000, Dur[i]/1000, Execs[i], i}' | 5 | sort -rn | 6 | head -n 1000 | 7 | sed '1i\AvgDuration,ms TotalDuration,ms Execs Context' > Apdex_prepared.txt -------------------------------------------------------------------------------- /src/Анализ метаданных/АнализМетаданныхКонфигурации.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c3831ec8-d8d5-4f93-8a22-f9bfae07327f 7 | 96108dbc-6c69-4316-84fe-9009b57433bf 8 | 9 | 10 | 814a5405-c5f2-4f0e-848b-cf7a35043209 11 | aff25a1a-91c3-4b31-a47c-5f4fcb27b052 12 | 13 | 14 | 15 | АнализМетаданныхКонфигурации 16 | 17 | 18 | ru 19 | Анализ метаданных конфигурации 20 | 21 | 22 | 23 | ExternalDataProcessor.АнализМетаданныхКонфигурации.Form.Форма 24 | 25 | 26 | 27 |
Форма
28 |
29 |
30 |
-------------------------------------------------------------------------------- /src/Анализ метаданных/АнализМетаданныхКонфигурации/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /src/Анализ метаданных/АнализМетаданныхКонфигурации/Forms/Форма/Ext/Form.xml: -------------------------------------------------------------------------------- 1 |  2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <v8:item> 11 | <v8:lang>ru</v8:lang> 12 | <v8:content>Дерево конфигурации</v8:content> 13 | </v8:item> 14 | 15 | 16 | 17 | ru 18 | Группа дерево конфигурации 19 | 20 | 21 | 22 | 23 | 28 | 29 | Tree 30 | true 31 | true 32 | true 33 | ДеревоКонфигурации 34 | 35 | 36 | 37 | 38 | 39 | ДеревоКонфигурации 40 | SearchStringRepresentation 41 | 42 | 43 | 44 | 45 | 46 | 47 | ДеревоКонфигурации 48 | ViewStatusRepresentation 49 | 50 | 51 | 52 | 53 | 54 | 55 | ДеревоКонфигурации 56 | SearchControl 57 | 58 | 59 | 60 | 61 | 62 | 63 | ДеревоКонфигурации.Имя 64 | EnterOnInput 65 | 66 | 67 | 68 | 69 | ДеревоКонфигурации.КолРеквизитов 70 | EnterOnInput 71 | 72 | 73 | 74 | 75 | ДеревоКонфигурации.Синоним 76 | EnterOnInput 77 | 78 | 79 | 80 | 81 | ДеревоКонфигурации.Тип 82 | EnterOnInput 83 | 84 | 85 | 86 | 87 | ДеревоКонфигурации.Коммент 88 | EnterOnInput 89 | 90 | 91 | 92 | 93 | ДеревоКонфигурации.КоличествоУдаленных 94 | EnterOnInput 95 | 96 | 97 | 98 | 99 | ДеревоКонфигурации.КоличествоНеУдаленных 100 | EnterOnInput 101 | 102 | 103 | 104 | 105 | ДеревоКонфигурации.ДатаПоследнего 106 | EnterOnInput 107 | 108 | 109 | 110 | 111 |
112 |
113 |
114 |
115 |
116 |
117 | 118 | 119 | 120 | cfg:ExternalDataProcessorObject.АнализМетаданныхКонфигурации 121 | 122 | true 123 | 124 | 125 | 126 | <v8:item> 127 | <v8:lang>ru</v8:lang> 128 | <v8:content>Дерево конфигурации</v8:content> 129 | </v8:item> 130 | 131 | 132 | v8:ValueTree 133 | 134 | 135 | 136 | 137 | <v8:item> 138 | <v8:lang>ru</v8:lang> 139 | <v8:content>Имя</v8:content> 140 | </v8:item> 141 | 142 | 143 | xs:string 144 | 145 | 0 146 | Variable 147 | 148 | 149 | 150 | 151 | 152 | <v8:item> 153 | <v8:lang>ru</v8:lang> 154 | <v8:content>Кол реквизитов</v8:content> 155 | </v8:item> 156 | 157 | 158 | xs:string 159 | 160 | 0 161 | Variable 162 | 163 | 164 | 165 | 166 | 167 | <v8:item> 168 | <v8:lang>ru</v8:lang> 169 | <v8:content>Синоним</v8:content> 170 | </v8:item> 171 | 172 | 173 | xs:string 174 | 175 | 0 176 | Variable 177 | 178 | 179 | 180 | 181 | 182 | <v8:item> 183 | <v8:lang>ru</v8:lang> 184 | <v8:content>Тип</v8:content> 185 | </v8:item> 186 | 187 | 188 | xs:string 189 | 190 | 0 191 | Variable 192 | 193 | 194 | 195 | 196 | 197 | <v8:item> 198 | <v8:lang>ru</v8:lang> 199 | <v8:content>Коммент</v8:content> 200 | </v8:item> 201 | 202 | 203 | xs:string 204 | 205 | 0 206 | Variable 207 | 208 | 209 | 210 | 211 | 212 | <v8:item> 213 | <v8:lang>ru</v8:lang> 214 | <v8:content>Количество удаленных</v8:content> 215 | </v8:item> 216 | 217 | 218 | xs:string 219 | 220 | 0 221 | Variable 222 | 223 | 224 | 225 | 226 | 227 | <v8:item> 228 | <v8:lang>ru</v8:lang> 229 | <v8:content>Количество не удаленных</v8:content> 230 | </v8:item> 231 | 232 | 233 | xs:string 234 | 235 | 0 236 | Variable 237 | 238 | 239 | 240 | 241 | 242 | <v8:item> 243 | <v8:lang>ru</v8:lang> 244 | <v8:content>Дата последнего</v8:content> 245 | </v8:item> 246 | 247 | 248 | xs:dateTime 249 | 250 | Date 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | <v8:item> 261 | <v8:lang>ru</v8:lang> 262 | <v8:content>Вывести дерево метаданных</v8:content> 263 | </v8:item> 264 | 265 | 266 | 267 | ru 268 | Вывести дерево метаданных 269 | 270 | 271 | ВывестиДеревоМетаданных 272 | 273 | 274 | -------------------------------------------------------------------------------- /src/Анализ метаданных/АнализМетаданныхКонфигурации/Forms/Форма/Ext/Form/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ОбработчикиКомандФормы 2 | 3 | &НаКлиенте 4 | Процедура ВывестиДеревоМетаданных(Команда) 5 | 6 | ВывестиМетаданные(); 7 | 8 | КонецПроцедуры 9 | 10 | #КонецОбласти 11 | 12 | #Область СлужебныеПроцедурыИФункции 13 | 14 | &НаСервере 15 | Процедура ВывестиМетаданные() 16 | 17 | ДеревоМетаданных = РеквизитФормыВЗначение("ДеревоКонфигурации"); 18 | 19 | ДеревоМетаданных.Строки.Очистить(); 20 | ОбойтиЭлементМетаданных(ДеревоМетаданных, "Справочники", Истина); 21 | ОбойтиЭлементМетаданных(ДеревоМетаданных, "Документы", Истина); 22 | ОбойтиЭлементМетаданных(ДеревоМетаданных, "Обработки", Ложь); 23 | 24 | ЗначениеВРеквизитФормы(ДеревоМетаданных, "ДеревоКонфигурации"); 25 | 26 | КонецПроцедуры 27 | 28 | &НаСервере 29 | Процедура ОбойтиЭлементМетаданных(ДеревоМетаданных, пИмяЭлемента, ЕстьСтандартныйРеквизит) 30 | 31 | Уровень0 = ДеревоМетаданных.Строки.Добавить(); 32 | Уровень0.Имя = пИмяЭлемента; 33 | Уровень0.Синоним = пИмяЭлемента; 34 | КолУровень0 = 0; 35 | 36 | Для каждого Элем Из Метаданные[пИмяЭлемента] Цикл 37 | 38 | Уровень1 = Уровень0.Строки.Добавить(); 39 | Уровень1.Имя = Элем.Имя; 40 | Уровень1.Синоним = Элем.Синоним; 41 | КолУровень0 = КолУровень0 + 1; 42 | КолУровень1 = 0; 43 | 44 | 45 | Если пИмяЭлемента = "Документы" Тогда 46 | ЗаполнитьДопДанныеПоДокументам(Уровень1, Элем.Имя); 47 | КонецЕсли; 48 | 49 | Если ЕстьСтандартныйРеквизит Тогда 50 | 51 | Для каждого Реквизит Из Элем.СтандартныеРеквизиты Цикл 52 | 53 | Уровень2 = Уровень1.Строки.Добавить(); 54 | Уровень2.Имя = Реквизит.Имя; 55 | Уровень2.Синоним = Реквизит.Синоним; 56 | Уровень2.Тип = СформироватьОписаниеРеквизита(Реквизит); 57 | Уровень2.Коммент = Реквизит.Комментарий; 58 | КолУровень1 = КолУровень1 + 1; 59 | 60 | КонецЦикла; 61 | 62 | КонецЕсли; 63 | 64 | Для каждого Реквизит Из Элем.Реквизиты Цикл 65 | 66 | Уровень2 = Уровень1.Строки.Добавить(); 67 | Уровень2.Имя = Реквизит.Имя; 68 | Уровень2.Синоним = Реквизит.Синоним; 69 | Уровень2.Тип = СформироватьОписаниеРеквизита(Реквизит); 70 | Уровень2.Коммент = Реквизит.Комментарий; 71 | КолУровень1 = КолУровень1 + 1; 72 | 73 | КонецЦикла; 74 | 75 | Уровень1.Имя = Элем.Имя + " (" + КолУровень1 + ")"; 76 | Уровень1.КолРеквизитов = Формат(КолУровень1, "ЧЦ=2; ЧВН="); 77 | 78 | Для каждого Табчасть Из Элем.ТабличныеЧасти Цикл 79 | Уровень2 = Уровень1.Строки.Добавить(); 80 | Уровень2.Имя = табЧасть.имя; 81 | Уровень2.Синоним = табЧасть.Синоним; 82 | КолУровень2 = 0; 83 | Для каждого Реквизит Из Табчасть.Реквизиты Цикл 84 | Уровень3 = Уровень2.Строки.Добавить(); 85 | Уровень3.Имя = Реквизит.Имя; 86 | Уровень3.Синоним = Реквизит.Синоним; 87 | Уровень3.Тип = СформироватьОписаниеРеквизита(Реквизит); 88 | Уровень3.Коммент = Реквизит.Комментарий; 89 | КолУровень2 = КолУровень2 + 1; 90 | 91 | КонецЦикла; 92 | Уровень2.Имя = табЧасть.имя + " (" + КолУровень2 + ")"; 93 | Уровень2.КолРеквизитов = Формат(КолУровень2, "ЧЦ=2; ЧВН="); 94 | 95 | КонецЦикла; 96 | 97 | КонецЦикла; 98 | Уровень0.Имя = пИмяЭлемента + " (" + КолУровень0 + ")"; 99 | Уровень0.КолРеквизитов = Формат(КолУровень0, "ЧЦ=3; ЧВН="); 100 | 101 | Уровень0.Строки.Сортировать("Синоним ВОЗР", Ложь); 102 | 103 | КонецПроцедуры 104 | 105 | &НаСервере 106 | Процедура ЗаполнитьДопДанныеПоДокументам(Уровень1, пИмяЭлемента) 107 | 108 | Попытка 109 | ДанныеДок = ДанныеДокументов(пИмяЭлемента); 110 | Уровень1.КоличествоУдаленных = ДанныеДок.Удаленных; 111 | Уровень1.КоличествоНеУдаленных = ДанныеДок.НЕУдаленных; 112 | Уровень1.ДатаПоследнего = ДанныеДок.ДатаПоследнего; 113 | Исключение 114 | СообщитьПользователю(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); 115 | КонецПопытки; 116 | 117 | КонецПроцедуры 118 | 119 | &НаСервере 120 | Функция ДанныеДокументов(ИмяДокумента) 121 | 122 | Запрос = Новый Запрос; 123 | Запрос.Текст = 124 | "ВЫБРАТЬ 125 | | МАКСИМУМ(Документ.Дата) КАК ДатаПоследнего, 126 | | СУММА(ВЫБОР 127 | | КОГДА Документ.ПометкаУдаления 128 | | ТОГДА 1 129 | | ИНАЧЕ 0 130 | | КОНЕЦ) КАК Удаленных, 131 | | СУММА(ВЫБОР 132 | | КОГДА НЕ Документ.ПометкаУдаления 133 | | ТОГДА 1 134 | | ИНАЧЕ 0 135 | | КОНЕЦ) КАК НЕУдаленных, 136 | | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Документ.Ссылка) КАК ИтогоДокументов 137 | |ИЗ 138 | | ТабДокумент КАК Документ"; 139 | 140 | Запрос.Текст = СтрЗаменить(Запрос.Текст, "ТабДокумент", "Документ." + ИмяДокумента); 141 | РезультатЗапроса = Запрос.Выполнить(); 142 | 143 | ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); 144 | 145 | ВыборкаДетальныеЗаписи.Следующий(); 146 | 147 | Возврат ВыборкаДетальныеЗаписи; 148 | 149 | КонецФункции 150 | 151 | &НаСервере 152 | Функция СформироватьОписаниеРеквизита(Реквизит) 153 | 154 | ЗначениеТипа = Строка(Реквизит.Тип); 155 | 156 | Если СтрНайти(ЗначениеТипа, "Строка") Тогда 157 | Описание = "Строка (%1)"; 158 | Описание = СтрШаблон(Описание, Реквизит.Тип.КвалификаторыСтроки.Длина); 159 | ЗначениеТипа = СтрЗаменить(ЗначениеТипа, "Строка", Описание); 160 | КонецЕсли; 161 | 162 | Если СтрНайти(ЗначениеТипа, "Число") Тогда 163 | Описание = "Число (%1, %2)"; 164 | Описание = СтрШаблон(Описание, Реквизит.Тип.КвалификаторыЧисла.Разрядность, 165 | Реквизит.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти); 166 | ЗначениеТипа = СтрЗаменить(ЗначениеТипа, "Число", Описание); 167 | КонецЕсли; 168 | 169 | Если СтрНайти(ЗначениеТипа, "Дата") Тогда 170 | Описание = "Дата (%1)"; 171 | Описание = СтрШаблон(Описание, Реквизит.Тип.КвалификаторыДаты.ЧастиДаты); 172 | ЗначениеТипа = СтрЗаменить(ЗначениеТипа, "Дата", Описание); 173 | КонецЕсли; 174 | 175 | Возврат ЗначениеТипа; 176 | 177 | КонецФункции 178 | 179 | 180 | 181 | &НаКлиентеНаСервереБезКонтекста 182 | Процедура СообщитьПользователю(ТекстСообщения) 183 | 184 | Сообщение = Новый СообщениеПользователю; 185 | Сообщение.Текст = ТекстСообщения; 186 | Сообщение.Сообщить(); 187 | 188 | 189 | КонецПроцедуры // СообщитьПользователю() 190 | 191 | #КонецОбласти 192 | -------------------------------------------------------------------------------- /src/Интеграции/ИнтеграцияDaData/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /src/Интеграции/СравнениеДвухТекстовDiffchecker.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | e41aff26-25cf-4bb6-b6c1-3f478a75f374 7 | c753470d-36aa-4bea-9195-e851e3c99c8e 8 | 9 | 10 | ed4ca2ab-70a0-4cc8-a0fa-57ce96007442 11 | a6fc7769-76a4-4cc6-ba70-3e740b668de4 12 | 13 | 14 | 15 | СравнениеДвухТекстов 16 | 17 | 18 | ru 19 | Сравнение двух текстов 20 | 21 | 22 | 23 | ExternalReport.СравнениеДвухТекстов.Form.Форма 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | Лево 36 | 37 | 38 | ru 39 | Лево 40 | 41 | 42 | 43 | 44 | xs:string 45 | 46 | 0 47 | Variable 48 | 49 | 50 | false 51 | 52 | 53 | 54 | false 55 | 56 | false 57 | false 58 | 59 | 60 | DontCheck 61 | Items 62 | 63 | 64 | Auto 65 | Auto 66 | 67 | 68 | Auto 69 | 70 | 71 | 72 | 73 | Право 74 | 75 | 76 | ru 77 | Право 78 | 79 | 80 | 81 | 82 | xs:string 83 | 84 | 0 85 | Variable 86 | 87 | 88 | false 89 | 90 | 91 | 92 | false 93 | 94 | false 95 | false 96 | 97 | 98 | DontCheck 99 | Items 100 | 101 | 102 | Auto 103 | Auto 104 | 105 | 106 | Auto 107 | 108 | 109 | 110 | 111 | Результат 112 | 113 | 114 | ru 115 | Результат 116 | 117 | 118 | 119 | 120 | xs:string 121 | 122 | 0 123 | Variable 124 | 125 | 126 | false 127 | 128 | 129 | 130 | false 131 | 132 | false 133 | false 134 | 135 | 136 | DontCheck 137 | Items 138 | 139 | 140 | Auto 141 | Auto 142 | 143 | 144 | Auto 145 | 146 | 147 |
Форма
148 |
149 |
150 |
-------------------------------------------------------------------------------- /src/Интеграции/СравнениеДвухТекстовDiffchecker/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /src/Интеграции/СравнениеДвухТекстовDiffchecker/Forms/Форма/Ext/Form.xml: -------------------------------------------------------------------------------- 1 |  2 |
3 | Main 4 | Auto 5 | Auto 6 | Auto 7 | 8 | 9 | 14 | 15 | 16 | 17 | ПриСозданииНаСервере 18 | 19 | 20 | 21 | Объект.Лево 22 | true 23 | 24 | 25 | 26 | 27 | Объект.Право 28 | true 29 | 30 | 31 | 32 | 33 | Объект.Результат 34 | 35 | 36 | 37 | 38 | HtmlДокумент 39 | false 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | cfg:ExternalReportObject.СравнениеДвухТекстов 48 | 49 | true 50 | 51 | 52 | 53 | <v8:item> 54 | <v8:lang>ru</v8:lang> 55 | <v8:content>Html документ</v8:content> 56 | </v8:item> 57 | 58 | 59 | xs:string 60 | 61 | 0 62 | Variable 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | <v8:item> 71 | <v8:lang>ru</v8:lang> 72 | <v8:content>Сравнить лево право</v8:content> 73 | </v8:item> 74 | 75 | 76 | 77 | ru 78 | Сравнить лево право 79 | 80 | 81 | СравнитьЛевоПраво 82 | 83 | 84 |
-------------------------------------------------------------------------------- /src/Интеграции/СравнениеДвухТекстовDiffchecker/Forms/Форма/Ext/Form/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ОбработчикиСобытийФормы 2 | 3 | &НаСервере 4 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 5 | 6 | Объект.Лево = "Я хороший текст"; 7 | Объект.Право = "Я плохой текст"; 8 | 9 | КонецПроцедуры 10 | 11 | #КонецОбласти 12 | 13 | #Область ОбработчикиКомандФормы 14 | 15 | &НаКлиенте 16 | Процедура СравнитьЛевоПраво(Команда) 17 | 18 | Элементы.Результат.Документ.body.innerhtml = СравнитьЛевоПравоНаСервере(Объект.Лево, Объект.Право); 19 | 20 | КонецПроцедуры 21 | 22 | &НаСервереБезКонтекста 23 | Функция СравнитьЛевоПравоНаСервере(СтрЛево, СтрПраво) 24 | 25 | ТелоЗапроса = ПодготовитьДанныеТелаЗапроса(СтрЛево, СтрПраво); 26 | СтрокаДанные = СконвертироватьТелоЗапросаВJSON(ТелоЗапроса); 27 | 28 | РезультатЗапроса = diffchecker_POST(СтрокаДанные); 29 | 30 | Возврат ОбработатьОтветdiffchecker_POST(РезультатЗапроса); 31 | 32 | КонецФункции 33 | 34 | #КонецОбласти 35 | 36 | #Область СлужебныеПроцедурыИФункции 37 | 38 | &НаСервереБезКонтекста 39 | Функция ПодготовитьДанныеТелаЗапроса(СтрЛево, СтрПраво) 40 | 41 | ТелоЗапроса = Новый Соответствие; 42 | ТелоЗапроса.Вставить("left", СтрЛево); 43 | ТелоЗапроса.Вставить("right", СтрПраво); 44 | ТелоЗапроса.Вставить("diff_level", "word"); 45 | 46 | Возврат ТелоЗапроса; 47 | 48 | КонецФункции // ПодготовитьДанныеТелаЗапроса() 49 | 50 | &НаСервереБезКонтекста 51 | Функция СконвертироватьТелоЗапросаВJSON(ТелоЗапроса) 52 | 53 | ЗаписьJSON = Новый ЗаписьJSON; 54 | ЗаписьJSON.УстановитьСтроку(); 55 | ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса); 56 | 57 | Возврат ЗаписьJSON.Закрыть(); 58 | 59 | КонецФункции // СконвертироватьТелоЗапросаВJSON() 60 | 61 | &НаСервереБезКонтекста 62 | Функция diffchecker_POST(СтрокаДанные) 63 | 64 | Сервер = "api.diffchecker.com"; 65 | СтрокаЗапроса = "/public/text?output_type=html&email=YOUR_EMAIL"; 66 | // вместо YOUR_EMAIL вставить почту регистрации на сервисе 67 | // output_type - описан на сайте, кратко: json, html и html_json 68 | 69 | ssl1 = Новый ЗащищенноеСоединениеOpenSSL(); 70 | 71 | HTTPСоединение = Новый HTTPСоединение(Сервер,,,,,90,ssl1); 72 | HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса); 73 | HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json"); 74 | HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаДанные, "UTF-8", ПредопределенноеЗначение("ИспользованиеByteOrderMark.НеИспользовать")); 75 | Попытка 76 | Результат = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); 77 | Исключение 78 | Текстсообщения = НСтр("ru='Произошла сетевая ошибка!'"); 79 | 80 | Сообщение = Новый СообщениеПользователю; 81 | Сообщение.Текст = Текстсообщения; 82 | Сообщение.Сообщить(); 83 | 84 | Результат = Ложь; 85 | КонецПопытки; 86 | 87 | Возврат Результат; 88 | 89 | КонецФункции 90 | 91 | &НаСервереБезКонтекста 92 | Функция ОбработатьОтветdiffchecker_POST(РезультатЗапроса) 93 | 94 | КодУспешногоОтветаHTTP = 200; 95 | Если РезультатЗапроса.КодСостояния <> КодУспешногоОтветаHTTP Тогда 96 | 97 | ДанныеОтвета = Неопределено; 98 | Текстсообщения = СтрШаблон(НСтр("ru='Ошибка соединения с сервисом! Код ошибки: %1'"), РезультатЗапроса.КодСостояния); 99 | 100 | Сообщение = Новый СообщениеПользователю; 101 | Сообщение.Текст = Текстсообщения; 102 | Сообщение.Сообщить(); 103 | 104 | Иначе 105 | 106 | ДанныеОтвета = РезультатЗапроса.ПолучитьТелоКакСтроку(); 107 | 108 | КонецЕсли; 109 | 110 | Возврат ДанныеОтвета; 111 | 112 | КонецФункции 113 | 114 | #КонецОбласти 115 | -------------------------------------------------------------------------------- /src/Паттерны/Пример работы с адаптером.bsl: -------------------------------------------------------------------------------- 1 | Перем КоличествоФактПоСтроке; // хранит количество по выбранной строке ДО изменения 2 | 3 | &НаКлиенте 4 | Процедура ДеревоТоваровФактПриИзменении(Элемент) 5 | 6 | ТекущиеДанные = Элементы.ДеревоТоваров.ТекущиеДанные; 7 | 8 | Если КоличествоФактПоСтроке = ТекущиеДанные.Факт Тогда 9 | 10 | Событие = "Обработка не нужна"; 11 | 12 | ИначеЕсли ТекущиеДанные.Факт > ТекущиеДанные.План 13 | И Объект.Операция = ПредопределенноеЗначение("Перечисление.МоёПеречисление.СборкаЗаказовКлиента") Тогда 14 | 15 | Событие = "Отменить изменение"; 16 | 17 | Иначе 18 | 19 | Событие = "Открыть форму редактирования"; 20 | 21 | КонецЕсли; 22 | 23 | ОбработатьСобытиеИзмененияКоличестваФакт(Событие, ТекущиеДанные); 24 | 25 | КонецПроцедуры 26 | 27 | // Процедура - Дерево товаров факт при изменении завершение 28 | // 29 | // Параметры: 30 | // РезультатЗакрытия - Структура 31 | // - КоличествоФакт - Число 32 | // - НоменклатураПредставление - Строка 33 | // - ИсключаемыеРаспоряжения - Массив - набор распоряжений для установки признака "Исключен" 34 | // - ИзмененияРасходныхОрдеров - Массив - строки с данными для изменения расходных ордеров 35 | // -- РасходныйОрдер - ДокументСсылка.РасходныйОрдер 36 | // -- Номенклатура - СправочникСсылка.Номенклатуры 37 | // -- Количество - Число 38 | // -- НоменклатураПредставление - Строка 39 | // ДополнительныеПараметры - Неопределено 40 | // 41 | &НаКлиенте 42 | Процедура ДеревоТоваровФактПриИзмененииЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт 43 | 44 | ТекущиеДанные = Элементы.ДеревоТоваров.ТекущиеДанные; 45 | 46 | ПустойРезультат = РезультатЗакрытия = Неопределено; 47 | ЭтоСборкаЗаказовКлиента = Объект.Операция = ПредопределенноеЗначение("Перечисление.МоёПеречисление.СборкаЗаказовКлиента"); 48 | НеВыбраныРаспоряжения = (ЭтоСборкаЗаказовКлиента И РезультатЗакрытия.ИсключаемыеРаспоряжения.Количество() = 0); 49 | 50 | Если ПустойРезультат ИЛИ НеВыбраныРаспоряжения Тогда 51 | 52 | Событие = "Отменить изменение"; 53 | СледующееСобытие = ""; 54 | 55 | ИначеЕсли ЭтоСборкаЗаказовКлиента Тогда 56 | 57 | Событие = "Исключить распоряжения"; 58 | СледующееСобытие = "Перезаписать документ"; 59 | 60 | Иначе 61 | 62 | Событие = "Изменить расходные ордера"; 63 | СледующееСобытие = "Перезаписать документ"; 64 | 65 | КонецЕсли; 66 | 67 | ОбработатьСобытиеИзмененияКоличестваФакт(Событие, ТекущиеДанные, РезультатЗакрытия, СледующееСобытие); 68 | 69 | КонецПроцедуры 70 | 71 | &НаКлиенте 72 | Процедура ОбработатьСобытиеИзмененияКоличестваФакт(Событие, ТекущиеДанные, РезультатЗакрытия = Неопределено, СледующееСобытие = "") 73 | 74 | Если Событие = "Обработка не нужна" Тогда 75 | 76 | Возврат; 77 | 78 | ИначеЕсли Событие = "Отменить изменение" Тогда 79 | 80 | ТекущиеДанные.Факт = КоличествоФактПоСтроке; 81 | Возврат; 82 | 83 | ИначеЕсли Событие = "Открыть форму редактирования" Тогда 84 | 85 | ОткрытьФормуИзмененияКоличестваФакт(ТекущиеДанные); 86 | 87 | ИначеЕсли Событие = "Исключить распоряжения" Тогда 88 | 89 | ОбработатьРаспоряженияНаСборкуПослеИзмененияКоличестваФакт( 90 | РезультатЗакрытия.ИсключаемыеРаспоряжения, 91 | РезультатЗакрытия.НоменклатураПредставление); 92 | 93 | ТекущиеДанные.Факт = РезультатЗакрытия.Количество; 94 | 95 | ИначеЕсли Событие = "Изменить расходные ордера" Тогда 96 | 97 | ДанныеВозврата = ОбработатьРасходныеОрдераПослеИзмененияКоличестваФакт(РезультатЗакрытия.ИзмененияРасходныхОрдеров); 98 | 99 | Если НЕ ДанныеВозврата.Отказ Тогда 100 | 101 | ОбработатьРаспоряженияНаСборкуПослеИзмененияКоличестваФакт( 102 | ДанныеВозврата.ИсключаемыеРаспоряжения, 103 | РезультатЗакрытия.НоменклатураПредставление); 104 | 105 | КонецЕсли; 106 | 107 | ИначеЕсли Событие = "Перезаписать документ" Тогда 108 | 109 | ОбновитьТаблицыТоваров = Истина; 110 | ЭтаФорма.Записать(); 111 | 112 | ПосторитьДеревоТоваровПоДаннымДокумента(); 113 | УстановитьТекущуюСтрокуДереваТоваров(); 114 | 115 | 116 | Иначе 117 | 118 | ВызватьИсключение "Неизвестное событие редактирования 'Количества (факт)'. Обратитесь к программисту"; 119 | 120 | КонецЕсли; 121 | 122 | Если ЗначениеЗаполнено(СледующееСобытие) Тогда 123 | ОбработатьСобытиеИзмененияКоличестваФакт(СледующееСобытие, ТекущиеДанные); 124 | КонецЕсли; 125 | 126 | КонецПроцедуры 127 | 128 | &НаКлиенте 129 | Процедура ОткрытьФормуИзмененияКоличестваФакт(ТекущиеДанные) 130 | 131 | ПараметрыФормы = Новый Структура; 132 | ПараметрыФормы.Вставить("Номенклатура", ТекущиеДанные.Номенклатура); 133 | ПараметрыФормы.Вставить("Серия", ТекущиеДанные.Серия); 134 | ПараметрыФормы.Вставить("Операция", Объект.Операция); 135 | ПараметрыФормы.Вставить("СсылкаЗадание", Объект.Ссылка); 136 | ПараметрыФормы.Вставить("Распоряжение", ТекущиеДанные.Распоряжение); 137 | ПараметрыФормы.Вставить("КоличествоДельта", (ТекущиеДанные.План - ТекущиеДанные.Факт)); 138 | ПараметрыФормы.Вставить("КоличествоНовыйФакт", ТекущиеДанные.Факт); 139 | 140 | ОповещениеОЗакрытии = Новый ОписаниеОповещения("ДеревоТоваровФактПриИзмененииЗавершение", ЭтаФорма); 141 | ОткрытьФорму( 142 | "Документ.МойДокумент.Форма.ФормаВыбораРаспоряжений", 143 | ПараметрыФормы, 144 | ЭтаФорма, 145 | , 146 | , 147 | , 148 | ОповещениеОЗакрытии,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); 149 | 150 | КонецПроцедуры 151 | -------------------------------------------------------------------------------- /src/Работа с системными настройками/РаботаССистемнымиНастройками.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c3831ec8-d8d5-4f93-8a22-f9bfae07327f 7 | d70d55fa-efc7-4bda-a1ce-3da033b703f2 8 | 9 | 10 | 8699e245-98ad-4e84-9b34-e19c41042226 11 | c99a5392-82be-4f0e-95ba-0e461b848aaf 12 | 13 | 14 | 15 | РаботаССистемнымиНастройками 16 | 17 | 18 | ru 19 | Работа с системными настройками 20 | 21 | 22 | 23 | ExternalDataProcessor.РаботаССистемнымиНастройками.Form.Форма 24 | 25 | 26 | 27 |
Форма
28 |
29 |
30 |
-------------------------------------------------------------------------------- /src/Работа с системными настройками/РаботаССистемнымиНастройками/Ext/Help.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | ru 4 | -------------------------------------------------------------------------------- /src/Работа с системными настройками/РаботаССистемнымиНастройками/Ext/Help/ru.html: -------------------------------------------------------------------------------- 1 |  2 |

Обработка "Работа с системными настройками"

3 |
Предназначена для анализа хранилища системных настроек, с последующей их чисткой. 
4 |

Основные реквизиты

5 |

Выбранный пользователь - позволяет отфильтровать настройки по указанному пользователю. Читает типовой справочник БСП "Пользователи".
Обработать записей (max.) - ограничивает выборку настроек для анализа, т.к. их может быть очень и очень много.
Порции для удаления - ограничивает кол-во удаляемых записей.

6 |

Команды формы

7 |

Команда "Анализ":
8 |
9 |
  • читает настройки из базы;
  • 10 |
  • выводит настройки на вкладку "Результаты анализа"; максимальное кол-во выводимых записей задаётся реквизитом "Обработать записей (max.)"
  • 11 |
  • Анализирует, а есть ли в выбранных записях указанные в таблице "Шаблоны поиска и удаления записей" шаблоны и подсчитывает их кол-во

Подменю "Очистка настроек"
12 |

13 |
  • Удалить с учетом шаблонов - удаляет все записи по шаблонам, которые в таблице "Шаблоны поиска и удаления записей" в колонке "Удалить" имеют признак "Истина"
  • 14 |
  • Очистить историю работы пользователей - очищает историю работы пользователей, посылая команду `ИсторияРаботыПользователя.ОчиститьВсе()`
  • 15 |
  • Очистить настройки несуществующих пользователей - удаляет настройки пользователей, которые помечены на удаление или которых нет в справочнике "Пользователи"
  • 16 |
  • Удалить все настройки (без применения шаблонов) - просто удаляет все настройки. Ограничено размером порции, указанной в настройке "Порции для удаления".

17 |

Благодарности и источники

18 |
19 |

Основной источник информации - тема на форуме: Как сократить размер таблицы _SYSTEMSETTINGS и почему она растет?

20 |

"Мы – только лишь карлики, стоящие на плечах гигантов". Отдельная благодарность камрадам: AllexSoft, TigerPXN и klinval за то, что поделились своими наработками. Они были использованы для создания данной доработки.

21 |

22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Работа с системными настройками/РаботаССистемнымиНастройками/Ext/ObjectModule.bsl: -------------------------------------------------------------------------------- 1 | #Область ПрограммныйИнтерфейс 2 | 3 | Функция СведенияОВнешнейОбработке() Экспорт 4 | 5 | ПараметрыОбработки = ПараметрыОбработки(); 6 | 7 | Сведения = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(); 8 | Сведения.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(); 9 | Сведения.Наименование = ПараметрыОбработки.Наименование; 10 | 11 | стр = Сведения.Команды.Добавить(); 12 | стр.Представление = ПараметрыОбработки.Представление; 13 | стр.Идентификатор = ПараметрыОбработки.Идентификатор; 14 | стр.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); 15 | 16 | Возврат Сведения; 17 | 18 | КонецФункции 19 | 20 | #КонецОбласти 21 | 22 | #Область СлужебныеПроцедурыИФункции 23 | 24 | Функция ПараметрыОбработки() 25 | 26 | Структура = Новый Структура(); 27 | Структура.Вставить("Представление", "Работа с системными настройками"); 28 | Структура.Вставить("Наименование", "Работа с системными настройками"); 29 | Структура.Вставить("Идентификатор", "РаботаССистемнымиНастройками"); 30 | Структура.Вставить("Версия", "1.2"); 31 | Возврат Структура; 32 | 33 | КонецФункции 34 | 35 | #КонецОбласти -------------------------------------------------------------------------------- /src/Работа с системными настройками/РаботаССистемнымиНастройками/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Catalogs/ДоговорыКонтрагентов.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | b69a41b7-a9d0-4b27-940c-2f903ba97cbd 7 | 2c972805-296d-4dcd-9aee-4271f711f3d0 8 | 9 | 10 | 5d862d80-d281-40ed-914b-c69c6244c54a 11 | f8d3c6de-b009-4dab-865b-5866839e87c4 12 | 13 | 14 | d46e603b-dbe0-4963-95ec-e21bc5160783 15 | b3ca2acf-0ca1-4a5d-bf2b-ec5e22ff62c4 16 | 17 | 18 | 560a5c5b-23f0-4053-b93f-25e5d91a7cd1 19 | 8a1355d6-5064-499b-83f4-888e4fd0452c 20 | 21 | 22 | 687de06e-357b-45a5-b3da-8441a8f98e4e 23 | f93a3f10-8c6b-4e07-a4f1-9fb0126aa96d 24 | 25 | 26 | 27 | ДоговорыКонтрагентов 28 | 29 | Adopted 30 | f3485b53-c447-4b51-8a87-ed842c7cd798 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/CommonPictures/ВидимостьРазрешена.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | ВидимостьРазрешена 7 | 8 | Adopted 9 | 2d058e47-4197-41ab-bebb-353e08584548 10 | false 11 | false 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/CommonPictures/ИсходящийЗапросЕГАИС.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | ИсходящийЗапросЕГАИС 7 | 8 | Adopted 9 | 7520c6d4-619b-4920-aeab-a7265cd1b050 10 | false 11 | false 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/CommonPictures/Набор.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Набор 7 | 8 | Adopted 9 | 785aa6e8-067b-47ea-8ccd-2477538e9d6b 10 | false 11 | false 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/CommonPictures/Наборы.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Наборы 7 | 8 | Adopted 9 | 41439ddb-c6da-4179-b23c-341850e9cb13 10 | false 11 | false 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/CommonPictures/Органайзер.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Органайзер 7 | 8 | Adopted 9 | dce82d28-9a7b-4d4c-af13-90f459cf4af2 10 | false 11 | false 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/CommonPictures/ПрослеживаемыйТовар.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | ПрослеживаемыйТовар 7 | 8 | Adopted 9 | 7a8fea1f-6fae-41d7-b9d0-94a1633f9335 10 | false 11 | false 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/CommonPictures/СостояниеОригиналаПервичногоДокументаОригиналНеПолучен.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | СостояниеОригиналаПервичногоДокументаОригиналНеПолучен 7 | 8 | Adopted 9 | 4f4916dc-b6fe-4f99-9220-bd7c076408ae 10 | false 11 | false 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/CommonPictures/СтатусыСерийНоменклатуры.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | СтатусыСерийНоменклатуры 7 | 8 | Adopted 9 | 1f37f36c-aa81-4a41-83fa-a1e007fb746a 10 | false 11 | false 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/ConfigDumpInfo.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Configuration.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 9cd510cd-abfc-11d4-9434-004095e12fc7 7 | ef4e9f85-9bd7-46e6-9c47-639aff8cf54b 8 | 9 | 10 | 9fcd25a0-4822-11d4-9414-008048da11f9 11 | ac18fef4-b6b6-4279-b53b-05e4b30c4694 12 | 13 | 14 | e3687481-0a87-462c-a166-9f34594f9bba 15 | 74cff561-1a94-4943-b0c5-527851749d66 16 | 17 | 18 | 9de14907-ec23-4a07-96f0-85521cb6b53b 19 | 53a1bb1f-a386-4736-875b-85f53c819152 20 | 21 | 22 | 51f2d5d8-ea4d-4064-8892-82951750031e 23 | 6c463d73-9946-4f64-9cc8-490d4856668e 24 | 25 | 26 | e68182ea-4237-4383-967f-90c1e3370bc7 27 | 39e83e63-0653-4d8c-8ac5-21a5ccb168e0 28 | 29 | 30 | fb282519-d103-4dd3-bc12-cb271d631dfc 31 | 8d56a5d3-01ec-466d-84fa-b9c0b4029a62 32 | 33 | 34 | 35 | ДоработкиПоЗаявкам 36 | 37 | 38 | ru 39 | Доработки по заявкам 40 | 41 | 42 | 43 | Customization 44 | Adopted 45 | true 46 | ДПЗ_ 47 | Version8_3_17 48 | ManagedApplication 49 | 50 | PlatformApplication 51 | 52 | Russian 53 | 54 | Role.ДПЗ_ОсновнаяРоль 55 | 56 | Вдовенко 57 | 1.0.0.3 58 | Language.Русский 59 | 60 | 61 | 62 | 63 | 64 | TaxiEnableVersion8_2 65 | 66 | 67 | Русский 68 | ФонУправляющегоПоля 69 | ИтогиФонГруппы 70 | СветлыйСерый 71 | ИсходящийЗапросЕГАИС 72 | ВидимостьРазрешена 73 | ПрослеживаемыйТовар 74 | СтатусыСерийНоменклатуры 75 | Органайзер 76 | Набор 77 | Наборы 78 | СостояниеОригиналаПервичногоДокументаОригиналНеПолучен 79 | ДПЗ_ОсновнаяРоль 80 | ДоговорыКонтрагентов 81 | РасходнаяНакладная 82 | ЗаказПокупателя 83 | СчетНаОплату 84 | СпособыЗачетаИРаспределенияПлатежей 85 | ВариантыЗаполненияРасшифровкиПлатежа 86 | ТипыДокументовЭДО 87 | СервисыДоставки 88 | ТипыДенежныхСредств 89 | ПечатьСчетНаОплату 90 | 91 | 92 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/DataProcessors/ПечатьСчетНаОплату.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | b5e00c0e-49a1-4728-af55-fe9b3a8c6e4d 7 | b95e9202-c32b-4d69-9068-6fb00c742c49 8 | 9 | 10 | 95081637-2499-4518-a8e3-ee0affbd9cc7 11 | 7ddb8aee-38cd-4a9f-9c7c-26a52c616d8d 12 | 13 | 14 | 15 | ПечатьСчетНаОплату 16 | 17 | Adopted 18 | 77db291c-e0ad-400a-aadb-c64838701c0e 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/DataProcessors/ПечатьСчетНаОплату/Templates/ПФ_MXL_СчетНаОплату.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 13 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Documents/ЗаказПокупателя.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 6b20d4df-9756-45e8-8296-82396a036205 7 | 9962ae08-d561-42cc-8578-8be412417996 8 | 9 | 10 | d35e6069-b468-459c-98d8-2d1f0f51ba09 11 | b63ea05f-4b27-49dd-9e0f-f42a0e0f2998 12 | 13 | 14 | 36b8e92f-5fe3-4dff-9a2c-313cbe8d8307 15 | 2f354f10-2f91-4120-abc3-903201aa06dd 16 | 17 | 18 | f4a680dc-370d-43b5-a507-d14c809a3a40 19 | 2a45b37b-5ba9-470c-9c79-cfa74bf8a824 20 | 21 | 22 | 8c198d36-14b5-428e-8f92-d802b9d22c9f 23 | 7a67159c-0eef-4137-920a-8894de842e14 24 | 25 | 26 | 27 | ЗаказПокупателя 28 | 29 | Adopted 30 | 9133d1ee-54e6-4556-8f42-a94010c0b021 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Documents/РасходнаяНакладная.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 59a6345f-17e5-4b55-a243-d4b60e56f16c 7 | fe31d00d-086e-48c0-8851-29c1995a29e0 8 | 9 | 10 | 863619b8-e84e-4735-addf-bbb40f71ca4f 11 | b8a229e0-3365-49ff-9a9e-4e37ce7435e8 12 | 13 | 14 | f4bebe2a-af82-4746-b22d-cf3c2b5514de 15 | 41bf342b-221c-4abf-aec7-126ee2653c62 16 | 17 | 18 | 148efc68-fa77-479f-a827-7703209afae8 19 | 620b573e-028a-4854-8d32-8137af33532c 20 | 21 | 22 | 15f4b731-3373-40b3-b7fd-9e8686d63110 23 | 2b58ecd3-003c-4cfa-ae2a-9ca9f206a669 24 | 25 | 26 | 27 | РасходнаяНакладная 28 | 29 | Adopted 30 | e557f2c9-6893-4523-9b13-07e678b2778a 31 | 32 | 33 | 34 | 35 | 36 | 37 | ОснованиеПечати 38 | 39 | Adopted 40 | 6f78c021-c1ce-4d22-84c8-103e792ecb0c 41 | 42 | xs:string 43 | 44 | 300 45 | Variable 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | ОснованиеПечатиСсылка 54 | 55 | Adopted 56 | bd9132b4-5b68-4043-835e-1c650e47f88c 57 | 58 | cfg:AnyRef 59 | 60 | 61 | 62 |
ФормаДокумента
63 |
64 |
65 |
-------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Documents/РасходнаяНакладная/Ext/ObjectModule.bsl: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Documents/РасходнаяНакладная/Forms/ФормаДокумента.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | 6 | ФормаДокумента 7 | 8 | Adopted 9 | f2399716-997d-48c1-8d29-70d2ec17d5ff 10 | Managed 11 | 12 | 13 |
-------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Documents/РасходнаяНакладная/Forms/ФормаДокумента/Ext/Form/Module.bsl: -------------------------------------------------------------------------------- 1 |  2 | &НаКлиенте 3 | Процедура ДПЗ_ЗаказПриИзмененииПосле(Элемент) 4 | 5 | ОбновитьОснованиеПечати(Объект, Элементы.Заказ.ТекстРедактирования); 6 | 7 | КонецПроцедуры 8 | 9 | &НаСервере 10 | Процедура ДПЗ_ПередЗаписьюНаСервереПосле(Отказ, ТекущийОбъект, ПараметрыЗаписи) 11 | 12 | Если НЕ ЗначениеЗаполнено(Объект.Ссылка) 13 | И ТипЗнч(ТекущийОбъект.ОснованиеПечатиСсылка) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда 14 | ОбновитьОснованиеПечати(ТекущийОбъект, ПараметрыЗаписи.ТекстОснования); 15 | КонецЕсли; 16 | 17 | КонецПроцедуры 18 | 19 | &НаКлиентеНаСервереБезКонтекста 20 | Процедура ОбновитьОснованиеПечати(Объект, ЗНАЧ ТекстОснования) 21 | 22 | Объект.ОснованиеПечати = ТекстОснования; 23 | Объект.ОснованиеПечатиСсылка = Объект.Заказ; 24 | 25 | КонецПроцедуры 26 | 27 | &НаКлиенте 28 | Процедура ДПЗ_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи) 29 | 30 | Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда 31 | НомераГТДЗаполнитьПоФактическимОстаткамНаСервере(Истина); 32 | ПараметрыЗаписи.Вставить("ТекстОснования", Элементы.Заказ.ТекстРедактирования); 33 | КонецЕсли; 34 | 35 | КонецПроцедуры 36 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Documents/СчетНаОплату.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | a1734c91-86d0-49db-977c-a9133b884faf 7 | c812f66a-d3a5-4399-b3f0-41c0c95ef311 8 | 9 | 10 | 08a458ca-a600-4d0a-b3b0-d01ffc74d4a2 11 | cb30f0e7-a823-47a1-87ff-6298e896260e 12 | 13 | 14 | 470c03f0-1358-41eb-82c1-baf2f689ea25 15 | 8d1cd4c9-43ce-479f-8ad7-3ddf8f12f752 16 | 17 | 18 | 949cb474-2852-42ee-a896-afbe84c3604b 19 | fad606a1-2947-459b-a09f-bc00af20c436 20 | 21 | 22 | 115d3781-7527-4414-87dd-ee8eeed0183b 23 | 954e5486-b3e1-420d-8e29-647fb5f6e1b8 24 | 25 | 26 | 27 | СчетНаОплату 28 | 29 | Adopted 30 | 2186b103-f68e-4fdc-80a1-6dacced11af6 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Enums/ВариантыЗаполненияРасшифровкиПлатежа.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 57c9083b-67a8-40b1-a486-c4b54960a2b2 7 | 7c91fd5b-6b31-4c10-b2ba-d8d3fd55c566 8 | 9 | 10 | a9bbc628-2853-4137-bbaa-1b197a57a45f 11 | d9b7648f-efb5-499e-a8c4-799c3a31bef0 12 | 13 | 14 | 4bf503f1-7b8b-4afd-a588-1d6139b7e3b3 15 | 3dbae493-95aa-41e7-8718-2c64cc020de8 16 | 17 | 18 | 19 | ВариантыЗаполненияРасшифровкиПлатежа 20 | 21 | Adopted 22 | 44dc99c9-e86c-4b30-966a-23d66848b397 23 | 24 | 25 | 26 | 27 | 28 | Вручную 29 | 30 | Adopted 31 | a66bd8f3-35a7-4f24-abf0-6f793a6e4687 32 | 33 | 34 | 35 | 36 | 37 | Просмотр 38 | 39 | Adopted 40 | 7e245375-ce9b-4484-bcc4-4641099f7f09 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Enums/СервисыДоставки.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 747216c7-e6ba-468c-9556-c9834822b469 7 | 7c31ad3c-5d76-46f7-80ec-d7a24f757594 8 | 9 | 10 | df8fc5ec-2347-430f-911a-3d72f45b47c3 11 | 19edfe08-e8d9-44e6-a06b-39664828d439 12 | 13 | 14 | fedccdcc-0688-492b-935c-54ded4a5f5d9 15 | ce8e150b-0f36-4504-bf92-4e89ced2c58a 16 | 17 | 18 | 19 | СервисыДоставки 20 | 21 | Adopted 22 | 3c9b8c09-5ae3-477f-8554-c8db219fdda0 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Enums/СпособыЗачетаИРаспределенияПлатежей.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 12795a1d-25ec-4c2c-9188-5355d838ed9f 7 | 0faca170-d6f0-4d7a-bd08-4a42985da2e5 8 | 9 | 10 | 942bcecb-cbef-4c3c-b566-53122c2df35a 11 | f914d7c3-1534-48d5-880e-f185f210fe6c 12 | 13 | 14 | 13b3cf78-a17e-4533-a199-ab8784b06fef 15 | c6285844-bf0e-46fe-8e45-b94924e4a6f7 16 | 17 | 18 | 19 | СпособыЗачетаИРаспределенияПлатежей 20 | 21 | Adopted 22 | ec7f89e5-9da1-40f9-97f2-338018f8f4a1 23 | 24 | 25 | 26 | 27 | 28 | Авто 29 | 30 | Adopted 31 | 48e6d05e-8b3d-422a-9cd2-44f911caf9c9 32 | 33 | 34 | 35 | 36 | 37 | Вручную 38 | 39 | Adopted 40 | 5fe38c36-f719-4f3a-9952-dc955b1590f6 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Enums/ТипыДенежныхСредств.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | a8739279-188c-48ea-add1-533799dff04a 7 | 50298589-2720-4f6e-82cf-95b59bd320f6 8 | 9 | 10 | 6c22c98a-6f93-41d9-83ac-35317a7bdba4 11 | 4b5e83cb-b2de-43cb-988e-199bc5a916d1 12 | 13 | 14 | a14186e8-e119-44fa-bf96-437a3b2b043a 15 | a1bea043-7460-4756-9487-3bfba64a2408 16 | 17 | 18 | 19 | ТипыДенежныхСредств 20 | 21 | Adopted 22 | f99ea38a-e7dd-4cf2-baef-9f45b84e14c5 23 | 24 | 25 | 26 | 27 | 28 | Наличные 29 | 30 | Adopted 31 | b0b38bad-1d96-4998-b1c0-7fb6ccd93d16 32 | 33 | 34 | 35 | 36 | 37 | Безналичные 38 | 39 | Adopted 40 | af55f18c-5849-41ae-9408-25553d915add 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Enums/ТипыДокументовЭДО.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | fa36440c-366d-4a3e-9691-cd1914b1eeaf 7 | 67b58028-16e4-4da5-a4e0-5a9594617141 8 | 9 | 10 | 8c192278-d7e0-45e4-921e-e78919fc2b16 11 | e41f2046-7444-4170-bccc-fe56dd2dcc63 12 | 13 | 14 | 1923ad95-d8eb-499c-b196-2ed33cbb4feb 15 | 5c130dd9-a2b9-4c92-9813-06d54965e7ca 16 | 17 | 18 | 19 | ТипыДокументовЭДО 20 | 21 | Adopted 22 | 619b38a5-86f8-4cd4-8c33-5cccf63e7f21 23 | 24 | 25 | 26 | 27 | 28 | ТоварнаяНакладная 29 | 30 | Adopted 31 | dc4b5af1-239b-4a4f-a85a-586bc098a20f 32 | 33 | 34 | 35 | 36 | 37 | АктВыполненныхРабот 38 | 39 | Adopted 40 | 934f3354-8413-4dd6-ace0-071eb18b76bc 41 | 42 | 43 | 44 | 45 | 46 | АктНаПередачуПрав 47 | 48 | Adopted 49 | 2a47c137-6b65-4074-9ac1-97efb8442e6d 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Languages/Русский.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Русский 7 | 8 | Adopted 9 | af1b61ff-d1b9-4053-ad85-8259b6626adc 10 | ru 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/Roles/ДПЗ_ОсновнаяРоль.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | ДПЗ_ОсновнаяРоль 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/StyleItems/ИтогиФонГруппы.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | ИтогиФонГруппы 7 | 8 | Adopted 9 | 1df935d0-dbff-44ad-b3b5-057382fc07e1 10 | Color 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/StyleItems/СветлыйСерый.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | СветлыйСерый 7 | 8 | Adopted 9 | 9815fbd0-a05a-421e-a121-9771b9ef9ea5 10 | Color 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Расширения/Доработка печати (УНФ)/StyleItems/ФонУправляющегоПоля.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | ФонУправляющегоПоля 7 | 8 | Adopted 9 | da164c9a-4836-4c07-ace9-1c2e2382eceb 10 | Color 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Эксперименты/ЗапросыВПлатформе8_3_20.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c3831ec8-d8d5-4f93-8a22-f9bfae07327f 7 | ff1aceca-bb77-46dd-83bf-e3a1ad74fcd5 8 | 9 | 10 | 350dab27-4b6b-44ec-8812-ae42dd18aac7 11 | 48d70e1d-039c-4318-b723-593a3dfc5f7b 12 | 13 | 14 | 15 | ЗапросыВПлатформе8_3_20 16 | 17 | 18 | ru 19 | Запросы в платформе8 3 20 20 | 21 | 22 | 23 | ExternalDataProcessor.ЗапросыВПлатформе8_3_20.Form.Форма 24 | 25 | 26 | 27 |
Форма
28 |
29 |
30 |
-------------------------------------------------------------------------------- /src/Эксперименты/ЗапросыВПлатформе8_3_20/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /src/Эксперименты/ЗапросыВПлатформе8_3_20/Forms/Форма/Ext/Form.xml: -------------------------------------------------------------------------------- 1 |  2 |
3 | 4 | 5 | 10 | 15 | 16 | 17 | 18 | 23 | 28 | 33 | 34 | 35 | 36 | 37 | cfg:ExternalDataProcessorObject.ЗапросыВПлатформе8_3_20 38 | 39 | true 40 | 41 | 42 | 43 | 44 | 45 | <v8:item> 46 | <v8:lang>ru</v8:lang> 47 | <v8:content>Арифметические операции</v8:content> 48 | </v8:item> 49 | 50 | 51 | 52 | ru 53 | Арифметические операции 54 | 55 | 56 | АрифметическиеОперации 57 | 58 | 59 | 60 | <v8:item> 61 | <v8:lang>ru</v8:lang> 62 | <v8:content>Работа со строками</v8:content> 63 | </v8:item> 64 | 65 | 66 | 67 | ru 68 | Работа со строками 69 | 70 | 71 | РаботаСоСтроками 72 | 73 | 74 | 75 | <v8:item> 76 | <v8:lang>ru</v8:lang> 77 | <v8:content>Работа со строками пример объединения</v8:content> 78 | </v8:item> 79 | 80 | 81 | 82 | ru 83 | Работа со строками пример объединения 84 | 85 | 86 | РаботаСоСтроками_ПримерОбъединения 87 | 88 | 89 | 90 | <v8:item> 91 | <v8:lang>ru</v8:lang> 92 | <v8:content>Размер хранимых данных</v8:content> 93 | </v8:item> 94 | 95 | 96 | 97 | ru 98 | Размер хранимых данных 99 | 100 | 101 | РазмерХранимыхДанных 102 | 103 | 104 | 105 | <v8:item> 106 | <v8:lang>ru</v8:lang> 107 | <v8:content>Эксперименты по комментарию к статье</v8:content> 108 | </v8:item> 109 | 110 | 111 | 112 | ru 113 | Эксперименты по комментарию к статье 114 | 115 | 116 | ЭкспериментыПоКомментариюКСтатье 117 | 118 | 119 |
-------------------------------------------------------------------------------- /src/Эксперименты/РаботаСАсинх.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c3831ec8-d8d5-4f93-8a22-f9bfae07327f 7 | 366d961a-ef90-4a1f-9856-022a2be6ffd2 8 | 9 | 10 | 9777735d-1421-435a-99e5-e4020ace5f47 11 | c1988456-c9b7-407d-9cd9-5d702ffcb561 12 | 13 | 14 | 15 | РаботаСАсинх 16 | 17 | 18 | ru 19 | Работа с асинх 20 | 21 | 22 | Тестовая обработка для прогона "через руки" основных функций АСИНХ 23 | ExternalDataProcessor.РаботаСАсинх.Form.Форма 24 | 25 | 26 | 27 |
Форма
28 |
29 |
30 |
-------------------------------------------------------------------------------- /src/Эксперименты/РаботаСАсинх/Ext/ObjectModule.bsl: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /src/Эксперименты/РаботаСАсинх/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /src/Эксперименты/РаботаСАсинх/Forms/Форма/Ext/Form/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ОписаниеПеременных 2 | 3 | &НаКлиенте 4 | Перем ВопросПриЗакрытииЗадан; 5 | 6 | #КонецОбласти 7 | 8 | #Область ОбработчикиСобытийФормы 9 | 10 | &НаСервере 11 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 12 | 13 | ПутьКПапкеСФайлами = "C:\Program Files\1cv8\conf"; 14 | ПутьКФайлу = "C:\Program Files\1cv8\conf\conf.cfg"; 15 | 16 | КонецПроцедуры 17 | 18 | &НаКлиенте 19 | Процедура ПриОткрытии(Отказ) 20 | 21 | Отказ = Истина; 22 | 23 | КонецПроцедуры 24 | 25 | &НаКлиенте 26 | Асинх Процедура ПриОткрытииАсинх(Отказ) 27 | 28 | Отказ = Истина; 29 | ВызватьИсключение "Я плохой обработчик"; 30 | МатОшибка = 1 / 0; 31 | 32 | КонецПроцедуры 33 | 34 | &НаКлиенте 35 | Процедура ПриОткрытииВопрос(Отказ) 36 | 37 | ЗадатьВопросАсинх_ПриОткрытии(); 38 | 39 | КонецПроцедуры 40 | 41 | &НаКлиенте 42 | Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) 43 | 44 | //Если НЕ ВопросПриЗакрытииЗадан Тогда 45 | // ЗадатьВопросАсинх_ПриЗакрытии(); 46 | // Отказ = Истина; 47 | //КонецЕсли; 48 | 49 | КонецПроцедуры 50 | 51 | #КонецОбласти 52 | 53 | #Область ОбработчикиКомандФормы 54 | 55 | &НаКлиенте 56 | Процедура Демо_АнализОбещания(Команда) 57 | 58 | Обещание = ПредупреждениеАсинх(НСтр("ru='Ну почему ты не купил слона?'")); 59 | ВывестиПараметрыПеременной(Обещание); 60 | 61 | КонецПроцедуры 62 | 63 | &НаКлиенте 64 | Асинх Процедура Демо_ЗадатьВопросАсинх(Команда) 65 | 66 | обещание = ВопросАсинх(НСтр("ru='Купить слона?'"), РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); 67 | Результат = Ждать обещание; 68 | 69 | Если Результат = КодВозвратаДиалога.Да Тогда 70 | текст = НСтр("ru='Ответ утвержительный!'"); 71 | ИначеЕсли Результат = КодВозвратаДиалога.Нет Тогда 72 | текст = НСтр("ru='Ответ отрицательный!'"); 73 | Иначе 74 | текст = НСтр("ru='Ответ не получен!'"); 75 | КонецЕсли; 76 | 77 | Сообщение = Новый СообщениеПользователю; 78 | Сообщение.Текст = текст; 79 | Сообщение.Сообщить(); 80 | 81 | ВывестиПараметрыПеременной(Результат); 82 | 83 | КонецПроцедуры 84 | 85 | &НаКлиенте 86 | Асинх Процедура Демо_ПоказатьПредупреждениеАсинх(Команда) 87 | 88 | текст = НСтр("ru='Это асинхронное предупреждение!'"); 89 | 90 | Обещание = ПредупреждениеАсинх(текст); 91 | // тут выполнение остановиться пока пользователь не закроет предупреждение. Второе предупреждение показано не будет 92 | Результат = Ждать Обещание; 93 | 94 | // предупреждение выведется и, но код пойдёт испоняться дальше 95 | текст = НСтр("ru='Это второе асинхронное предупреждение!'"); 96 | ПредупреждениеАсинх(текст); 97 | 98 | Сообщение = Новый СообщениеПользователю; 99 | Сообщение.Текст = НСтр("ru='текст после второго предупреждения!'");; 100 | Сообщение.Сообщить(); 101 | 102 | ВывестиПараметрыПеременной(Результат); 103 | 104 | КонецПроцедуры 105 | 106 | &НаКлиенте 107 | Асинх Процедура Демо_ОткрытьЗначениеАсинх(Команда) 108 | 109 | тестовыйСписок = Новый СписокЗначений; 110 | тестовыйСписок.Добавить("тест1", "тестовое значение 1"); 111 | тестовыйСписок.Добавить("тест2", "тестовое значение 2"); 112 | тестовыйСписок.Добавить("тест3", "тестовое значение 3"); 113 | 114 | Обещание = ОткрытьЗначениеАсинх(тестовыйСписок); 115 | Результат = Ждать Обещание; // тут выполнение остановиться пока список не закроется 116 | 117 | ВывестиПараметрыПеременной(Результат); 118 | 119 | КонецПроцедуры 120 | 121 | &НаКлиенте 122 | Асинх Процедура Демо_ВвестиЧислоАсинх(Команда) 123 | 124 | Обещание = ВвестиЧислоАсинх(1, НСтр("ru='укажите любое число'")); 125 | Результат = Ждать Обещание; 126 | 127 | ВывестиПараметрыПеременной(Результат); 128 | 129 | КонецПроцедуры 130 | 131 | &НаКлиенте 132 | Асинх Процедура Демо_НайтиФайлыАсинх(Команда) 133 | 134 | Обещание = НайтиФайлыАсинх(ПутьКПапкеСФайлами, "*.*", Ложь); 135 | Результат = Ждать Обещание; 136 | 137 | ВывестиПараметрыПеременной(Результат); 138 | 139 | КонецПроцедуры 140 | 141 | &НаКлиенте 142 | Асинх Процедура Демо_ПоместитьФайлНаСерверАсинх(Команда) 143 | 144 | Обещание = ПоместитьФайлНаСерверАсинх(,,, ПутьКФайлу, ЭтаФорма.УникальныйИдентификатор); 145 | Результат = Ждать Обещание; 146 | 147 | ВывестиПараметрыПеременной(Результат); 148 | 149 | КонецПроцедуры 150 | 151 | &НаКлиенте 152 | Асинх Процедура Демо_ПоместитьФайлыНаСерверАсинх(Команда) 153 | 154 | Обещание = НайтиФайлыАсинх(ПутьКПапкеСФайлами, "*.*", Ложь); 155 | Результат = Ждать Обещание; 156 | 157 | ДобавляемыеФайлы = Новый Массив; 158 | Для каждого НайденныйФайл из Результат Цикл 159 | 160 | ОписаниеДобавляемогоФайла = Новый ОписаниеПередаваемогоФайла; 161 | ОписаниеДобавляемогоФайла.Имя = НайденныйФайл.ПолноеИмя; 162 | ДобавляемыеФайлы.Добавить(ОписаниеДобавляемогоФайла); 163 | 164 | КонецЦикла; 165 | 166 | Обещание = ПоместитьФайлыНаСерверАсинх(,,ДобавляемыеФайлы, ЭтаФорма.УникальныйИдентификатор); 167 | Результат = Ждать Обещание; 168 | 169 | ВывестиПараметрыПеременной(Результат); 170 | 171 | КонецПроцедуры 172 | 173 | &НаКлиенте 174 | Процедура Демо_ПоявлениеИсключенияСинх(Команда) 175 | 176 | Попытка 177 | ВызватьОшибкуАсих_Функция(); 178 | Исключение 179 | Сообщение = Новый СообщениеПользователю; 180 | Сообщение.Текст = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 181 | Сообщение.Сообщить(); 182 | КонецПопытки; 183 | 184 | КонецПроцедуры 185 | 186 | &НаКлиенте 187 | Асинх Процедура Демо_ПоявлениеИсключенияАсинх(Команда) 188 | 189 | Результат = Ждать ВызватьОшибкуАсих_Функция(); 190 | 191 | КонецПроцедуры 192 | 193 | &НаКлиенте 194 | Асинх Процедура Демо_ПопыткаИсключениеАсинх(Команда) 195 | 196 | Попытка 197 | ВызватьОшибкуАсих_Процедура(); 198 | Исключение 199 | текст = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 200 | Сообщение = Новый СообщениеПользователю; 201 | Сообщение.Текст = текст; 202 | Сообщение.Сообщить(); 203 | КонецПопытки; 204 | 205 | КонецПроцедуры 206 | 207 | &НаКлиенте 208 | Асинх Процедура Демо_АнализПередачиПараметров(Команда) 209 | 210 | ПараметрПроцедуры = НСтр("ru='я слон 1'"); 211 | ПроцедураСПараметрами(ПараметрПроцедуры); 212 | ВывестиПараметрыПеременной(ПараметрПроцедуры); 213 | 214 | ПараметрФункции = НСтр("ru='я слон 2'"); 215 | ФункцияСПараметрами(ПараметрФункции); 216 | ВывестиПараметрыПеременной(ПараметрФункции); 217 | 218 | ПараметрФункции = НСтр("ru='я слон 3'"); 219 | Результат = Ждать ФункцияСПараметрами(ПараметрФункции); 220 | ВывестиПараметрыПеременной(ПараметрФункции); 221 | ВывестиПараметрыПеременной(Результат); 222 | 223 | КонецПроцедуры 224 | 225 | &НаКлиенте 226 | Асинх Процедура Демо_ПопыткаИсключениеФункцииАсинх(Команда) 227 | 228 | Попытка 229 | Рез = Ждать ВызватьОшибкуАсих_Функция(); 230 | Исключение 231 | текст = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 232 | Сообщение = Новый СообщениеПользователю; 233 | Сообщение.Текст = текст; 234 | Сообщение.Сообщить(); 235 | КонецПопытки; 236 | 237 | КонецПроцедуры 238 | 239 | &НаКлиенте 240 | Процедура Демо_ПопыткаИсключениеФункцииАсинхБезЖдать(Команда) 241 | 242 | Попытка 243 | ВызватьОшибкуАсих_Функция(); 244 | Исключение 245 | текст = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); 246 | Сообщение = Новый СообщениеПользователю; 247 | Сообщение.Текст = текст; 248 | Сообщение.Сообщить(); 249 | КонецПопытки; 250 | 251 | КонецПроцедуры 252 | 253 | #КонецОбласти 254 | 255 | #Область СлужебныеПроцедурыИФункции 256 | 257 | &НаКлиенте 258 | Процедура ВывестиПараметрыПеременной(ЗНАЧ ПеременнаяДляАнализа) 259 | 260 | Сообщение = Новый СообщениеПользователю; 261 | 262 | Если ТипЗнч(ПеременнаяДляАнализа) = Тип("Файл") Тогда 263 | текст = НСтр("ru='Значение переменной: %1, тип: %2, имя файла: %3!'"); 264 | текст = СтрШаблон(текст, ПеременнаяДляАнализа, ТипЗнч(ПеременнаяДляАнализа), ПеременнаяДляАнализа.Имя); 265 | Иначе 266 | текст = НСтр("ru='Значение переменной: %1, тип: %2!'"); 267 | текст = СтрШаблон(текст, ПеременнаяДляАнализа, ТипЗнч(ПеременнаяДляАнализа)); 268 | КонецЕсли; 269 | Сообщение.Текст = текст; 270 | Сообщение.Сообщить(); 271 | 272 | Если ТипЗнч(ПеременнаяДляАнализа) = Тип("ОписаниеПомещенногоФайла") Тогда 273 | 274 | Сообщение.Текст = СтрШаблон(НСтр("ru='Полный путь к файлу: %1'"), ПеременнаяДляАнализа.СсылкаНаФайл.Файл.ПолноеИмя); 275 | Сообщение.Сообщить(); 276 | 277 | Сообщение.Текст = СтрШаблон(НСтр("ru='Адрес: %1'"), ПеременнаяДляАнализа.Адрес); 278 | Сообщение.Сообщить(); 279 | 280 | Сообщение.Текст = СтрШаблон(НСтр("ru='Помещение файла отменено: %1'"), ПеременнаяДляАнализа.ПомещениеФайлаОтменено); 281 | Сообщение.Сообщить(); 282 | 283 | КонецЕсли; 284 | 285 | Если ТипЗнч(ПеременнаяДляАнализа) = Тип("Массив") Тогда 286 | 287 | Для каждого ЭлементКоллекции Из ПеременнаяДляАнализа Цикл 288 | 289 | ВывестиПараметрыПеременной(ЭлементКоллекции); 290 | 291 | КонецЦикла; 292 | 293 | КонецЕсли; 294 | 295 | КонецПроцедуры // ВывестиРезультатСообщением() 296 | 297 | &НаКлиенте 298 | Асинх Процедура ВызватьОшибкуАсих_Процедура() 299 | 300 | ВызватьИсключение НСтр("ru='ошибка: слон не обнаружен!'"); 301 | 302 | КонецПроцедуры 303 | 304 | &НаКлиенте 305 | Асинх Функция ВызватьОшибкуАсих_Функция() 306 | 307 | ВызватьИсключение НСтр("ru='ошибка: слон не обнаружен!'"); 308 | 309 | КонецФункции 310 | 311 | &НаКлиенте 312 | Функция ВызватьОшибкуСинх() 313 | 314 | ВызватьИсключение НСтр("ru='ошибка: слон не обнаружен!'"); 315 | 316 | КонецФункции 317 | 318 | &НаКлиенте 319 | Асинх Процедура ЗадатьВопросАсинх_ПриОткрытии() 320 | 321 | обещание = ВопросАсинх(НСтр("ru='Купить слона?'"), РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); 322 | Результат = Ждать обещание; 323 | 324 | Если Результат = КодВозвратаДиалога.Да Тогда 325 | ЗадатьВопросАсинх_ПриОткрытии_Второй(); 326 | КонецЕсли; 327 | 328 | КонецПроцедуры 329 | 330 | &НаКлиенте 331 | Асинх Процедура ЗадатьВопросАсинх_ПриОткрытии_Второй() 332 | 333 | обещание = ВопросАсинх(НСтр("ru='Купить мышку?'"), РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); 334 | Результат = Ждать обещание; 335 | 336 | Если Результат = КодВозвратаДиалога.Да Тогда 337 | ЗадатьВопросАсинх_ПриОткрытии_Третий(); 338 | Иначе 339 | ЭтаФорма.Закрыть(); 340 | КонецЕсли; 341 | 342 | КонецПроцедуры 343 | 344 | &НаКлиенте 345 | Асинх Процедура ЗадатьВопросАсинх_ПриОткрытии_Третий() 346 | 347 | обещание = ВопросАсинх(НСтр("ru='Напугать слона мышкой?'"), РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); 348 | Результат = Ждать обещание; 349 | 350 | Если Результат = КодВозвратаДиалога.Да Тогда 351 | Сообщение = Новый СообщениеПользователю; 352 | Сообщение.Текст = НСтр("ru='Молодеца!'");; 353 | Сообщение.Сообщить(); 354 | Иначе 355 | ЭтаФорма.Закрыть(); 356 | КонецЕсли; 357 | 358 | КонецПроцедуры 359 | 360 | &НаКлиенте 361 | Асинх Процедура ЗадатьВопросАсинх_ПриЗакрытии() 362 | 363 | обещание = ВопросАсинх(НСтр("ru='Продать слона?'"), РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); 364 | Результат = Ждать обещание; 365 | 366 | Если Результат = КодВозвратаДиалога.Да Тогда 367 | ЭтаФорма.Закрыть(); 368 | ВопросПриЗакрытииЗадан = Истина; 369 | КонецЕсли; 370 | 371 | КонецПроцедуры 372 | 373 | &НаКлиенте 374 | Асинх Процедура ПроцедураСПараметрами(ПараметрПроцедуры) 375 | 376 | ПараметрПроцедуры = НСтр("ru='йя слоняшка'"); 377 | 378 | КонецПроцедуры 379 | 380 | &НаКлиенте 381 | Асинх Функция ФункцияСПараметрами(ПараметрФункции) 382 | 383 | ПараметрФункции = НСтр("ru='йя слоняшка'"); 384 | Возврат ПараметрФункции; 385 | 386 | КонецФункции 387 | 388 | 389 | 390 | #КонецОбласти 391 | 392 | ВопросПриЗакрытииЗадан = Ложь; -------------------------------------------------------------------------------- /src/Эксперименты/РаботаФункцийПодстановкиПараметровВСтроку.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c3831ec8-d8d5-4f93-8a22-f9bfae07327f 7 | 74c3255a-0b11-4575-9556-300c6eca5bd5 8 | 9 | 10 | 641bc265-dbec-474c-b583-d90ba7ffd812 11 | 3ed1f5ff-f478-4b92-ac5f-2856d0143969 12 | 13 | 14 | 15 | РаботаФункцийПодстановкиПараметровВСтроку 16 | 17 | 18 | ru 19 | Работа функций подстановки параметров в строку 20 | 21 | 22 | 23 | ExternalDataProcessor.РаботаФункцийПодстановкиПараметровВСтроку.Form.Форма 24 | 25 | 26 | 27 |
Форма
28 |
29 |
30 |
-------------------------------------------------------------------------------- /src/Эксперименты/РаботаФункцийПодстановкиПараметровВСтроку/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /src/Эксперименты/РаботаФункцийПодстановкиПараметровВСтроку/Forms/Форма/Ext/Form.xml: -------------------------------------------------------------------------------- 1 |  2 |
3 | 4 | 5 | 10 | 15 | 20 | 21 | 22 | 23 | ПриСозданииНаСервере 24 | 25 | 26 | 27 | КонецСч 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | cfg:ExternalDataProcessorObject.РаботаФункцийПодстановкиПараметровВСтроку 36 | 37 | true 38 | 39 | 40 | 41 | <v8:item> 42 | <v8:lang>ru</v8:lang> 43 | <v8:content>Конец сч</v8:content> 44 | </v8:item> 45 | 46 | 47 | xs:decimal 48 | 49 | 10 50 | 0 51 | Any 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | <v8:item> 60 | <v8:lang>ru</v8:lang> 61 | <v8:content>Команда cтр шаблон</v8:content> 62 | </v8:item> 63 | 64 | 65 | 66 | ru 67 | Команда cтр шаблон 68 | 69 | 70 | КомандаCтрШаблон 71 | 72 | 73 | 74 | <v8:item> 75 | <v8:lang>ru</v8:lang> 76 | <v8:content>Команда строка</v8:content> 77 | </v8:item> 78 | 79 | 80 | 81 | ru 82 | Команда строка 83 | 84 | 85 | КомандаСтрока 86 | 87 | 88 | 89 | <v8:item> 90 | <v8:lang>ru</v8:lang> 91 | <v8:content>Команда стр соединить</v8:content> 92 | </v8:item> 93 | 94 | 95 | 96 | ru 97 | Команда стр соединить 98 | 99 | 100 | КомандаСтрСоединить 101 | 102 | 103 |
-------------------------------------------------------------------------------- /src/Эксперименты/РаботаФункцийПодстановкиПараметровВСтроку/Forms/Форма/Ext/Form/Module.bsl: -------------------------------------------------------------------------------- 1 |  2 | &НаКлиенте 3 | Процедура КомандаCтрШаблон(Команда) 4 | 5 | Начало = ТекущаяУниверсальнаяДатаВМиллисекундах(); 6 | 7 | ШаблонСтроки = "моя строка: %1, %2, %3, %4"; 8 | Для сч = 1 по КонецСч Цикл 9 | 10 | //лРез = СтрШаблон(ШаблонСтроки, сч); 11 | лРез = СтрШаблон(ШаблонСтроки, сч, сч, сч, сч); 12 | 13 | КонецЦикла; 14 | 15 | Конец = ТекущаяУниверсальнаяДатаВМиллисекундах(); 16 | 17 | ВывестиРезультат("КомандаCтрШаблон", Начало, Конец, КонецСч); 18 | 19 | КонецПроцедуры 20 | 21 | &НаКлиенте 22 | Процедура ВывестиРезультат(КомадаТеста, Начало, Конец, КонецСч) 23 | 24 | Дельта = (Конец - Начало) / 1000; 25 | 26 | Сообщение = Новый СообщениеПользователю; 27 | 28 | Сообщение.Текст = СтрШаблон("Команда: %1, длительность: %2 на кол-ве циклов: %3", 29 | КомадаТеста, Дельта, КонецСч); 30 | Сообщение.Сообщить(); 31 | 32 | КонецПроцедуры 33 | 34 | &НаКлиенте 35 | Процедура КомандаСтрока(Команда) 36 | 37 | Начало = ТекущаяУниверсальнаяДатаВМиллисекундах(); 38 | 39 | ШаблонСтроки = "моя строка: "; 40 | Для сч = 1 по КонецСч Цикл 41 | 42 | //лРез = ШаблонСтроки + сч; 43 | лРез = ШаблонСтроки + сч + ", " + сч + ", " + сч + ", " + сч; 44 | 45 | КонецЦикла; 46 | 47 | Конец = ТекущаяУниверсальнаяДатаВМиллисекундах(); 48 | 49 | ВывестиРезультат("КомандаСложениеСтрок", Начало, Конец, КонецСч); 50 | 51 | КонецПроцедуры 52 | 53 | &НаКлиенте 54 | Процедура КомандаСтрСоединить(Команда) 55 | 56 | 57 | ШаблонСтроки = "моя строка:"; 58 | 59 | м = Новый массив; 60 | Для сч = 1 по КонецСч Цикл 61 | 62 | н = Новый Массив; 63 | н.Добавить(ШаблонСтроки); 64 | н.Добавить(сч); 65 | н.Добавить(сч); 66 | н.Добавить(сч); 67 | н.Добавить(сч); 68 | м.Добавить(н); 69 | 70 | КонецЦикла; 71 | 72 | Начало = ТекущаяУниверсальнаяДатаВМиллисекундах(); 73 | 74 | для Каждого н из м Цикл 75 | СтрСоединить(н, " "); 76 | КонецЦикла; 77 | 78 | Конец = ТекущаяУниверсальнаяДатаВМиллисекундах(); 79 | 80 | ВывестиРезультат("КомандаСтрСоединить", Начало, Конец, КонецСч); 81 | 82 | КонецПроцедуры 83 | 84 | &НаСервере 85 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 86 | 87 | КонецСч = 1000000; 88 | 89 | КонецПроцедуры 90 | -------------------------------------------------------------------------------- /tests/start_tests_exemple/only allure.bat: -------------------------------------------------------------------------------- 1 | cd "../build/" 2 | call allure generate --clean allure -o html_report 3 | call allure open html_report -------------------------------------------------------------------------------- /tests/start_tests_exemple/start_bdd_tests.bat: -------------------------------------------------------------------------------- 1 | cd "../../tests/vrunner json/" 2 | call vrunner xunit --settings vrunner_ext.json 3 | "C:\Program Files\1cv8\8.3.20.1613\bin\1cv8c.exe" enterprise /S"Server_name\base_name" /N"Username" /P"" /Execute "C:\vanessa-automation\vanessa-automation.epf" /TESTMANAGER /C"StartFeaturePlayer;VAParams=C:\vanessa_json\vanessa.json" 4 | 5 | cd "../../build/" 6 | call allure generate --clean allure -o html_report 7 | call allure open html_report -------------------------------------------------------------------------------- /tests/start_tests_exemple/start_tests.bat: -------------------------------------------------------------------------------- 1 | cd "../src/Oscript/" 2 | oscript "clear allure folders.os" 3 | 4 | cd "../../tests/vrunner json/" 5 | call vrunner xunit --settings vrunner_tests.json 6 | 7 | cd "../../build/" 8 | call allure generate --clean allure -o html_report 9 | call allure open html_report -------------------------------------------------------------------------------- /tests/start_tests_exemple/vanessa_json/vanessa.json: -------------------------------------------------------------------------------- 1 | { 2 | "ИмяСборки": "Сборка 8.3.20", 3 | "ВерсияПлатформы": "8.3.20", 4 | "КаталогПоискаВерсииПлатформы": "C:\\Program Files\\1cv8", 5 | "СтрокаПодключенияКБазе": "ENTERPRISE /S\"server_name/base_name\" /N\"UserName\" /P\"password\"", 6 | "ПутьКVanessaAutomation": "C:\\vanessa-automation\\vanessa-automation.epf", 7 | "КаталогФич": "C:\\...\\.feature\\Склад и логистика", 8 | "КаталогиБиблиотек": [ 9 | "C:\\...\\vanessa-automation\\features\\Libraries", 10 | "C:\\...\\.feature\\Тестовые данные" 11 | ], 12 | "КоличествоПопытокВыполненияДействия": "10", 13 | "КоличествоСекундПоискаОкна": "120", 14 | "ТаймаутДляАсинхронныхШагов": "120", 15 | "ПрикладыватьКОтчетуAllureДанныеОСостоянииАктивнойФормы": "Истина", 16 | "ПрикладыватьКОтчетуAllureДанныеОСостоянииВсехФорм": "Истина", 17 | "ПрикладыватьКОтчетуAllureЖурналРегистрацииВыполненияСценария": "Истина", 18 | "ПодставлятьВОтчетеAllureЗначенияПеременных": "Истина", 19 | "ПрикладыватьКОтчетуAllureДанныеОСетевыхСоединениях": "Истина", 20 | "ПрикладыватьКОтчетуAllureДанныеОПроцессахОС": "Истина", 21 | "ВыполнитьСценарии": "Истина", 22 | "ЗавершитьРаботуСистемы": "Истина", 23 | "ЗакрытьTestClientПослеЗапускаСценариев": "Истина", 24 | "ЗапускатьКлиентТестированияСМаксимизированнымОкном": "Истина", 25 | "ДелатьЛогВыполненияСценариевВЖР": "Ложь", 26 | "ДелатьОтчетВФорматеАллюр": "Истина", 27 | "ДелатьОтчетВФорматеjUnit": "Ложь", 28 | "ДелатьОтчетВФорматеCucumberJson": "Ложь", 29 | "ДелатьЛогВыполненияСценариевВТекстовыйФайл": "Истина", 30 | "КаталогOutputAllureБазовый": "C:\\...\\build\\allure_vanessa", 31 | "ИмяФайлаЛогВыполненияСценариев": "C:\\...\\build\\log8320.txt", 32 | "СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки": "Истина", 33 | "ДелатьСкриншотПриВозникновенииОшибки": "Ложь", 34 | "СниматьСкриншотКаждогоОкна1С": "Ложь", 35 | "ОстановкаПриВозникновенииОшибки": "Ложь", 36 | "СпособСнятияСкриншотовВнешнейКомпонентой": "2", 37 | "ИспользоватьКомпонентуVanessaExt": "Истина", 38 | "ИспользоватьВнешнююКомпонентуДляСкриншотов": "Истина", 39 | "КаталогOutputСкриншоты": "C:\\...\\build\\скриншоты", 40 | 41 | "СписокТеговИсключение":[ 42 | "IgnoreOnCIMainBuild", 43 | "IgnoreOn8320", 44 | "IgnoreOnUFBuilds", 45 | "Ignore" 46 | ] 47 | } -------------------------------------------------------------------------------- /tests/start_tests_exemple/vrunner json/vrunner_tests.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": { 3 | "--ibconnection": "/SServer_name\\base_name", 4 | "--db-user": "Username", 5 | "--db-pwd": "", 6 | "--v8version":"8.3.20", 7 | "---no-wait": "", 8 | "--ordinaryapp": "-1" 9 | }, 10 | "xunit": { 11 | "--xddConfig": "./tests/xUnitParams.json", 12 | "testsPath": "./build/tests", 13 | "--reportsxunit": "ГенераторОтчетаAllureXMLВерсия2{./build/allure/allure.xml}", 14 | "--xddExitCodePath": "./build/xddExitCodePath.txt", 15 | "--testclient": "testclient::48223", 16 | "--testclient-additional" : "/iTaxi" 17 | } 18 | } -------------------------------------------------------------------------------- /tests/unit tests/ВыгрузкаДанных.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c3831ec8-d8d5-4f93-8a22-f9bfae07327f 7 | 42108836-a154-4144-b811-a0bd39b499ad 8 | 9 | 10 | 9d4333e5-284f-48f8-9e8c-5c020129faca 11 | 56eeeac1-2f7c-4d25-9772-74129bf83f2c 12 | 13 | 14 | 15 | ВыгрузкаДанных 16 | 17 | 18 | ru 19 | Выгрузка данных 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /tests/unit tests/ВыгрузкаДанных/Ext/ObjectModule.bsl: -------------------------------------------------------------------------------- 1 | Перем КонтекстЯдра; 2 | Перем Утверждения; 3 | 4 | #Область ОсновнаяЛогика 5 | 6 | Функция СформироватьJSONОстатков(ТестовыйНаборДанных = Ложь) 7 | 8 | Если ТестовыйНаборДанных Тогда 9 | РезультатЗапроса = ВыполнитьЗапросПолученияТестовыхОстатковДляВыгрузки(); 10 | Иначе 11 | РезультатЗапроса = ВыполнитьЗапросПолученияОстатковДляВыгрузки(); 12 | КонецЕсли; 13 | ДанныеПоОстаткам = ОбработатьДанныеПоОстаткам(РезультатЗапроса); 14 | Возврат СформироватьJSON(ДанныеПоОстаткам); 15 | 16 | КонецФункции // СформироватьJSONОстатков() 17 | 18 | Функция ОбработатьДанныеПоОстаткам(РезультатЗапроса) 19 | 20 | Если РезультатЗапроса.Пустой() Тогда 21 | Возврат Новый Структура; 22 | КонецЕсли; 23 | 24 | ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); 25 | 26 | ВыгрузкаНоменклатуры = Новый Структура; 27 | Обработано = 1; 28 | Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 29 | 30 | ДанныеПоОстаткам = Новый Структура("id, amount"); 31 | ЗаполнитьЗначенияСвойств(ДанныеПоОстаткам, ВыборкаДетальныеЗаписи); 32 | 33 | КлючСтруктуры = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("nom_%1", Формат(Обработано, "ЧГ=")); 34 | ВыгрузкаНоменклатуры.Вставить(КлючСтруктуры, ДанныеПоОстаткам); 35 | Обработано = Обработано + 1; 36 | 37 | КонецЦикла; 38 | 39 | Возврат ВыгрузкаНоменклатуры; 40 | 41 | КонецФункции 42 | 43 | Функция ВыполнитьЗапросПолученияОстатковДляВыгрузки() 44 | 45 | Запрос = Новый Запрос; 46 | Запрос.Текст = 47 | "ВЫБРАТЬ 48 | | СпрНоменклатура.Артикул КАК id, 49 | | СпрСклад.Код КАК store_id, 50 | | СУММА(ВЫБОР 51 | | КОГДА СпрНазначения.Ссылка ЕСТЬ НЕ NULL 52 | | И СпрНазначения.Заказ <> НЕОПРЕДЕЛЕНО 53 | | ТОГДА 0 54 | | КОГДА ИнформацияОДоступности.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) 55 | | ТОГДА 0 56 | | ИНАЧЕ ИнформацияОДоступности.Свободно 57 | | КОНЕЦ) КАК amount 58 | |ИЗ 59 | | РегистрСведений.РаспределениеЗапасов КАК ИнформацияОДоступности 60 | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура 61 | | ПО ИнформацияОДоступности.Номенклатура = СпрНоменклатура.Ссылка 62 | | И (СпрНоменклатура.Артикул <> """") 63 | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СпрСклад 64 | | ПО ИнформацияОДоступности.Склад = СпрСклад.Ссылка 65 | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК СпрНазначения 66 | | ПО ИнформацияОДоступности.Назначение = СпрНазначения.Ссылка 67 | |ГДЕ 68 | | ИнформацияОДоступности.Свободно <> 0 69 | | И СпрНоменклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) 70 | | 71 | |СГРУППИРОВАТЬ ПО 72 | | СпрСклад.гиг_ИдСклада, 73 | | СпрНоменклатура.Артикул 74 | | 75 | |ИМЕЮЩИЕ 76 | | СУММА(ВЫБОР 77 | | КОГДА СпрНазначения.Заказ <> НЕОПРЕДЕЛЕНО 78 | | ТОГДА 0 79 | | КОГДА ИнформацияОДоступности.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) 80 | | ТОГДА 0 81 | | ИНАЧЕ ИнформацияОДоступности.Свободно 82 | | КОНЕЦ) > 0"; 83 | 84 | РезультатЗапроса = Запрос.Выполнить(); 85 | 86 | Возврат РезультатЗапроса; 87 | 88 | КонецФункции 89 | 90 | Функция ВыполнитьЗапросПолученияТестовыхОстатковДляВыгрузки() 91 | 92 | Запрос = Новый Запрос; 93 | Запрос.Текст = 94 | "ВЫБРАТЬ 95 | | ВложенныйЗапрос.id КАК id, 96 | | ВложенныйЗапрос.store_id КАК store_id, 97 | | ВложенныйЗапрос.amount КАК amount 98 | |ИЗ 99 | | (ВЫБРАТЬ 100 | | ""11111"" КАК id, 101 | | ""250"" КАК store_id, 102 | | ""39"" КАК amount) КАК ВложенныйЗапрос"; 103 | 104 | РезультатЗапроса = Запрос.Выполнить(); 105 | 106 | Возврат РезультатЗапроса; 107 | 108 | КонецФункции 109 | 110 | Функция ТестоваяСтруктураОстатков() 111 | 112 | Параметры = Новый Структура; 113 | Параметры.Вставить("id", "11111"); 114 | Параметры.Вставить("store_id", "250"); 115 | Параметры.Вставить("amount", "39"); 116 | 117 | ДанныеНом = Новый Структура; 118 | ДанныеНом.Вставить("nom_1", Параметры); 119 | 120 | Возврат ДанныеНом; 121 | 122 | КонецФункции 123 | 124 | // преборазует входящую структуру в JSON 125 | // экранирует не ASCII символы, для отключения поправить параметры записи 126 | // 127 | // ПАРАМЕТРЫ: 128 | // ВходящиеДанные - Структура 129 | // Ключ - строка 130 | // Значение - Строка, Число, Дата, Булево, Массив, Структура - 131 | // любое серилизуемое в JSON значение 132 | // ФорматироватьJSON - БУЛЕВО - если нужно сформировать JSON для вывода в форматированном виде 133 | // 134 | // Возвращаемое значение: 135 | // Строка - сформированный JSON 136 | // 137 | Функция СформироватьJSON(ВходящиеДанные, ФорматироватьJSON = Ложь) 138 | 139 | Если ФорматироватьJSON Тогда 140 | СимволФорматирования = Символы.Таб; 141 | Иначе 142 | СимволФорматирования = Неопределено; 143 | КонецЕсли; 144 | 145 | ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(,СимволФорматирования,, ЭкранированиеСимволовJSON.СимволыВнеASCII); 146 | 147 | ЗаписьJSON = Новый ЗаписьJSON; 148 | ЗаписьJSON.ПроверятьСтруктуру = Ложь; 149 | ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); 150 | ЗаписатьJSON(ЗаписьJSON, ВходящиеДанные); 151 | 152 | Возврат ЗаписьJSON.Закрыть(); 153 | 154 | КонецФункции // СформироватьJSON() 155 | 156 | #КонецОбласти 157 | 158 | #Область TDD 159 | 160 | //{ основная процедура для юнит-тестирования xUnitFor1C 161 | Процедура Инициализация(КонтекстЯдраПараметр) Экспорт 162 | КонтекстЯдра = КонтекстЯдраПараметр; 163 | Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); 164 | КонецПроцедуры 165 | 166 | Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт 167 | 168 | КонтекстЯдра = КонтекстЯдраПараметр; 169 | 170 | НаборТестов.НачатьГруппу("ВыгрузкаОстатков"); 171 | НаборТестов.Добавить("ТестДолжен_ПолучитьJSON_Остатки"); 172 | НаборТестов.Добавить("ТестДолжен_ПроверитьНаличиеРеальныхДанныхВБазе_Остатки"); 173 | НаборТестов.Добавить("ТестДолжен_СравнитьФормированиеТестовогоНабораJSON_Остатки"); 174 | 175 | КонецПроцедуры 176 | 177 | //} 178 | 179 | //{ Блок юнит-тестов 180 | 181 | Процедура ПередЗапускомТеста() Экспорт 182 | НачатьТранзакцию(); 183 | КонецПроцедуры 184 | 185 | Процедура ПослеЗапускаТеста() Экспорт 186 | Если ТранзакцияАктивна() Тогда 187 | ОтменитьТранзакцию(); 188 | КонецЕсли; 189 | КонецПроцедуры 190 | 191 | Процедура ТестДолжен_ПолучитьJSON_Остатки() Экспорт 192 | 193 | Данные = СформироватьJSONОстатков(); 194 | 195 | Утверждения.ПроверитьНеРавенство(Данные, Неопределено); 196 | 197 | КонецПроцедуры 198 | 199 | Процедура ТестДолжен_ПроверитьНаличиеРеальныхДанныхВБазе_Остатки() Экспорт 200 | 201 | РезультатЗапроса = ВыполнитьЗапросПолученияОстатковДляВыгрузки(); 202 | 203 | Утверждения.ПроверитьЛожь(РезультатЗапроса.Пустой()); 204 | 205 | КонецПроцедуры 206 | 207 | Процедура ТестДолжен_СравнитьФормированиеТестовогоНабораJSON_Остатки() Экспорт 208 | 209 | Данные = СформироватьJSONОстатков(Истина); 210 | ДанныеЭталон = СформироватьJSON(ТестоваяСтруктураОстатков()); 211 | 212 | Утверждения.ПроверитьРавенство(Данные, ДанныеЭталон, "Не удалось корректно сформировать JSON с тестовыми остатками"); 213 | 214 | КонецПроцедуры 215 | 216 | //} 217 | 218 | #КонецОбласти 219 | -------------------------------------------------------------------------------- /tests/unit tests/Шаблон обработки с тестами.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c3831ec8-d8d5-4f93-8a22-f9bfae07327f 7 | 1d2bc23b-2e1a-43cd-af20-3a627412953c 8 | 9 | 10 | b94b85b1-0707-4299-a29a-a4715643cac3 11 | b29e602e-f7c6-4d4f-9f69-366777ec5fe4 12 | 13 | 14 | 15 | Тест_ПроверитьСправочник_гиг_СпособыДоставки 16 | 17 | 18 | ru 19 | Тест проверить справочник гиг способы доставки 20 | 21 | 22 | 23 | ExternalDataProcessor.Тест_ПроверитьСправочник_гиг_СпособыДоставки.Form.Форма 24 | 25 | 26 | 27 |
Форма
28 |
29 |
30 |
-------------------------------------------------------------------------------- /tests/unit tests/Шаблон обработки с тестами/Ext/ObjectModule.bsl: -------------------------------------------------------------------------------- 1 | #Область ОписаниеПеременных 2 | 3 | // переменные для автотестов 4 | Перем КонтекстЯдра; 5 | Перем Утверждения; 6 | 7 | Перем ТестовыеДанные; // Служебная структура, в которую добавляются тестовые данные перед инициализацией тестов 8 | 9 | #КонецОбласти 10 | 11 | #Область Автотесты 12 | 13 | //{ основная процедура для юнит-тестирования xUnitFor1C 14 | Процедура Инициализация(КонтекстЯдраПараметр) Экспорт 15 | 16 | КонтекстЯдра = КонтекстЯдраПараметр; 17 | Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); 18 | 19 | КонецПроцедуры 20 | 21 | Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт 22 | 23 | КонтекстЯдра = КонтекстЯдраПараметр; 24 | 25 | НаборТестов.НачатьГруппу("Проверка реквизитов"); 26 | НаборТестов.Добавить("ТестДолжен_ПроверитьРеквизит_НастройкаОтправки"); 27 | НаборТестов.Добавить("ТестДолжен_ПроверитьТипизациюРеквизита_НастройкаОтправки"); 28 | //НаборТестов.Добавить("ТестДолжен_УдалитьНоменклатуруИзПланаОбмена"); 29 | 30 | КонецПроцедуры 31 | 32 | //} 33 | 34 | //{ Блок юнит-тестов 35 | 36 | Процедура ПередЗапускомТеста() Экспорт 37 | 38 | НачатьТранзакцию(); 39 | 40 | ТестовыеДанные = Новый Структура; 41 | ТестовыеДанные.Вставить("РеквизитНастройкаОтправкиТК", Метаданные.Справочники.гиг_СпособыДоставки.Реквизиты.Найти("НастройкаОтправкиТК")); 42 | 43 | КонецПроцедуры 44 | 45 | Процедура ПослеЗапускаТеста() Экспорт 46 | 47 | Если ТранзакцияАктивна() Тогда 48 | ОтменитьТранзакцию(); 49 | КонецЕсли; 50 | 51 | КонецПроцедуры 52 | 53 | // проверить подключение к рэббит 54 | 55 | Процедура ТестДолжен_ПроверитьРеквизит_НастройкаОтправки() Экспорт 56 | 57 | Утверждения.ПроверитьНеРавенство(ТестовыеДанные.РеквизитНастройкаОтправкиТК, Неопределено, 58 | "Не удалось найти добавленный реквизит ""НастройкаОтправкиТК"""); 59 | 60 | КонецПроцедуры 61 | 62 | Процедура ТестДолжен_ПроверитьТипизациюРеквизита_НастройкаОтправки() Экспорт 63 | 64 | ДанныеРеквизита = ТестовыеДанные.РеквизитНастройкаОтправкиТК; 65 | Если ДанныеРеквизита = Неопределено Тогда 66 | Утверждения.Проверить(Ложь, "Ошибка получения реквизита"); 67 | Возврат; 68 | КонецЕсли; 69 | 70 | ТипыРеквизита = ДанныеРеквизита.Тип.Типы(); 71 | Утверждения.ПроверитьРавенство(ТипыРеквизита.Количество(), 1, "Реквизит не должен быть составного типа"); 72 | 73 | Утверждения.ПроверитьРавенство(ТипыРеквизита[0], Тип("СправочникСсылка.ТК_НастройкиОтправок"), "Неверный тип реквизита"); 74 | 75 | КонецПроцедуры 76 | 77 | 78 | Процедура ПроверитьКорректностьЗаполненияТаблицы(ОтправкаВТК, ИмяТаблицы, ОжидаетсяСтрок = 1) Экспорт 79 | 80 | КоличествоСтрок = отправкаВТК[ИмяТаблицы].Количество(); 81 | ТекстОшибки = СтрШаблон("не корректно заполнилась таблица %1! Ожидали 1, получилось %2", ИмяТаблицы, КоличествоСтрок); 82 | Утверждения.Проверить(КоличествоСтрок = ОжидаетсяСтрок, ТекстОшибки); 83 | 84 | КонецПроцедуры 85 | 86 | Процедура ПроверитьКорректностьЗаполненияКолонкиТаблицы(ОтправкаВТК, ИмяТаблицы, ИмяКолонки, ОжидаемоеЗначение) Экспорт 87 | 88 | КоличествоСтрок = отправкаВТК[ИмяТаблицы].Количество(); 89 | Если КоличествоСтрок = 0 Тогда 90 | 91 | ТекстОшибки = НСтр("ru='Нет строк в таблице %1'"); 92 | Утверждения.Проверить(Ложь, СтрШаблон(ТекстОшибки, ИмяТаблицы)); 93 | 94 | Иначе 95 | 96 | строка = отправкаВТК.Распоряжения[0]; 97 | ТекстОшибки = НСтр("ru='Неверно заполнилась колонка %1 в таблице %2'"); 98 | Утверждения.Проверить(Строка[ИмяКолонки] = ОжидаемоеЗначение, СтрШаблон(ТекстОшибки, ИмяКолонки, ИмяТаблицы)); 99 | 100 | КонецЕсли; 101 | 102 | КонецПроцедуры 103 | 104 | Процедура ПроверитьКорректностьЗаполненияРеквизита(ДанныеОбъекта, ИмяРеквизита, ЗначениеЭталон) 105 | 106 | 107 | ТекстОшибки = СтрШаблон("Реквизит %1 заполнен неверно. Ожидали %2, а получили %3", 108 | ИмяРеквизита, ЗначениеЭталон, ДанныеОбъекта[ИмяРеквизита]); 109 | 110 | Утверждения.Проверить(ДанныеОбъекта[ИмяРеквизита] = ЗначениеЭталон, ТекстОшибки); 111 | 112 | КонецПроцедуры 113 | 114 | 115 | // вспомогательная процедура, где описаны какие базовые утверждения есть у фреймворка xddRunner 116 | Процедура УтвержденияПодсказка() 117 | 118 | // Утверждения.Проверить(Значение, ДопСообщениеОшибки) - проверить на равенство с Истина 119 | // Утверждения.ПроверитьИстину(Значение, ДопСообщениеОшибки) - проверить на равенство с Истина 120 | // Утверждения.ПроверитьЛожь(Значение, ДопСообщениеОшибки) - проверить на равенство с Ложь 121 | // Утверждения.ПроверитьРавенство(Значение1, Значение2, ДопСообщениеОшибки) - проверить равенство 122 | // Утверждения.ПроверитьНеРавенство(Значение1, Значение2, ДопСообщениеОшибки) - проверить неравенство 123 | 124 | КонецПроцедуры 125 | 126 | #КонецОбласти // TDD 127 | 128 | -------------------------------------------------------------------------------- /tests/unit tests/Шаблон обработки с тестами/Forms/Форма.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 |
4 | 5 | Форма 6 | 7 | 8 | ru 9 | Форма 10 | 11 | 12 | 13 | Managed 14 | false 15 | 16 | PlatformApplication 17 | MobilePlatformApplication 18 | 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /tests/unit tests/Шаблон обработки с тестами/Forms/Форма/Ext/Form.xml: -------------------------------------------------------------------------------- 1 |  2 |
3 | 4 | 5 | 6 | 7 | cfg:ExternalDataProcessorObject.Тест_ПроверитьСправочник_гиг_СпособыДоставки 8 | 9 | true 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/unit tests/Шаблон обработки с тестами/Forms/Форма/Ext/Form/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ОписаниеПеременных 2 | 3 | // переменные для автотестов 4 | &НаКлиенте 5 | Перем КонтекстЯдра; 6 | &НаКлиенте 7 | Перем Утверждения; 8 | 9 | #КонецОбласти 10 | 11 | #Область Автотесты 12 | 13 | //{ основная процедура для юнит-тестирования xUnitFor1C 14 | 15 | &НаКлиенте 16 | Процедура Инициализация(КонтекстЯдраПараметр) Экспорт 17 | 18 | КонтекстЯдра = КонтекстЯдраПараметр; 19 | Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); 20 | 21 | КонецПроцедуры 22 | 23 | &НаКлиенте 24 | Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт 25 | 26 | КонтекстЯдра = КонтекстЯдраПараметр; 27 | 28 | НаборТестов.НачатьГруппу("Проверка реквизитов"); 29 | НаборТестов.Добавить("ТестДолжен_ПроверитьНаличиеРеквизитаНастройкаОтправкиНаФорме"); 30 | 31 | КонецПроцедуры 32 | 33 | //} 34 | 35 | //{ Блок юнит-тестов 36 | 37 | &НаКлиенте 38 | Процедура ПередЗапускомТеста() Экспорт 39 | 40 | //НачатьТранзакцию(); 41 | 42 | КонецПроцедуры 43 | 44 | &НаКлиенте 45 | Процедура ПослеЗапускаТеста() Экспорт 46 | 47 | //Если ТранзакцияАктивна() Тогда 48 | // ОтменитьТранзакцию(); 49 | //КонецЕсли; 50 | 51 | КонецПроцедуры 52 | 53 | // проверить подключение к рэббит 54 | 55 | &НаКлиенте 56 | Процедура ТестДолжен_ПроверитьНаличиеРеквизитаНастройкаОтправкиНаФорме() Экспорт 57 | 58 | ФормаСпособаДоставки = ПолучитьФорму("Справочник.гиг_СпособыДоставки.ФормаОбъекта"); 59 | ЭлементНаФорме = ФормаСпособаДоставки.Элементы.Найти("НастройкаОтправкиТК"); 60 | Утверждения.ПроверитьНеРавенство(ЭлементНаФорме, Неопределено, "Элемент не выведен на форму"); 61 | 62 | КонецПроцедуры 63 | 64 | 65 | // вспомогательная процедура, где описаны какие базовые утверждения есть у фреймворка xddRunner 66 | &НаКлиенте 67 | Процедура УтвержденияПодсказка() 68 | 69 | // Утверждения.Проверить(Значение, ДопСообщениеОшибки) - проверить на равенство с Истина 70 | // Утверждения.ПроверитьИстину(Значение, ДопСообщениеОшибки) - проверить на равенство с Истина 71 | // Утверждения.ПроверитьЛожь(Значение, ДопСообщениеОшибки) - проверить на равенство с Ложь 72 | // Утверждения.ПроверитьРавенство(Значение1, Значение2, ДопСообщениеОшибки) - проверить равенство 73 | // Утверждения.ПроверитьНеРавенство(Значение1, Значение2, ДопСообщениеОшибки) - проверить неравенство 74 | 75 | КонецПроцедуры 76 | 77 | #КонецОбласти // TDD 78 | 79 | -------------------------------------------------------------------------------- /tests/vrunner.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": { 3 | "--ibconnection": "/Sdev\\dev", 4 | "--db-user": "Админ", 5 | "--db-pwd": "", 6 | "--v8version":"8.3.20", 7 | "---no-wait": "", 8 | "--ordinaryapp": "-1" 9 | }, 10 | "xunit": { 11 | "--xddConfig": "./tests/xUnitParams.json", 12 | "testsPath": "./build/ext", 13 | "--reportsxunit": "ГенераторОтчетаAllureXMLВерсия2{./build/allure/allure.xml}", 14 | "--xddExitCodePath": "./build/xddExitCodePath.txt", 15 | "--testclient": "Админ::48223", 16 | "--testclient-additional" : "/iTaxi" 17 | } 18 | } -------------------------------------------------------------------------------- /tests/xUnitParams.json: -------------------------------------------------------------------------------- 1 | { 2 | "Отладка":false, 3 | "ВыводитьПодробноеПредставлениеОшибки": true, 4 | "ДобавлятьИмяПользователяВПредставлениеТеста":true, 5 | "ДелатьЛогВыполненияСценариевВТекстовыйФайл":true, 6 | "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/ServiceBases/log-xunit.txt", 7 | "ОбластьДанныхМенеджера": 4512, 8 | "smoke" : { 9 | } 10 | } --------------------------------------------------------------------------------