mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
*Исправлена ошибка копирования текста запроса в буфер обмена в виде выражения встроенного языка при наличии параметра-списка
*Исправлена ошибочная двойная обработка каждой 20-й строки обработчиком строки результата
*Исправлена ошибка обработки строк результата, если в процессе обработки открылось модальное окно
Конструктор запроса
*Генерация выборки из таблицы-параметра теперь выполняется без обращения через точку
Поиск дублей и замена ссылок
*Исправлена инициализация компоновщика после загрузки из файла настройки с произвольным запросом
*Исправлена ошибка в портативном варианте при передаче групп дублей в консоль компоновки
*Исправлена ошибочная очистка количества неправильных ссылок в строке группы дублей при смене активной строки
*Исправлена ошибка при удалении объектов в портативном варианте на сервере
+При использовании произвольного запроса теперь выполняется проверка уникальности ссылок в результате
Общее
*Исправлена ошибка пометки объекта на удаление в непортативных вариантах
*Исправлена проблема возвращения объектов данных с сервера при наличии в их доп. свойствах несериализуемых типов данных при отключенном использовании имитаторов объектов данных в непортативных вариантах
Подготовка к изменению структуры БД
*Исправлено ошибочное не удаление строк регистров
Загрузка табличных данных
*Исправлены ошибки открытия управляемых форм выбора справочников
Консоль кода
*Подменю "Способ выполнения" переименовано в "Контекст выполнения"
+В дереве алгоритмов добавлена колонка "К" запоминающая контекст выполнения для каждого алгоритма
166 lines
9.3 KiB
Plaintext
166 lines
9.3 KiB
Plaintext
Перем _Тип Экспорт;
|
||
|
||
Процедура Конструктор(Объект) Экспорт
|
||
|
||
ЭтотОбъект.ДополнительныеСвойства = Объект.ДополнительныеСвойства;
|
||
ЭтотОбъект.ОбменДанными = ирОбщий.СтруктураОбменаДаннымиОбъектаЛкс(Объект);
|
||
ЭтотОбъект._Тип = ТипЗнч(Объект);
|
||
ОбъектМД = Объект.Метаданные();
|
||
ПоляТаблицыБД = ирОбщий.ПолучитьПоляТаблицыМДЛкс(ОбъектМД,,,, Ложь);
|
||
ЭтотОбъект.Данные = Новый Структура;
|
||
Для Каждого СтрокаПоля Из ПоляТаблицыБД Цикл
|
||
Данные.Вставить(СтрокаПоля.Имя);
|
||
КонецЦикла;
|
||
ЗаполнитьЗначенияСвойств(Данные, Объект);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КонструкторПоКлючу(ИмяОсновнойТаблицы) Экспорт
|
||
|
||
ЭтотОбъект.ДополнительныеСвойства = Новый Структура;
|
||
ЭтотОбъект.ОбменДанными = ирОбщий.СтруктураОбменаДаннымиОбъектаЛкс();
|
||
ЭтотОбъект._Тип = Тип(СтрЗаменить(ИмяОсновнойТаблицы, ".", "МенеджерЗначения."));
|
||
ПоляТаблицыБД = ирОбщий.ПолучитьПоляТаблицыБДЛкс(ИмяОсновнойТаблицы);
|
||
ЭтотОбъект.Данные = Новый Структура;
|
||
Для Каждого СтрокаПоля Из ПоляТаблицыБД Цикл
|
||
Данные.Вставить(СтрокаПоля.Имя);
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция Снимок(ТолькоДанные = Ложь, РезультатВВидеСтроки = Истина) Экспорт
|
||
|
||
СтруктураОбъекта = Новый Структура;
|
||
Если Не ТолькоДанные Тогда
|
||
СтруктураОбъекта.Вставить("ОбменДанными", ОбменДанными);
|
||
СтруктураОбъекта.Вставить("ДополнительныеСвойства", ДополнительныеСвойства);
|
||
КонецЕсли;
|
||
СтруктураОбъекта.Вставить("Данные", Данные);
|
||
СтруктураОбъекта.Вставить("_Тип", _Тип);
|
||
Если РезультатВВидеСтроки Тогда
|
||
ЗаписьXML = Новый ЗаписьXML;
|
||
ЗаписьXML.УстановитьСтроку();
|
||
Попытка
|
||
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, СтруктураОбъекта, НазначениеТипаXML.Явное);
|
||
Исключение
|
||
Если Не ТолькоДанные Тогда
|
||
ирОбщий.УдалитьМутабельныеЗначенияВСтруктуреЛкс(СтруктураОбъекта.ДополнительныеСвойства);
|
||
КонецЕсли;
|
||
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, СтруктураОбъекта, НазначениеТипаXML.Явное);
|
||
КонецПопытки;
|
||
Результат = ЗаписьXML.Закрыть();
|
||
Иначе
|
||
Если Не ТолькоДанные Тогда
|
||
ирОбщий.УдалитьМутабельныеЗначенияВСтруктуреЛкс(СтруктураОбъекта.ДополнительныеСвойства);
|
||
КонецЕсли;
|
||
Результат = СтруктураОбъекта;
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗагрузитьСнимок(Снимок, ТолькоДанные = Ложь) Экспорт
|
||
|
||
Если ТолькоДанные Тогда
|
||
СтрокаЗагружаемыхСвойств = "_Тип";
|
||
Иначе
|
||
СтрокаЗагружаемыхСвойств = "_Тип, ОбменДанными, ДополнительныеСвойства";
|
||
КонецЕсли;
|
||
ЧтениеXML = Новый ЧтениеXML;
|
||
Если ТипЗнч(Снимок) = Тип("Строка") Тогда
|
||
ЧтениеXML.УстановитьСтроку(Снимок);
|
||
СтруктураОбъекта = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
|
||
ЧтениеXML.Закрыть();
|
||
Иначе
|
||
СтруктураОбъекта = Снимок;
|
||
КонецЕсли;
|
||
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СтруктураОбъекта, СтрокаЗагружаемыхСвойств);
|
||
Если Данные <> Неопределено Тогда
|
||
Данные.Очистить();
|
||
ирОбщий.СкопироватьУниверсальнуюКоллекциюЛкс(СтруктураОбъекта.Данные, Данные);
|
||
Иначе
|
||
ЭтотОбъект.Данные = СтруктураОбъекта.Данные;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция КлючОбъекта()
|
||
|
||
Результат = Неопределено;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ОбъектБД() Экспорт
|
||
|
||
КлючОбъекта = КлючОбъекта();
|
||
Результат = ирОбщий.ОбъектБДПоКлючуЛкс(Метаданные.НайтиПоТипу(_Тип).ПолноеИмя(), КлючОбъекта,, Ложь, Ложь).Данные;
|
||
Если ДополнительныеСвойства <> Неопределено Тогда
|
||
ирОбщий.СкопироватьУниверсальнуюКоллекциюЛкс(ДополнительныеСвойства, Результат.ДополнительныеСвойства);
|
||
КонецЕсли;
|
||
ирОбщий.ВосстановитьСтруктуруОбменаДаннымиОбъектаЛкс(Результат, ОбменДанными);
|
||
ЗаполнитьЗначенияСвойств(Результат, Данные);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура Прочитать(НаСервере = Неопределено, Блокировать = Истина) Экспорт
|
||
|
||
ОбъектБД = Метаданные.НайтиПоТипу(_Тип);
|
||
ПолноеИмяМД = ОбъектБД.ПолноеИмя();
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ Т.* ИЗ " + ПолноеИмяМД + " КАК Т";
|
||
Если Блокировать Тогда
|
||
ирОбщий.ЗаблокироватьКонстантуЛкс(ЭтотОбъект, Истина, РежимБлокировкиДанных.Разделяемый);
|
||
КонецЕсли;
|
||
ЗаполнитьЗначенияСвойств(Данные, Запрос.Выполнить().Выгрузить()[0]);
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция Записать() Экспорт
|
||
|
||
#Если Не Сервер Тогда
|
||
Снимок = Снимок();
|
||
ирСервер.ЗаписатьОбъектXMLЛкс(Снимок,,,,,, ТипЗнч(ЭтотОбъект));
|
||
ЗагрузитьСнимок(Снимок);
|
||
#Иначе
|
||
ОбъектБД = ОбъектБД();
|
||
ОбъектБД.Записать();
|
||
Конструктор(ОбъектБД);
|
||
#КонецЕсли
|
||
|
||
КонецФункции
|
||
|
||
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
|
||
|
||
ОбъектБД = ОбъектБД();
|
||
Отказ = Не ОбъектБД.ПроверитьЗаполнение();
|
||
Конструктор(ОбъектБД);
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ДанныеВСтрокуXMLЧерезXDTO(Знач ИспользоватьXDTO = Истина, ВызыватьИсключение = Истина) Экспорт
|
||
|
||
#Если Не Сервер Тогда
|
||
Снимок = Снимок(Истина);
|
||
Результат = ирСервер.ОбъектБДИзИмитатораВСтрокуXMLЛкс(Снимок, ТипЗнч(ЭтотОбъект), ИспользоватьXDTO, ВызыватьИсключение);
|
||
#Иначе
|
||
ОбъектБД = ОбъектБД();
|
||
Результат = ирОбщий.СохранитьОбъектВВидеСтрокиXMLЛкс(ОбъектБД, ИспользоватьXDTO, , ВызыватьИсключение);
|
||
#КонецЕсли
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ДанныеИзСтрокиXMLЧерезXDTO(СтрокаXML, Знач ИспользоватьXDTO = Истина, СообщатьОбОшибках = Истина) Экспорт
|
||
|
||
#Если Не Сервер Тогда
|
||
Снимок = ирСервер.ОбъектБДВИмитаторИзСтрокиXML(СтрокаXML, ТипЗнч(ЭтотОбъект), ИспользоватьXDTO, СообщатьОбОшибках);
|
||
ЗагрузитьСнимок(Снимок);
|
||
#Иначе
|
||
ОбъектБД = ирОбщий.ВосстановитьОбъектИзСтрокиXMLЛкс(СтрокаXML,, ИспользоватьXDTO, СообщатьОбОшибках);
|
||
Конструктор(ОбъектБД);
|
||
#КонецЕсли
|
||
|
||
КонецПроцедуры
|