|
1 |
| - |
2 |
| -/////////////////////////////////////////////////////////////////////////////////// |
| 1 | +/////////////////////////////////////////////////////////////////////////////////// |
3 | 2 | // УПРАВЛЕНИЕ ЗАПУСКОМ КОМАНД 1С:Предприятия 8
|
4 | 3 | //
|
5 | 4 |
|
|
15 | 14 | Перем мПутьКПлатформе1С;
|
16 | 15 | Перем ЭтоWindows Экспорт;
|
17 | 16 | Перем мВерсияПлатформы;
|
| 17 | +Перем мИсключениеПриОшибкеВыполненияКоманды; |
18 | 18 |
|
19 | 19 | Перем Лог;
|
20 | 20 | Перем мИмяФайлаИнформации;
|
|
883 | 883 |
|
884 | 884 | КонецПроцедуры
|
885 | 885 |
|
886 |
| -Процедура ВыполнитьКоманду(Знач Параметры) Экспорт |
| 886 | +// Выгрузка внешней обработки или отчета в файл |
| 887 | +// |
| 888 | +// Параметры: |
| 889 | +// ПутьККаталогуВыгрузки - Строка - Путь к каталогу, в который нужно выполнить выгрузку внешнего отчета или обработки |
| 890 | +// ПутьКВнешнейОбработкеИлиОтчету - Строка - Путь к файлу внешнего отчета или обработки |
| 891 | +// Формат - РежимВыгрузкиКонфигурации - Формат выгрузки. По умолчанию используется "Hierarchical" |
| 892 | +// |
| 893 | +Процедура ВыгрузитьВнешниеОтчетыИлиОбработкиВФайлы(Знач ПутьККаталогуВыгрузки, |
| 894 | + Знач ПутьКВнешнейОбработкеИлиОтчету, |
| 895 | + Знач Формат = "") Экспорт |
| 896 | + |
| 897 | + Если НЕ ЗначениеЗаполнено(Формат) Тогда |
| 898 | + Формат = РежимВыгрузкиКонфигурации.Иерархический; |
| 899 | + КонецЕсли; |
| 900 | + |
| 901 | + Файл = Новый Файл(ПутьККаталогуВыгрузки); |
| 902 | + КаталогВыгрузки = Файл.ПолноеИмя; |
| 903 | + |
| 904 | + ОбеспечитьКаталог(КаталогВыгрузки); |
| 905 | + |
| 906 | + Файл = Новый Файл(ПутьКВнешнейОбработкеИлиОтчету); |
| 907 | + ПутьКВнешнейОбработкеИлиОтчету = Файл.ПолноеИмя; |
| 908 | + |
| 909 | + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); |
| 910 | + ПараметрыЗапуска.Добавить("/DumpExternalDataProcessorOrReportToFiles"); |
| 911 | + ПараметрыЗапуска.Добавить(ОбернутьВКавычки(КаталогВыгрузки)); |
| 912 | + ПараметрыЗапуска.Добавить(ОбернутьВКавычки(ПутьКВнешнейОбработкеИлиОтчету)); |
| 913 | + ПараметрыЗапуска.Добавить("-Format"); |
| 914 | + ПараметрыЗапуска.Добавить(Формат); |
| 915 | + |
| 916 | + ВыполнитьКоманду(ПараметрыЗапуска); |
| 917 | + |
| 918 | +КонецПроцедуры |
| 919 | + |
| 920 | +Функция ВыполнитьКоманду(Знач Параметры) Экспорт |
887 | 921 |
|
888 | 922 | ПроверитьВозможностьВыполненияКоманды();
|
889 | 923 |
|
|
893 | 927 |
|
894 | 928 | УстановитьВывод(ПрочитатьФайлИнформации());
|
895 | 929 |
|
896 |
| - Если КодВозврата <> 0 Тогда |
| 930 | + Если КодВозврата <> 0 и мИсключениеПриОшибкеВыполненияКоманды Тогда |
897 | 931 | Лог.Ошибка("Получен ненулевой код возврата "+КодВозврата+". Выполнение скрипта остановлено!");
|
898 | 932 | ВызватьИсключение ВыводКоманды();
|
899 | 933 | Иначе
|
900 | 934 | Лог.Отладка("Код возврата равен 0");
|
901 | 935 | КонецЕсли;
|
902 | 936 |
|
903 |
| -КонецПроцедуры |
| 937 | + Возврат КодВозврата; |
| 938 | + |
| 939 | +КонецФункции |
904 | 940 |
|
905 | 941 | Функция ПолучитьПараметрыЗапуска() Экспорт
|
906 | 942 | Возврат СтандартныеПараметрыЗапускаКонфигуратора();
|
|
1204 | 1240 | // УстановитьПризнакОжиданияВыполненияПрограммы
|
1205 | 1241 | //
|
1206 | 1242 | // Параметры:
|
1207 |
| -// НовыйПризнак - <Булево> - <описание параметра> |
| 1243 | +// НовыйПризнак - <Булево> - Новое значение признака |
1208 | 1244 | //
|
1209 | 1245 | // Возвращаемое значение:
|
1210 | 1246 | // <Булево> - прежнее значение признака
|
|
1214 | 1250 | Ожидаем.Что(НовыйПризнак = Ложь или НовыйПризнак = Истина,
|
1215 | 1251 | "Параметр признак ожидания выполнения программы 1С должен быть или Истина или Ложь, а это не так").ЭтоИстина();
|
1216 | 1252 |
|
| 1253 | + СтарыйПризнак = мПризнакОжиданияВыполненияПрограммы; |
1217 | 1254 | мПризнакОжиданияВыполненияПрограммы = НовыйПризнак;
|
1218 | 1255 |
|
| 1256 | + Возврат СтарыйПризнак; |
| 1257 | + |
1219 | 1258 | КонецФункции // УстановитьРежимОжиданияВыполненияПрограммы() Экспорт
|
1220 | 1259 |
|
| 1260 | +// ИсключениеПриОшибкеВыполненияКоманды |
| 1261 | +// |
| 1262 | +// Параметры: |
| 1263 | +// НовоеЗначение - <Булево> - Новое значение флага "ИсключениеПриОшибкеВыполненияКоманды" |
| 1264 | +// если не указано, то возвращается текущее значение |
| 1265 | +// |
| 1266 | +// Возвращаемое значение: |
| 1267 | +// <Булево> - значение признака |
| 1268 | +// |
| 1269 | +Функция ИсключениеПриОшибкеВыполненияКоманды(НовоеЗначение = Неопределено) Экспорт |
| 1270 | + |
| 1271 | + Ожидаем.Что(НовоеЗначение = Ложь или НовоеЗначение = Истина или НовоеЗначение = Неопределено, |
| 1272 | + "Параметр ""Исключение при ошибке выполнения команды"" должен быть или Истина, Ложь или Неопределено, а это не так").ЭтоИстина(); |
| 1273 | + |
| 1274 | + Если НЕ НовоеЗначение = Неопределено Тогда |
| 1275 | + мИсключениеПриОшибкеВыполненияКоманды = НовоеЗначение; |
| 1276 | + КонецЕсли; |
| 1277 | + |
| 1278 | + Возврат мИсключениеПриОшибкеВыполненияКоманды; |
| 1279 | + |
| 1280 | +КонецФункции // ИсключениеПриОшибкеВыполненияКоманды() Экспорт |
| 1281 | + |
1221 | 1282 | Функция СобратьВозможныеКаталогиУстановкиПлатформыWindows()
|
1222 | 1283 |
|
1223 | 1284 | СИ = Новый СистемнаяИнформация;
|
|
1372 | 1433 | Приложение = ОбернутьВКавычки(ПутьКПлатформе1С());
|
1373 | 1434 | Лог.Отладка(Приложение + СтрокаДляЛога);
|
1374 | 1435 |
|
1375 |
| - Если ЭтоWindows = Ложь Тогда |
1376 |
| - СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'"; |
1377 |
| - Иначе |
1378 |
| - СтрокаЗапуска = Приложение + СтрокаЗапуска; |
1379 |
| - КонецЕсли; |
1380 | 1436 | Если мОбработчикОжиданияПроцессаGUI = Неопределено Тогда
|
1381 |
| - ЗапуститьПриложение(СтрокаЗапуска, , мПризнакОжиданияВыполненияПрограммы, КодВозврата); |
| 1437 | + Команда = Новый Команда; |
| 1438 | + |
| 1439 | + Команда.УстановитьКоманду(Приложение); |
| 1440 | + Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8); |
| 1441 | + Команда.ДобавитьЛогВыводаКоманды("oscript.lib.v8runner"); |
| 1442 | + Команда.ДобавитьПараметры(Параметры); |
| 1443 | + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); |
| 1444 | + Команда.ПоказыватьВыводНемедленно(Ложь); |
| 1445 | + КодВозврата = Команда.Исполнить(); |
| 1446 | + |
1382 | 1447 | Иначе
|
| 1448 | + |
| 1449 | + Если ЭтоWindows = Ложь Тогда |
| 1450 | + СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'"; |
| 1451 | + Иначе |
| 1452 | + СтрокаЗапуска = Приложение + СтрокаЗапуска; |
| 1453 | + КонецЕсли; |
| 1454 | + |
1383 | 1455 | ЗапуститьПроцессGUI(СтрокаЗапуска, КодВозврата);
|
1384 | 1456 | КонецЕсли;
|
1385 | 1457 | Лог.Отладка("Получен код возврата %1", КодВозврата);
|
| 1458 | + |
1386 | 1459 | Возврат КодВозврата;
|
1387 | 1460 |
|
1388 | 1461 | КонецФункции
|
|
1582 | 1655 | мОчищатьФайлИнформации = Истина;
|
1583 | 1656 | мФайлИнформацииВнешний = Ложь;
|
1584 | 1657 | мПризнакОжиданияВыполненияПрограммы = Истина;
|
| 1658 | + мИсключениеПриОшибкеВыполненияКоманды = Истина; |
1585 | 1659 |
|
1586 | 1660 | КонецПроцедуры
|
1587 | 1661 |
|
|
1597 | 1671 | КонецФункции
|
1598 | 1672 |
|
1599 | 1673 |
|
1600 |
| -Процедура ПолучитьИзмененияКонфигурацииБазыДанныхИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="") Экспорт |
1601 |
| - |
1602 |
| - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); |
1603 |
| - |
1604 |
| - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); |
1605 |
| - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); |
| 1674 | +// Метод устарел (используйте ЗагрузитьКонфигурациюИзХранилища()) |
| 1675 | +// Выполняет загрузку конфигурации из хранилища конфигурации определенной версии, если задана, иначе получает последнюю версию. |
| 1676 | +// |
| 1677 | +// Параметры: |
| 1678 | +// СтрокаСоединения - Строка - Строка соединения с хранилищем конфигурации |
| 1679 | +// ПользовательХранилища - строка - Пользователь для подключения к хранилищю конфигурации |
| 1680 | +// ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации |
| 1681 | +// НомерВерсии - Число - Номер версии в истории в хранилище конфигурации, если 0 или меньше, то берется последняя версия. |
| 1682 | +// |
| 1683 | +Процедура ПолучитьИзмененияКонфигурацииБазыДанныхИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="", Знач НомерВерсииХранилища = 0) Экспорт |
1606 | 1684 |
|
1607 |
| - Если Не ПустаяСтрока(ПарольХранилища) Тогда |
1608 |
| - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); |
1609 |
| - КонецЕсли; |
| 1685 | + Сообщить("ВНИМАНИЕ: метод ""ПолучитьИзмененияКонфигурацииБазыДанныхИзХранилища()"" УСТАРЕЛ и скоро будет удален. Вместо него используйте метод ""ЗагрузитьКонфигурациюИзХранилища()""!" |
| 1686 | + , СтатусСообщения.Внимание); |
| 1687 | + |
| 1688 | + ЗагрузитьКонфигурациюИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища, НомерВерсииХранилища); |
1610 | 1689 |
|
1611 |
| - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); |
1612 |
| - ПараметрыСвязиСБазой.Добавить("-force"); |
| 1690 | +КонецПроцедуры |
| 1691 | + |
| 1692 | +// Выполняет загрузку конфигурации из хранилища конфигурации определенной версии, если задана, иначе получает последнюю версию. |
| 1693 | +// |
| 1694 | +// Параметры: |
| 1695 | +// СтрокаСоединения - Строка - Строка соединения с хранилищем конфигурации |
| 1696 | +// ПользовательХранилища - строка - Пользователь для подключения к хранилищю конфигурации |
| 1697 | +// ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации |
| 1698 | +// НомерВерсии - Число - Номер версии в истории в хранилище конфигурации, если 0 или меньше, то берется последняя версия. |
| 1699 | +// |
| 1700 | +Процедура ЗагрузитьКонфигурациюИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="", Знач НомерВерсииХранилища = 0) Экспорт |
| 1701 | + |
| 1702 | + ПараметрыСвязиСБазой = СформироватьПараметрыСвязиСБазойДляПолучениеВерсииКонфигурацииИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища, НомерВерсииХранилища); |
1613 | 1703 |
|
1614 | 1704 | ВыполнитьКоманду(ПараметрыСвязиСБазой);
|
1615 | 1705 |
|
1616 | 1706 | КонецПроцедуры
|
1617 | 1707 |
|
1618 |
| -Процедура ОбновитьКонфигурациюБазыДанныхИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища="") Экспорт |
| 1708 | +// Выполняет загрузку конфигурации из хранилища конфигурации определенной версии, при этом обновляет базу данных |
| 1709 | +// Это необходимо, например, при последующем создании файла поставки, без обновления файл не будет создан. |
| 1710 | +// |
| 1711 | +// Параметры: |
| 1712 | +// СтрокаСоединения - Строка - Строка соединения с хранилищем конфигурации |
| 1713 | +// ПользовательХранилища - строка - Пользователь для подключения к хранилищю конфигурации |
| 1714 | +// ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации |
| 1715 | +// НомерВерсии - Число - Номер версии в истории в хранилище конфигурации, если 0 или меньше, то берется последняя версия. |
| 1716 | +// |
| 1717 | +Процедура ОбновитьКонфигурациюБазыДанныхИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="", Знач НомерВерсииХранилища = 0) Экспорт |
| 1718 | + |
| 1719 | + ПараметрыСвязиСБазой = СформироватьПараметрыСвязиСБазойДляПолучениеВерсииКонфигурацииИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища, НомерВерсииХранилища); |
| 1720 | + |
| 1721 | + ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); |
| 1722 | + |
| 1723 | + ВыполнитьКоманду(ПараметрыСвязиСБазой); |
| 1724 | + |
| 1725 | +КонецПроцедуры |
1619 | 1726 |
|
| 1727 | +Функция СформироватьПараметрыСвязиСБазойДляПолучениеВерсииКонфигурацииИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища, НомерВерсииХранилища) |
| 1728 | + |
1620 | 1729 | ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора();
|
1621 | 1730 |
|
1622 | 1731 | ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+"""");
|
|
1627 | 1736 | КонецЕсли;
|
1628 | 1737 |
|
1629 | 1738 | ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg");
|
| 1739 | + // ВАЖНО!!!! Флаг <-v> должен быть обязательно после команды ConfigurationRepositoryUpdateCfg |
| 1740 | + // Если это нарушить то всегда получается последняя версия конфигурации |
| 1741 | + Если НомерВерсииХранилища > 0 Тогда |
| 1742 | + ПараметрыСвязиСБазой.Добавить("-v " + НомерВерсииХранилища); |
| 1743 | + КонецЕсли; |
1630 | 1744 | ПараметрыСвязиСБазой.Добавить("-force");
|
1631 | 1745 |
|
1632 |
| - ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); |
| 1746 | + Возврат ПараметрыСвязиСБазой; |
1633 | 1747 |
|
1634 |
| - ВыполнитьКоманду(ПараметрыСвязиСБазой); |
1635 |
| -КонецПроцедуры |
| 1748 | +КонецФункции |
1636 | 1749 |
|
1637 | 1750 | Функция ВариантОбработкиНесуществующихСсылок() Экспорт
|
1638 | 1751 |
|
|
1830 | 1943 | // Инициализация
|
1831 | 1944 |
|
1832 | 1945 | Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner");
|
| 1946 | + |
1833 | 1947 | Инициализация();
|
0 commit comments