RDT1C/CommonForms/ирОтладкаВнешнихОбработокБСП/Ext/Form/Module.bsl
Администратор 620ce4d601 // Версия 84
Конструктор запросов
        *Исправлена некорректная установка типа группы отбора кнопкой "Группа-Или" в условии связи таблиц
    Общее
        *Исправлена свежая некритичная ошибка при первом в истории запуске варианта Расширение в базе
        *Исправлена работа флажка "пропускать пустые" в форме разбора текста
        *Исправлен ввод ссылки документа по представлению с крайними непечатными символами
        *Флажок "Запись на сервере" во всех инструментах переименован в "Объекты на сервере"
        *Отключен вывод ряда диагностических сообщений пользователю в режиме управляемого приложения при открытии первой в сеансе формы инструментов
    Исследователь объектов
        +Включен множественный режим выделения строк в форме исследователя коллекций
    Консоль запросов
        *Исправлена проблема в некоторых случаях не выполнения сохранения файла после открытия файла восстановления
    Редактор объекта БД
        *Оптимизировано чтение движений документа
        *В управляемой форме исправлена ошибка записи движений документа
        *Исправлено обновление заголовка страницы "Движения" в управляемой форме при включении флажка "Вместе с движениями"
        +В таблице ссылающихся объектов реализовано более подробное представление ключей записей независимых регистров без обращения к БД
    Поиск дублей и замена ссылок
        *Оптимизировано чтение движений документов
        *Исправлена ошибка выполнения замены в независимых регистрах в некоторых конфигурациях
    Загрузка табличных данных
        +Реализована поддержка режима "Объекты на сервере"
    Редактор изменений на узле
        +Реализована поддержка режима "Объекты на сервере"
    Удаление объектов с контролем ссылок
        +В таблице ссылающихся объектов реализовано более подробное представление ключей записей независимых регистров без обращения к БД
        +По двойному щелчку на строке ссылающейся строки независимого регистра теперь открывается эта строка
        *Исправлена проблема не нахождения ссылающихся констант в некоторых случаях
    Управление COM классами 1С
        +Добавлены кнопка проверки создания COM объектов и колонка с результатом проверки
    Подбор и обработка объектов
        *Устранена ошибочная доступность кнопок "Сохранить/Загрузить алгоритм" в варианте Расширение
2018-04-01 23:43:34 +03:00

246 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

