├── .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 |
22 |
--------------------------------------------------------------------------------
/src/RabbitMQ/ОбменСRabbitMQ/Forms/Форма/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 |
22 |
--------------------------------------------------------------------------------
/src/Анализ метаданных/АнализМетаданныхКонфигурации/Forms/Форма/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 |
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 |
22 |
--------------------------------------------------------------------------------
/src/Интеграции/СравнениеДвухТекстовDiffchecker/Forms/Форма/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 |
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 |
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 | ПФ_MXL_СчетНаОплату
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/Расширения/Доработка печати (УНФ)/DataProcessors/ПечатьСчетНаОплату/Templates/ПФ_MXL_СчетНаОплату.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ПФ_MXL_СчетНаОплату
7 |
8 | Adopted
9 | dbee6c2d-7010-45f2-9eb3-47508275af6a
10 | SpreadsheetDocument
11 |
12 |
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 |
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 |
22 |
--------------------------------------------------------------------------------
/src/Эксперименты/ЗапросыВПлатформе8_3_20/Forms/Форма/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 |
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 |
22 |
--------------------------------------------------------------------------------
/src/Эксперименты/РаботаФункцийПодстановкиПараметровВСтроку/Forms/Форма/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 |
22 |
--------------------------------------------------------------------------------
/tests/unit tests/Шаблон обработки с тестами/Forms/Форма/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 | }
--------------------------------------------------------------------------------