mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
*Исправлена ошибка команды "Структура формы"
Административная регистрация com-компонент
+Добавлена кнопка "Запустить от имени администратора"
*Исправлено выполнение административной регистрации под пользователем домена, являющимся локальным администратором
Общее
*Устранены проблемы с антивирусным ПО путем возврата к использованию старой версии утилиты hstart
Подбор и обработка объектов
+В схему компоновки добавлены поля-функции ТИПЗНАЧЕНИЯ() от полей составных типов
3.78
Консоль запросов
*Устранено ошибочное использование параметров в фигурных скобках при наличии параметра с типом "Выражение СКД"
+В подменю "Вставка" для поля текста запроса добавлена команда "Ссылка из буфера"
*Исправлено вычисление значений параметров для вложенных компоновок из макета компоновки
*Исправлено некорректное извлечение вычисляемых параметров из макета компоновки
Конструктор запроса
+Добавлена поддержка типа запроса TRUNCATE TABLE
+Для запроса типа WQL при двойном клике на доступном поле доступной таблицы поле теперь добавляется в выбранные поля
Анализ журнала регистрации
+Реализованы команды сортировки для списков значений отбора
*Исправлено долгое обновление табличного поля отбора с большими списками
Динамический список
*В командую панель возвращены все стандартные кнопки
*При открытии с установкой таблицы фокус ввода теперь устанавливается в табличное поле
Редактор объекта БД
*Инструмент "Поиск ссылок на объект" перенесен сюда в виде закладки
+Добавлена поддержка перечислений и точек маршрута
Интерфейсная панель
*Исправлены ошибки при обработке веток не метаданных
Общее
+Обновлено внутренне описание платформы от версии 8.3.9
*Исправлены ошибки при открытии ссылок в режиме совместимости 8.1
*Обеспечена компипяция в режиме совместимости 8.3.9
*Кнопка открытия настроек справочника Алгоритмы перенесена с общей панели инструментов в формы списка справочника
Различные значения колонки
*Исправлены ошибки при обработке булевых колонок
Консоль кода
+В подменю "Вставка" добавлена команда "Ссылка из буфера"
Поиск дублей и замена ссылок
*Исправлен учет равенства реквизитов при поиске по похожим словам
Структура хранения БД
*Исправлена ошибка при нажатии "Показать индекс" в контекстном меню таблицы "Наборы полей" на закладке "Индексы"
Поиск ссылок на объект
*Перенесен в инструмент "Редактор объекта БД" в виде закладки
3.77
Общее
*Элевация оставлена только в форме административной регистрации COM-компонент, в настройке техножурнала и при изменении параметров служб сервера 1С
*Элевация теперь используется только если у учетной записи Windows есть административные права
*Улучшены сообщения пользователю при проблемах регистрации COM компонент
*Открытие формы объекта по двойному клику на ячейках табличных полей теперь выполняется без получения объекта
*Улучшена установка ширины динамически добавляемых колонок табличных полей
Административная регистрация COM компонент
+Добавлены кнопки "Снять флажки" и "Установить флажки"
Редактор объекта БД
*Исправлено распознавание ссылки документа по представлению в поле выбора объекта
*Исправлено переключение режима редактирования независимого регистра при изменении отбора командами "снять все" и "установить все"
Динамический список
*При открытии редактора объекта БД для добавления в независимый регистр сведений теперь включаются все элементы отбора
Консоль запросов
*Устранена ошибочная доступность для изменения флажков в коллекции результата запроса
*Исправлена ошибка загрузки результата WQL запроса
3.76
Управление службами сервера 1С
*Улучшена диагностика ошибок
+Добавлена элевация при изменении параметров служб
Динамический список
*Устранено свежее скрытие колонки со стандартной картинкой
Интерфейсная панель
+Добавлены перечисления
Консоль запросов
*Исправлена ошибка загрузки пустого результата запроса MSSQL
Редактор констант
+Включение функциональных опций теперь изменяет только булевы константы и не выполняет их запись
*Реализован пропуск ошибок записи констант
Конструктор запросов
*Устранена ошибочная виртуальная таблица 1С ЗадачиПоИсполнителю у задачи без адресации
Редактор объекта БД
*Флажок "Очищать по отбору чтения" теперь становится доступным только если в считанном наборе записей были строки
+В режиме менеджера записи регистра сведений реализовано удаление
*Исправлена свежая ошибка параметризованного открытия строки независимого регистра сведений
Общее
*Исправлена ошибка нажатия "Запустить обычное приложение" в тонком клиенте из формы "Невозможно выполнить действие"
249 lines
17 KiB
Plaintext
249 lines
17 KiB
Plaintext
//ирПортативный Перем ирПортативный Экспорт;
|
||
//ирПортативный Перем ирОбщий Экспорт;
|
||
//ирПортативный Перем ирСервер Экспорт;
|
||
//ирПортативный Перем ирКэш Экспорт;
|
||
//ирПортативный Перем ирПривилегированный Экспорт;
|
||
|
||
Перем мПоследнийПрочитанныйОбъект Экспорт;
|
||
|
||
Процедура ОбработатьИсключениеПоОбъекту(ОбъектБД, ОписаниеОшибки, ВывестиСообщение = Истина) Экспорт
|
||
|
||
СтрокаРезультата = РезультатОбработки.Добавить();
|
||
СтрокаРезультата.Порядок = СтрокаРезультата.НомерСтроки;
|
||
СтрокаРезультата.ОписаниеОшибки = ОписаниеОшибки;
|
||
Если ТипЗнч(ОбъектБД)= Тип("Строка") Тогда
|
||
СтрокаРезультата.XML = ОбъектБД;
|
||
СтрокаРезультата.КлючОбъекта = ОбъектБД;
|
||
Иначе
|
||
СтрокаРезультата.XML = ирОбщий.СохранитьОбъектВВидеСтрокиXMLЛкс(ОбъектБД, Ложь);
|
||
СтрокаРезультата.КлючОбъекта = ирОбщий.ПолучитьXMLКлючОбъектаБДЛкс(ОбъектБД, Истина);
|
||
Если ТипЗнч(ОбъектБД) = Тип("УдалениеОбъекта") Тогда
|
||
СтрокаРезультата.Таблица = ОбъектБД.Ссылка.Метаданные().ПолноеИмя();
|
||
Иначе
|
||
СтрокаРезультата.Таблица = ОбъектБД.Метаданные().ПолноеИмя();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если ВывестиСообщение Тогда
|
||
Сообщить("Ошибка обработки объекта """ + СтрокаРезультата.КлючОбъекта + """: " + ОписаниеОшибки, СтатусСообщения.Внимание);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ВыполнитьВыгрузку() Экспорт
|
||
|
||
РезультатОбработки.Очистить();
|
||
ПараметрыОбработки = Новый Структура;
|
||
ПередВыгрузкойВсех(ПараметрыОбработки);
|
||
//ИмяВременногоКаталога = ПолучитьИмяВременногоФайла();
|
||
//СоздатьКаталог(ИмяВременногоКаталога);
|
||
//ФайлДанных = Новый файл(ИмяВременногоКаталога + "\Data.xml");
|
||
//ЗаписьXML = Новый ЗаписьXML;
|
||
//ЗаписьXML.ОткрытьФайл(ФайлДанных.ПолноеИмя);
|
||
//ЗаписьXML.ЗаписатьНачалоЭлемента("IRData");
|
||
//СчетчикВыгруженныхОбъектов = 0;
|
||
КоличествоОбъектов = ирОбщий.ПолучитьКоличествоИзмененийПоУзлуЛкс(УзелВыборкиДанных);
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(КоличествоОбъектов, "Выборка");
|
||
ВыборкаОбъектов = ПланыОбмена.ВыбратьИзменения(УзелВыборкиДанных, УзелВыборкиДанных.НомерОтправленного + 1);
|
||
Пока ВыборкаОбъектов.Следующий() Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
ОбъектБД = ВыборкаОбъектов.Получить();
|
||
ВыгрузитьОбъектБД(ПараметрыОбработки.ЗаписьXML, ОбъектБД, ПараметрыОбработки.СчетчикВыгруженныхОбъектов);
|
||
Если ВыгружатьДвиженияВместеСДокументами Тогда
|
||
ОбъектМД = ОбъектБД.Метаданные();
|
||
Если ирОбщий.ЛиКорневойТипДокументаЛкс(ирОбщий.ПолучитьПервыйФрагментЛкс(ОбъектМД.ПолноеИмя())) Тогда
|
||
ОбъектыМД = ирОбщий.ПолучитьМетаданныеНаборовЗаписейПоРегистраторуЛкс(ОбъектМД);
|
||
Для Каждого МетаРегистр из ОбъектыМД Цикл
|
||
ПолноеИмяМД = МетаРегистр.ПолноеИмя();
|
||
НаборЗаписей = Новый (СтрЗаменить(ПолноеИмяМД, ".", "НаборЗаписей."));
|
||
НаборЗаписей.Отбор.Регистратор.Установить(ОбъектБД.Ссылка);
|
||
НаборЗаписей.Прочитать();
|
||
ВыгрузитьОбъектБД(ПараметрыОбработки.ЗаписьXML, НаборЗаписей, ПараметрыОбработки.СчетчикВыгруженныхОбъектов);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс(, Истина);
|
||
//ИнфоДанных = Новый Структура;
|
||
//ИнфоДанных.Вставить("КоличествоОбъектов", СчетчикВыгруженныхОбъектов);
|
||
//ИнфоДанных.Вставить("ИспользоватьXDTO", ИспользоватьXDTO);
|
||
//Сообщить("Выгружено объектов " + XMLСтрока(СчетчикВыгруженныхОбъектов));
|
||
//ЗаписьXML.ЗаписатьКонецЭлемента();
|
||
//ЗаписьXML.Закрыть();
|
||
//ФайлИнфо = Новый файл(ИмяВременногоКаталога + "\Info.xml");
|
||
//ЗаписьXML = Новый ЗаписьXML;
|
||
//ЗаписьXML.ОткрытьФайл(ФайлИнфо.ПолноеИмя);
|
||
//СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ИнфоДанных);
|
||
//ЗаписьXML.Закрыть();
|
||
//ЗаписьZIP = Новый ЗаписьZipФайла(ИмяФайла);
|
||
//ЗаписьZIP.Добавить(ФайлДанных.ПолноеИмя);
|
||
//ЗаписьZIP.Добавить(ФайлИнфо.ПолноеИмя);
|
||
//ЗаписьZIP.Записать();
|
||
//УдалитьФайлы(ИмяВременногоКаталога);
|
||
ПослеВыгрузкиВсех(ПараметрыОбработки);
|
||
Возврат Истина;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ВыгрузитьОбъектБД(Знач ЗаписьXML, Знач ОбъектБД, СчетчикВыгруженныхОбъектов)
|
||
|
||
Попытка
|
||
Успех = Истина;
|
||
Если ИспользоватьXDTO Тогда
|
||
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОбъектБД);
|
||
Иначе
|
||
ЗаписатьXML(ЗаписьXML, ОбъектБД);
|
||
КонецЕсли;
|
||
Исключение
|
||
Успех = Ложь;
|
||
ОбработатьИсключениеПоОбъекту(ОбъектБД, ОписаниеОшибки());
|
||
Если Не ПропускатьОшибки Тогда
|
||
ВызватьИсключение;
|
||
КонецЕсли;
|
||
КонецПопытки;
|
||
Если Успех Тогда
|
||
СчетчикВыгруженныхОбъектов = СчетчикВыгруженныхОбъектов + 1;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры // ВыполнитьВыгрузку()
|
||
|
||
Функция ВыполнитьЗагрузку() Экспорт
|
||
|
||
РезультатОбработки.Очистить();
|
||
ИмяВременногоКаталога = ПолучитьИмяВременногоФайла();
|
||
СоздатьКаталог(ИмяВременногоКаталога);
|
||
ЧтениеZip = Новый ЧтениеZipФайла(ИмяФайла);
|
||
ЧтениеZip.ИзвлечьВсе(ИмяВременногоКаталога);
|
||
ФайлИнфо = Новый файл(ИмяВременногоКаталога + "\Info.xml");
|
||
Если Не ФайлИнфо.Существует() Тогда
|
||
Возврат "Неверный формат файла данных!";
|
||
КонецЕсли;
|
||
ЧтениеXML = Новый ЧтениеXML;
|
||
ЧтениеXML.ОткрытьФайл(ФайлИнфо.ПолноеИмя);
|
||
ИнфоДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
|
||
ФайлДанных = Новый файл(ИмяВременногоКаталога + "\Data.xml");
|
||
Если Не ФайлИнфо.Существует() Тогда
|
||
Возврат "Неверный формат файла данных!";
|
||
КонецЕсли;
|
||
ЧтениеXML = Новый ЧтениеXML;
|
||
ЧтениеXML.ОткрытьФайл(ФайлДанных.ПолноеИмя);
|
||
ЧтениеXML.Прочитать();
|
||
Если ЧтениеXML.ЛокальноеИмя <> "IRData" Тогда
|
||
ЧтениеXML.Закрыть();
|
||
УдалитьФайлы(ИмяВременногоКаталога);
|
||
Возврат "Неверный формат файла данных!";
|
||
КонецЕсли;
|
||
ЧтениеXML.Прочитать();
|
||
Сообщить("В файле данных заявлено " + ИнфоДанных.КоличествоОбъектов + " объектов");
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ИнфоДанных.КоличествоОбъектов, "Загрузка");
|
||
СчетчикСчитанныхОбъектов = 0;
|
||
Пока Истина Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор, СчетчикСчитанныхОбъектов);
|
||
Если ИнфоДанных.ИспользоватьXDTO Тогда
|
||
Если Не СериализаторXDTO.ВозможностьЧтенияXML(ЧтениеXML) Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
ОбъектБД = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
|
||
Иначе
|
||
Если Не ВозможностьЧтенияXML(ЧтениеXML) Тогда
|
||
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
|
||
ОписаниеОшибки = "Неизвестный тип элемента XML: " + ЧтениеXML.Имя;
|
||
Если Не ПропускатьОшибки Тогда
|
||
ВызватьИсключение ОписаниеОшибки;
|
||
Иначе
|
||
ОбработатьИсключениеПоОбъекту(ЧтениеXML.Имя, ОписаниеОшибки);
|
||
ЧтениеXML.Пропустить();
|
||
Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
|
||
ЧтениеXML.Прочитать();
|
||
КонецЕсли;
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Иначе
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
ОбъектБД = ПрочитатьXML(ЧтениеXML);
|
||
КонецЕсли;
|
||
СчетчикСчитанныхОбъектов = СчетчикСчитанныхОбъектов + 1;
|
||
#Если Сервер И Не Сервер Тогда
|
||
ОбъектБД = Справочники.ирАлгоритмы.СоздатьЭлемент();
|
||
#КонецЕсли
|
||
ОбъектБД.ОбменДанными.Отправитель = УзелОтправитель;
|
||
ЭтотОбъект.мПоследнийПрочитанныйОбъект = ОбъектБД;
|
||
Попытка
|
||
ирОбщий.ЗаписатьОбъектЛкс(ОбъектБД, ЗаписьНаСервере,,, Истина, БезАвторегистрацииИзменений);
|
||
Успех = Истина;
|
||
Исключение
|
||
Успех = Ложь;
|
||
ОбработатьИсключениеПоОбъекту(ОбъектБД, ОписаниеОшибки());
|
||
Если Не ПропускатьОшибки Тогда
|
||
ВызватьИсключение;
|
||
КонецЕсли;
|
||
КонецПопытки;
|
||
КонецЦикла;
|
||
ЧтениеXML.Закрыть();
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс(, Истина);
|
||
УдалитьФайлы(ИмяВременногоКаталога);
|
||
ЭтотОбъект.мПоследнийПрочитанныйОбъект = Неопределено;
|
||
Если СчетчикСчитанныхОбъектов <> ИнфоДанных.КоличествоОбъектов Тогда
|
||
Возврат "Считано объектов " + XMLСтрока(СчетчикСчитанныхОбъектов) + " из " + XMLСтрока(ИнфоДанных.КоличествоОбъектов) + " заявленных!";
|
||
КонецЕсли;
|
||
Возврат Истина;
|
||
|
||
КонецФункции // ВыполнитьВыгрузку()
|
||
|
||
Процедура ПередВыгрузкойВсех(Параметры) Экспорт
|
||
|
||
#Если Сервер И Не Сервер Тогда
|
||
Параметры = Новый Структура;
|
||
#КонецЕсли
|
||
ИмяВременногоКаталога = ПолучитьИмяВременногоФайла();
|
||
СоздатьКаталог(ИмяВременногоКаталога);
|
||
ФайлДанных = Новый файл(ИмяВременногоКаталога + "\Data.xml");
|
||
ЗаписьXML = Новый ЗаписьXML;
|
||
ЗаписьXML.ОткрытьФайл(ФайлДанных.ПолноеИмя);
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("IRData");
|
||
СчетчикВыгруженныхОбъектов = 0;
|
||
Параметры.Вставить("ЗаписьXML", ЗаписьXML);
|
||
Параметры.Вставить("ФайлДанных", ФайлДанных);
|
||
Параметры.Вставить("ИмяВременногоКаталога", ИмяВременногоКаталога);
|
||
Параметры.Вставить("СчетчикВыгруженныхОбъектов", СчетчикВыгруженныхОбъектов);
|
||
|
||
КонецПроцедуры // ПередГрупповойОбработкой()
|
||
|
||
Процедура ПослеВыгрузкиВсех(Параметры) Экспорт
|
||
|
||
#Если Сервер И Не Сервер Тогда
|
||
Параметры = Новый Структура;
|
||
#КонецЕсли
|
||
ИнфоДанных = Новый Структура;
|
||
ИнфоДанных.Вставить("КоличествоОбъектов", Параметры.СчетчикВыгруженныхОбъектов);
|
||
ИнфоДанных.Вставить("ИспользоватьXDTO", ИспользоватьXDTO);
|
||
Сообщить("Выгружено объектов " + XMLСтрока(Параметры.СчетчикВыгруженныхОбъектов));
|
||
Параметры.ЗаписьXML.ЗаписатьКонецЭлемента();
|
||
Параметры.ЗаписьXML.Закрыть();
|
||
ФайлИнфо = Новый файл(Параметры.ИмяВременногоКаталога + "\Info.xml");
|
||
ЗаписьXML = Новый ЗаписьXML;
|
||
ЗаписьXML.ОткрытьФайл(ФайлИнфо.ПолноеИмя);
|
||
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ИнфоДанных);
|
||
ЗаписьXML.Закрыть();
|
||
ЗаписьZIP = Новый ЗаписьZipФайла(ИмяФайла);
|
||
ЗаписьZIP.Добавить(Параметры.ФайлДанных.ПолноеИмя);
|
||
ЗаписьZIP.Добавить(ФайлИнфо.ПолноеИмя);
|
||
ЗаписьZIP.Записать();
|
||
УдалитьФайлы(Параметры.ИмяВременногоКаталога);
|
||
|
||
КонецПроцедуры // ПередГрупповойОбработкой()
|
||
|
||
//ирПортативный #Если Клиент Тогда
|
||
//ирПортативный Контейнер = Новый Структура();
|
||
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
|
||
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
|
||
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = ВосстановитьЗначение("ирПолноеИмяФайлаОсновногоМодуля");
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
|
||
//ирПортативный КонецЕсли;
|
||
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
|
||
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
|
||
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
|
||
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");
|
||
//ирПортативный #КонецЕсли
|