&НаКлиенте
Процедура КаталогФайловогоКэшаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
ВыборФайла.Каталог = КаталогФайловогоКэша;
Если Не ВыборФайла.Выбрать() Тогда
Возврат;
КонецЕсли;
ЭтаФорма.КаталогФайловогоКэша = ВыборФайла.Каталог;
КаталогФайловогоКэшаПриИзменении();
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СообщениеПоддеркиВерсийБСП = "Поддерживаются версии БСП 2.0-2.3";
Если Метаданные.Справочники.Найти("ДополнительныеОтчетыИОбработки") = Неопределено Тогда
Сообщить("Справочник внешних обработок БСП не обнаружен. " + СообщениеПоддеркиВерсийБСП);
Отказ = Истина;
Возврат;
КонецЕсли;
Если Метаданные.Константы.Найти("ПараметрыСлужебныхСобытий") = Неопределено Тогда
Сообщить("Константа ПараметрыСлужебныхСобытий не обнаружена. " + СообщениеПоддеркиВерсийБСП);
Отказ = Истина;
Возврат;
КонецЕсли;
Элементы.НадписьНеРаботаютТочкиОстанова.Видимость = ирКэш.НомерВерсииПлатформыЛкс() = 803006;
ПрочитатьНастройкиНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПрочитатьНастройкиНаСервере()
Обработчик = ирСервер.НайтиПерехватВнешнихОбработокБСПЛкс();
ЭтаФорма.ПерехватВнешнихОбработок = Обработчик <> Неопределено;
Если ПерехватВнешнихОбработок Тогда
ЭтаФорма.КаталогФайловогоКэша = Обработчик.КаталогФайловогоКэша;
ЭтаФорма.СозданиеВнешнихОбработокЧерезФайл = ХранилищеСистемныхНастроек.Загрузить("ирОтладкаВнешнихОбработок", "СозданиеВнешнихОбработокЧерезФайл");
ОбновитьСписокНаСервере();
Иначе
ЭтаФорма.СозданиеВнешнихОбработокЧерезФайл = Ложь;
СохранитьНастройкиПользователяНаСервере();
КонецЕсли;
ОбновитьДоступность();
КонецПроцедуры
&НаКлиенте
Процедура ОтладкаДляТекущегоПользователяПриИзменении(Элемент)
Если СозданиеВнешнихОбработокЧерезФайл Тогда
Если ЭтаФорма.ПерехватВнешнихОбработок <> Истина Тогда
ЭтаФорма.ПерехватВнешнихОбработок = Истина;
Если Не СохранитьНастройкиНаСервере() Тогда
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
СохранитьНастройкиПользователяНаСервере();
КонецПроцедуры
&НаСервере
Процедура СохранитьНастройкиПользователяНаСервере()
ХранилищеСистемныхНастроек.Сохранить("ирОтладкаВнешнихОбработок", "СозданиеВнешнихОбработокЧерезФайл", СозданиеВнешнихОбработокЧерезФайл);
КонецПроцедуры
&НаКлиенте
Процедура КаталогФайловогоКэшаПриИзменении(Элемент = Неопределено)
СохранитьНастройкиНаСервере();
ОбновитьСписокНаСервере();
КонецПроцедуры
&НаСервере
Функция СохранитьНастройкиНаСервере()
Если ПерехватВнешнихОбработок Тогда
ФайлКаталога = Новый Файл(КаталогФайловогоКэша);
Если Не ФайлКаталога.Существует() Тогда
Сообщить("Выбранный каталог недоступен серверу. Выберите другой каталог");
ПрочитатьНастройкиНаСервере();
ЭтаФорма.СозданиеВнешнихОбработокЧерезФайл = Ложь;
СохранитьНастройкиПользователяНаСервере();
Возврат Ложь;
КонецЕсли;
ирСервер.ВключитьПерехватВнешнихОбработокБСПЛкс(КаталогФайловогоКэша);
Иначе
ирСервер.НайтиПерехватВнешнихОбработокБСПЛкс(Истина);
КонецЕсли;
//ПрочитатьНастройкиНаСервере();
Возврат Истина;
КонецФункции
&НаСервере
Процедура ОбновитьСписокНаСервере()
Список.Очистить();
ОбновитьДоступность();
Если Не ЗначениеЗаполнено(КаталогФайловогоКэша) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДополнительныеОтчетыИОбработки.Ссылка КАК Ссылка,
| ДополнительныеОтчетыИОбработки.ИмяФайла
|ИЗ
| Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|АВТОУПОРЯДОЧИВАНИЕ";
Результат = Запрос.Выполнить().Выгрузить();
СравнениеЗначений = Новый СравнениеЗначений;
Для Каждого СтрокаРезультата Из Результат Цикл
СтрокаТаблицы = Список.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, СтрокаРезультата);
ПолноеИмяФайла = ирСервер.ПолноеИмяФайлаВнешнейОбработкиВФайловомКэшеЛкс(СтрокаТаблицы.Ссылка, КаталогФайловогоКэша);
Файл = Новый Файл(ПолноеИмяФайла);
СтрокаТаблицы.ИмяФайла = Файл.Имя;
Если Файл.Существует() Тогда
Попытка
ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ПолноеИмяФайла);
Исключение
Сообщить("Ошибка доступа к файлу """ + ПолноеИмяФайла + """: " + ОписаниеОшибки());
Продолжить;
КонецПопытки;
СтрокаТаблицы.ДатаИзмененияФайла = Файл.ПолучитьВремяИзменения() + ирКэш.ПолучитьСмещениеВремениЛкс();
СтрокаТаблицы.ФайлОтличаетсяОтХранилища = СравнениеЗначений.Сравнить(ДвоичныеДанныеФайла, СтрокаТаблицы.Ссылка.ХранилищеОбработки.Получить()) <> 0;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДоступность()
Элементы.ВнешниеОбработкиЗагрузитьИзФайла.Доступность = ЗначениеЗаполнено(КаталогФайловогоКэша);
Элементы.ВнешниеОбработкиОткрытьВОтладчике.Доступность = ЗначениеЗаполнено(КаталогФайловогоКэша);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписок(Команда = Неопределено)
КлючСтроки = ирОбщий.ПолучитьКлючТекущейСтрокиЛкс(Элементы.Список);
ОбновитьСписокНаСервере();
ирОбщий.ВосстановитьТекущуюСтрокуТаблицыФормыЛкс(Элементы.Список, КлючСтроки, Список);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВОтладчике(Команда)
#Если ТонкийКлиент Или ВебКлиент Тогда
Сообщить("Функция доступна только в толстом клиенте");
Возврат;
#КонецЕсли
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПолноеИмяФайла = ирСервер.ПолноеИмяФайлаВнешнейОбработкиВФайловомКэшеЛкс(ТекущиеДанные.Ссылка, КаталогФайловогоКэша);
Файл = Новый Файл(ПолноеИмяФайла);
Если Не Файл.Существует() Тогда
ТекущиеДанные.Ссылка.ХранилищеОбработки.Получить().Записать(ПолноеИмяФайла);
КонецЕсли;
ирКэш.Получить().ОткрытьФайлВКонфигураторе(ПолноеИмяФайла, "Модуль");
ОбновитьСписок();
КонецПроцедуры
&НаКлиенте
Процедура ВнешниеОбработкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОткрытьЗначение(Элемент.ТекущиеДанные.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ПерехватВнешнихОбработокПриИзменении(Элемент)
Если Не ПерехватВнешнихОбработок Тогда
ЭтаФорма.СозданиеВнешнихОбработокЧерезФайл = Ложь;
СохранитьНастройкиПользователяНаСервере();
КонецЕсли;
СохранитьНастройкиНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьАктуальныеНастройки(Команда)
ПрочитатьНастройкиНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайла(Команда)
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ЗагрузитьИзФайлаНаСервере(ТекущиеДанные.Ссылка, КаталогФайловогоКэша);
ОбновитьСписок();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗагрузитьИзФайлаНаСервере(Ссылка, КаталогФайловогоКэша)
#Если Сервер И Не Сервер Тогда
Ссылка = Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка();
#КонецЕсли
ПолноеИмяФайла = ирСервер.ПолноеИмяФайлаВнешнейОбработкиВФайловомКэшеЛкс(Ссылка, КаталогФайловогоКэша);
Файл = Новый Файл(ПолноеИмяФайла);
Если Не Файл.Существует() Тогда
Возврат;
КонецЕсли;
ОбъектМодуля = ВнешниеОбработки.Создать(Файл.ПолноеИмя, Ложь);
СведенияМодуля = ОбъектМодуля.СведенияОВнешнейОбработке();
Объект = Ссылка.ПолучитьОбъект();
Объект.Версия = СведенияМодуля.Версия;
Объект.ХранилищеОбработки = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Файл.ПолноеИмя));
Объект.Записать();
КонецПроцедуры
&НаКлиенте
Процедура КаталогФайловогоКэшаОткрытие(Элемент, СтандартнаяОбработка)
ЗапуститьПриложение(КаталогФайловогоКэша);
СтандартнаяОбработка = Ложь;
КонецПроцедуры