mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 21:24:11 +00:00
+Добавлено отображение количества строк и колонок
+При загрузке из текстового файла (txt,csv) теперь открывается форма разбивки текста в таблицу
Форма списка значений
+Добавлена команда "Получить"/"из текста"
Форма таблицы значений
+Добавлена команда "Получить"/"из текста"
Загрузка табличных данных
*Оптимизирована работа с большими табличными документами
Консоль запросов
+В форме настроек сделан доступным флажок "Автосохранение файла восстановления"
*Исправлено свежее отрезание последнего символа в команде преобразования текста запроса из выражения встроенного языка
Грамматика языка запросов
*Исправлена невозможность использования слова "Изменения" в качестве псевдонима
Общее
+Для всех управляемых форм материнской конфигурации подключены невидимые глобальные команды "Редактировать объект" (Ctrl+Alt+E) и "Обработать объекты" (Ctrl+Alt+R) в непортативных вариантах
+В представление табличного документа добавлена высота таблицы
+В управляемом интерфейсе добавлена команда "открыть объект для отладки"
*Команда табличного поля "Вывести список" теперь потребляет меньше памяти
*В варианте Расширение исправлена ошибка команды "открыть объект для отладки" при отказе от ввода идентифицирующей строки
+В информацию для технической поддержки добавлена версия БСП
Консоль кода
+Добавлен флажок "Автосохранение файла восстановления"
Подбор и обработка объектов
*Добавлено чтение списка доступных обработок по ключу из старых версий, если по ключу из новой версии он еще не была сохранен
Анализ техножурнала
*Исправлено обнуление чисел в экспоненциальной форме при разборе плана запроса MSSQL
Настройка техножурнала
+Добавлено поле выбора варианта расположения файла настроек (Активный файл, Для текущего пользователя ОС, Для текущей версии, Перенаправление текущей версии)
274 lines
15 KiB
Plaintext
274 lines
15 KiB
Plaintext
Перем мТелоПозиционногоМетода;
|
||
Перем мТелоПоименногоМетода;
|
||
Перем ДатаИзмененияКонтекста Экспорт;
|
||
Перем мСтруктураВнешнейОбработки Экспорт;
|
||
Перем ИндивидуальнаяВнешняяОбработка Экспорт;
|
||
|
||
//Процедура ДобавитьПараметрыВСтруктуру(СтруктураПараметров) Экспорт
|
||
|
||
// Для Каждого СтрокаПараметра Из Параметры Цикл
|
||
// Если Не СтруктураПараметров.Свойство(СтрокаПараметра.Имя) Тогда
|
||
// СтруктураПараметров.Вставить(СтрокаПараметра.Имя, СтрокаПараметра.Значение);
|
||
// КонецЕсли;
|
||
// КонецЦикла;
|
||
|
||
// ИмяПараметра = "Результат";
|
||
// Если Не СтруктураПараметров.Свойство(ИмяПараметра) Тогда
|
||
// СтруктураПараметров.Вставить(ИмяПараметра);
|
||
// КонецЕсли;
|
||
|
||
//КонецПроцедуры // ПолучитьСтруктуруПараметров()
|
||
|
||
Функция ПолучитьСтартовуюСтрокуАлгоритмаВТексте() Экспорт
|
||
|
||
Возврат Параметры.Количество();
|
||
|
||
КонецФункции // ПолучитьСтартовуюСтрокуАлгоритмаВМодуле()
|
||
|
||
Функция ПолучитьСтартовуюСтрокуМетодаВМодуле() Экспорт
|
||
|
||
Результат = 1 + СтрЧислоСтрок(ПолучитьШапкуОпределенияМетода() + ПолучитьШапкуТелаМетода());
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолучитьСтартовуюСтрокуАлгоритмаВМодуле()
|
||
|
||
Функция ПолучитьОбъявлениеСлужебныхПеременных()
|
||
|
||
МассивСлужебныхПеременных = Новый Массив;
|
||
МассивСлужебныхПеременных.Добавить("ЭтотОбъект");
|
||
МассивСлужебныхПеременных.Добавить("ИспользуемоеИмяФайла");
|
||
МассивСлужебныхПеременных.Добавить("Результат");
|
||
Разделитель = ", ";
|
||
Результат = "";
|
||
Для Каждого СлужебнаяПеременная Из МассивСлужебныхПеременных Цикл
|
||
Результат = Результат + Разделитель + СлужебнаяПеременная;
|
||
КонецЦикла;
|
||
Результат = Сред(Результат, СтрДлина(Разделитель) + 1);
|
||
Результат = "Перем " + Результат + ";";
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолучитьОбъявлениеСлужебныхПеременных()
|
||
|
||
Функция ПолучитьТекстМодуляОбработки() Экспорт
|
||
|
||
Результат = "";
|
||
Результат = Результат + "// " + Наименование + Символы.ПС;
|
||
Результат = Результат + ПолучитьОпределениеМетода();
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолучитьТекстМодуляОбработки()
|
||
|
||
Функция ПолучитьОпределениеМетода(УниверсальныеИменаПараметров = Ложь) Экспорт
|
||
|
||
Результат = ПолучитьШапкуОпределенияМетода();
|
||
Результат = Результат + ПолучитьТелоМетода() + Символы.ПС;
|
||
Результат = Результат + Символы.Таб + "Возврат Результат;" + Символы.ПС;
|
||
Результат = Результат + "КонецФункции" + Символы.ПС;
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолучитьОпределениеМетода()
|
||
|
||
Функция ПолучитьШапкуОпределенияМетода()
|
||
|
||
Результат = "Функция мМетод(_АлгоритмОбъект, _Режим";
|
||
Для Счетчик = 0 По 9 Цикл
|
||
ИмяПараметра = "_П" + Счетчик;
|
||
Результат = Результат + ", " + ИмяПараметра;
|
||
КонецЦикла;
|
||
Результат = Результат + ") Экспорт" + Символы.ПС;
|
||
Результат = Результат + Символы.Таб + ПолучитьОбъявлениеСлужебныхПеременных();
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолучитьШапкуОпределенияМетода()
|
||
|
||
Функция ПолучитьШапкуТелаМетода()
|
||
|
||
Результат = "";
|
||
МассивТаблицПараметров = Новый Массив;
|
||
Результат = Результат + "
|
||
| _Параметры = _АлгоритмОбъект.Параметры;";
|
||
//Для Индекс = 0 ПО Параметры.Количество() - 1 Цикл
|
||
// СтрокаПеременной = Параметры[Индекс];
|
||
// ИмяПеременной = СтрокаПеременной.Имя;
|
||
// Результат = Результат + "
|
||
// | " + ИмяПеременной + " = ?(_П0.Свойство(""" + ИмяПеременной + """), _П0." + ИмяПеременной + ", _Параметры[" + Индекс + "].Значение);";
|
||
//КонецЦикла;
|
||
Результат = Результат + "
|
||
| Если _Режим = 0 Тогда";
|
||
Для Индекс = 0 ПО Параметры.Количество() - 1 Цикл
|
||
СтрокаПеременной = Параметры[Индекс];
|
||
Если Индекс < 10 Тогда
|
||
ИмяПараметра = "_П" + Индекс;
|
||
Иначе
|
||
ИмяПараметра = "Null";
|
||
КонецЕсли;
|
||
ИмяПеременной = СтрокаПеременной.Имя;
|
||
Результат = Результат + "
|
||
| " + ИмяПеременной + " = ?(" + ИмяПараметра + " = Null, _Параметры[" + (Индекс) + "].Значение, "
|
||
+ ИмяПараметра + ");";
|
||
КонецЦикла;
|
||
Результат = Результат + "
|
||
| Иначе";
|
||
Для Индекс = 0 ПО Параметры.Количество() - 1 Цикл
|
||
СтрокаПеременной = Параметры[Индекс];
|
||
ИмяПеременной = СтрокаПеременной.Имя;
|
||
Результат = Результат + "
|
||
| " + ИмяПеременной + " = ?(_П0.Свойство(""" + ИмяПеременной + """), _П0." + ИмяПеременной +
|
||
", _Параметры[" + (Индекс) + "].Значение);";
|
||
КонецЦикла;
|
||
Результат = Результат + "
|
||
| КонецЕсли;";
|
||
|
||
Результат = Результат + Символы.ПС + ирКэш.Получить().МаркерНачалаАлгоритма;
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолучитьШапкуТелаМетода()
|
||
|
||
Функция ПолучитьТелоМетода(Кэшировать = Ложь) Экспорт
|
||
|
||
Результат = ПолучитьШапкуТелаМетода();
|
||
ТекстАлгоритмаТД = Новый ТекстовыйДокумент;
|
||
ТекстАлгоритмаТД.УстановитьТекст(ТекстАлгоритма);
|
||
Для Сч1 = 1 По ТекстАлгоритмаТД.КоличествоСтрок() Цикл
|
||
Результат = Результат + Символы.Таб + ТекстАлгоритмаТД.ПолучитьСтроку(Сч1) + Символы.ПС;
|
||
КонецЦикла;
|
||
Результат = Результат + ирКэш.Получить().МаркерКонцаАлгоритма;
|
||
Результат = Результат + Символы.Таб + "; ~Конец:";
|
||
|
||
//Для Каждого СтрокаПараметра Из Параметры Цикл
|
||
// Индекс = Параметры.Индекс(СтрокаПараметра);
|
||
// ИмяПеременной = СтрокаПараметра.Имя;
|
||
// Результат = Результат + "
|
||
// | _П0." + ИмяПеременной + " = " + ИмяПеременной + ";";
|
||
//КонецЦикла;
|
||
Результат = Результат + "
|
||
| Если _Режим = 0 Тогда";
|
||
Для Каждого СтрокаПараметра Из Параметры Цикл
|
||
Индекс = Параметры.Индекс(СтрокаПараметра);
|
||
Результат = Результат + "
|
||
| _П" + Индекс + " = " + СтрокаПараметра.Имя + ";";
|
||
КонецЦикла;
|
||
Результат = Результат + "
|
||
| Иначе";
|
||
Для Каждого СтрокаПараметра Из Параметры Цикл
|
||
Индекс = Параметры.Индекс(СтрокаПараметра);
|
||
ИмяПеременной = СтрокаПараметра.Имя;
|
||
Результат = Результат + "
|
||
| _П0.Вставить(""" + ИмяПеременной + """, " + ИмяПеременной + ");";
|
||
КонецЦикла;
|
||
Результат = Результат + "
|
||
| КонецЕсли;";
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолучитьТелоМетода()
|
||
|
||
Функция ПолучитьТекстМакетаПараметров() Экспорт
|
||
|
||
Возврат "";
|
||
|
||
КонецФункции // ПолучитьТекстМакетаПараметров()
|
||
|
||
|
||
Функция ВыполнитьЛокально(ТекстДляВыполнения, ЛиСинтаксическийКонтроль = Ложь) Экспорт
|
||
|
||
Возврат ирКэш.Получить().ВыполнитьЛокально(ТекстДляВыполнения);
|
||
|
||
КонецФункции // ВыполнитьЛокально()
|
||
|
||
Функция ПроверитьДанные() Экспорт
|
||
|
||
ДанныеКорректны = Истина;
|
||
|
||
// Проверка шапки
|
||
ЧистоеНаименование = СокрЛП(Наименование);
|
||
ирОбщий.ПрисвоитьЕслиНеРавноЛкс(Наименование, ЧистоеНаименование);
|
||
Если Не ирОбщий.ЛиИмяПеременнойЛкс(Наименование) Тогда
|
||
ДанныеКорректны = Ложь;
|
||
Сообщить("Имя алгоритма не отвечает правилам формирования имен переменных встроенного языка", СтатусСообщения.Важное);
|
||
КонецЕсли;
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ
|
||
| Алгоритмы.Ссылка
|
||
|ИЗ
|
||
| " + Метаданные().ПолноеИмя() + " КАК Алгоритмы
|
||
|ГДЕ
|
||
| Алгоритмы.Наименование = &Наименование
|
||
| И Алгоритмы.Ссылка <> &Ссылка";
|
||
Запрос.УстановитьПараметр("Наименование", Наименование);
|
||
Запрос.УстановитьПараметр("Ссылка", Ссылка);
|
||
Результат = Запрос.Выполнить();
|
||
Если Не Результат.Пустой() Тогда
|
||
ДанныеКорректны = Ложь;
|
||
Сообщить("В справочнике """ + Метаданные().Имя + """ уже существует элемент с наименованием """ + Наименование + """",
|
||
СтатусСообщения.Важное);
|
||
КонецЕсли;
|
||
ДанныеКорректны = ДанныеКорректны И ирОбщий.ЛиПараметрыАлгоритмыКорректныЛкс(Параметры.Выгрузить(, "Имя"));
|
||
Возврат ДанныеКорректны;
|
||
|
||
КонецФункции // ПроверитьДанные()
|
||
|
||
//Функция ПроверитьТЧ(Параметры)
|
||
|
||
// ДанныеКорректны = Истина;
|
||
// МетаданныеТЧ = ирОбщий.ПолучитьМетаданныеЛкс(Параметры);
|
||
// КопияТЧ = Параметры.Выгрузить();
|
||
// КопияТЧ.Свернуть("Имя");
|
||
// Если КопияТЧ.Количество() <> Параметры.Количество() Тогда
|
||
// Параметры.Сортировать("Имя");
|
||
// Сообщить("Строки табличной части """ + МетаданныеТЧ.Представление() + """ должны иметь уникальные имена",
|
||
// СтатусСообщения.Важное);
|
||
// ДанныеКорректны = Ложь;
|
||
// КонецЕсли;
|
||
// Для Каждого СтрокаПараметра Из Параметры Цикл
|
||
// Если Не ирОбщий.ЛиИмяПеременнойЛкс(СтрокаПараметра.Имя) Тогда
|
||
// ДанныеКорректны = Ложь;
|
||
// Сообщить("Имя параметра """ + СтрокаПараметра.Имя + """ не отвечает правилам формирования имен встроенного языка",
|
||
// СтатусСообщения.Важное);
|
||
// КонецЕсли;
|
||
// КонецЦикла;
|
||
// Возврат ДанныеКорректны;
|
||
|
||
//КонецФункции // ПроверитьТЧ()
|
||
|
||
Процедура СобратьКонтекст() Экспорт
|
||
|
||
ДатаИзмененияКонтекста = ДатаИзменения;
|
||
|
||
КонецПроцедуры // ПрочитатьКонтекст()
|
||
|
||
Процедура ПередЗаписью(Отказ)
|
||
|
||
Если Не ОбменДанными.Загрузка Тогда
|
||
ДатаИзменения = ТекущаяДата();
|
||
СобратьКонтекст();
|
||
Отказ = Отказ Или Не ПроверитьДанные();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПриЗаписи(Отказ)
|
||
|
||
Если Не ОбменДанными.Загрузка Тогда
|
||
мТекстАлгоритмаСПараметрами = "";
|
||
мПлатформа = ирКэш.Получить();
|
||
Если мПлатформа <> Неопределено Тогда
|
||
#Если Клиент Тогда
|
||
мПлатформа.ОбновитьАлгоритмВКеше(ЭтотОбъект);
|
||
#КонецЕсли
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПриКопировании(ОбъектКопирования)
|
||
|
||
Наименование = Наименование + "1";
|
||
|
||
КонецПроцедуры
|
||
|
||
ДатаИзмененияКонтекста = ДатаИзменения;
|
||
мТекстАлгоритмаСПараметрами = "";
|
||
ИндивидуальнаяВнешняяОбработка = Истина;
|
||
|