mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 21:24:11 +00:00
// Версия 261 Сергей@, 2020-11-02 12:17:32 // Версия 262 Сергей@, 2020-11-02 12:18:02 // Версия 263 Сергей@, 2020-11-02 12:53:57 // Версия 264 Сергей@, 2020-11-02 07:16:29
281 lines
16 KiB
Plaintext
281 lines
16 KiB
Plaintext
|
||
&НаКлиенте
|
||
Процедура КаталогФайловогоКэшаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
|
||
|
||
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
|
||
ВыборФайла.Каталог = КаталогФайловогоКэша;
|
||
Если Не ВыборФайла.Выбрать() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ЭтаФорма.КаталогФайловогоКэша = ВыборФайла.Каталог;
|
||
КаталогФайловогоКэшаПриИзменении();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||
|
||
Если ирКэш.НомерВерсииБСПЛкс() >= 204 Тогда
|
||
Если Не ирКэш.ЛиЭтоРасширениеКонфигурацииЛкс() Тогда
|
||
Сообщить("Работа инструмента с БСП 2.4 и выше поддерживается только в варианте Расширение");
|
||
Отказ = Истина;
|
||
Возврат;
|
||
КонецЕсли;
|
||
Элементы.ПерехватВнешнихОбработок.Видимость = Ложь;
|
||
_ДополнительныеОтчетыИОбработки = Вычислить("ДополнительныеОтчетыИОбработки");
|
||
#Если Сервер И Не Сервер Тогда
|
||
_ДополнительныеОтчетыИОбработки = ДополнительныеОтчетыИОбработки;
|
||
#КонецЕсли
|
||
Попытка
|
||
_ДополнительныеОтчетыИОбработки.ирПроверкаПодключенияРасширенияМодуля();
|
||
Исключение
|
||
Сообщить("Необходимо адаптировать расширение командой ""Адаптация расширения"" в разделе ""Инструменты разработчика""/""Сервис""");
|
||
Отказ = Истина;
|
||
Возврат;
|
||
КонецПопытки;
|
||
ИначеЕсли ирКэш.НомерВерсииБСПЛкс() < 200 Тогда
|
||
Сообщить("Поддерживаются версии БСП 2.0 и выше. Обнаружена БСП " + ирКэш.ВерсияБСПЛкс());
|
||
Отказ = Истина;
|
||
Возврат;
|
||
КонецЕсли;
|
||
Элементы.НадписьНеРаботаютТочкиОстанова.Видимость = ирКэш.НомерВерсииПлатформыЛкс() = 803006;
|
||
ПрочитатьНастройкиНаСервере();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПрочитатьНастройкиНаСервере()
|
||
|
||
Обработчик = ирСервер.НайтиПерехватВнешнихОбработокБСПЛкс();
|
||
ЭтаФорма.ПерехватВнешнихОбработок = Обработчик <> Неопределено;
|
||
Если ПерехватВнешнихОбработок Тогда
|
||
ЭтаФорма.КаталогФайловогоКэша = Обработчик.КаталогФайловогоКэша;
|
||
ЭтаФорма.СозданиеВнешнихОбработокЧерезФайл = ХранилищеСистемныхНастроек.Загрузить("ирОтладкаВнешнихОбработок", "СозданиеВнешнихОбработокЧерезФайл");
|
||
ОбновитьСписокНаСервере();
|
||
Иначе
|
||
ЭтаФорма.СозданиеВнешнихОбработокЧерезФайл = Ложь;
|
||
СохранитьНастройкиПользователяНаСервере();
|
||
КонецЕсли;
|
||
ОбновитьДоступность();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОтладкаДляТекущегоПользователяПриИзменении(Элемент)
|
||
|
||
Если СозданиеВнешнихОбработокЧерезФайл Тогда
|
||
Если ЭтаФорма.ПерехватВнешнихОбработок <> Истина Тогда
|
||
ЭтаФорма.ПерехватВнешнихОбработок = Истина;
|
||
Если Не СохранитьНастройкиНаСервере() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
СохранитьНастройкиПользователяНаСервере();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура СохранитьНастройкиПользователяНаСервере()
|
||
|
||
ХранилищеСистемныхНастроек.Сохранить("ирОтладкаВнешнихОбработок", "СозданиеВнешнихОбработокЧерезФайл", СозданиеВнешнихОбработокЧерезФайл);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура КаталогФайловогоКэшаПриИзменении(Элемент = Неопределено)
|
||
|
||
СохранитьНастройкиНаСервере();
|
||
ОбновитьСписокНаСервере();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Функция СохранитьНастройкиНаСервере()
|
||
|
||
Если ПерехватВнешнихОбработок Тогда
|
||
ФайлКаталога = Новый Файл(КаталогФайловогоКэша);
|
||
Если Не ФайлКаталога.Существует() Тогда
|
||
Сообщить("Выбранный каталог недоступен серверу. Выберите другой каталог");
|
||
ПрочитатьНастройкиНаСервере();
|
||
ЭтаФорма.СозданиеВнешнихОбработокЧерезФайл = Ложь;
|
||
СохранитьНастройкиПользователяНаСервере();
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
ирСервер.ВключитьПерехватВнешнихОбработокБСПЛкс(КаталогФайловогоКэша);
|
||
Иначе
|
||
ирСервер.НайтиПерехватВнешнихОбработокБСПЛкс(Истина);
|
||
КонецЕсли;
|
||
//ПрочитатьНастройкиНаСервере();
|
||
Возврат Истина;
|
||
|
||
КонецФункции
|
||
|
||
&НаСервере
|
||
Процедура ОбновитьСписокНаСервере()
|
||
|
||
Список.Очистить();
|
||
ОбновитьДоступность();
|
||
Если Не ЗначениеЗаполнено(КаталогФайловогоКэша) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ
|
||
| ДополнительныеОтчетыИОбработки.Ссылка КАК Ссылка,
|
||
| ДополнительныеОтчетыИОбработки.ИмяФайла
|
||
|ИЗ
|
||
| Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| Ссылка
|
||
|АВТОУПОРЯДОЧИВАНИЕ";
|
||
Результат = Запрос.Выполнить().Выгрузить();
|
||
СравнениеЗначений = Новый СравнениеЗначений;
|
||
Для Каждого СтрокаРезультата Из Результат Цикл
|
||
СтрокаТаблицы = Список.Добавить();
|
||
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, СтрокаРезультата);
|
||
ПолноеИмяФайла = ирСервер.ПолноеИмяФайлаВнешнейОбработкиВФайловомКэшеЛкс(СтрокаТаблицы.Ссылка, КаталогФайловогоКэша);
|
||
Файл = Новый Файл(ПолноеИмяФайла);
|
||
СтрокаТаблицы.ИмяФайла = Файл.Имя;
|
||
Если Файл.Существует() Тогда
|
||
Попытка
|
||
ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ПолноеИмяФайла);
|
||
Исключение
|
||
Сообщить("Ошибка доступа к файлу """ + ПолноеИмяФайла + """: " + ОписаниеОшибки());
|
||
Продолжить;
|
||
КонецПопытки;
|
||
СтрокаТаблицы.ДатаИзмененияФайла = Файл.ПолучитьВремяИзменения() + ирКэш.ПолучитьСмещениеВремениЛкс();
|
||
СтрокаТаблицы.ФайлОтличаетсяОтХранилища = СравнениеЗначений.Сравнить(ДвоичныеДанныеФайла, СтрокаТаблицы.Ссылка.ХранилищеОбработки.Получить()) <> 0;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ОбновитьДоступность()
|
||
|
||
Элементы.ВнешниеОбработкиЗагрузитьИзФайла.Доступность = ЗначениеЗаполнено(КаталогФайловогоКэша);
|
||
Элементы.ВнешниеОбработкиОткрытьВОтладчике.Доступность = ЗначениеЗаполнено(КаталогФайловогоКэша);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОбновитьСписок(Команда = Неопределено)
|
||
|
||
КлючСтроки = ирОбщий.ПолучитьКлючТекущейСтрокиЛкс(Элементы.Список);
|
||
ОбновитьСписокНаСервере();
|
||
ирОбщий.ВосстановитьТекущуюСтрокуТаблицыФормыЛкс(Элементы.Список, КлючСтроки, Список);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОткрытьВОтладчике(Команда)
|
||
|
||
#Если ТонкийКлиент Или ВебКлиент Тогда
|
||
Сообщить("Функция доступна только в толстом клиенте");
|
||
Возврат;
|
||
#КонецЕсли
|
||
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ПолноеИмяФайла = ирСервер.ПолноеИмяФайлаВнешнейОбработкиВФайловомКэшеЛкс(ТекущиеДанные.Ссылка, КаталогФайловогоКэша);
|
||
Файл = Новый Файл(ПолноеИмяФайла);
|
||
Если Не Файл.Существует() Тогда
|
||
ТекущиеДанные.Ссылка.ХранилищеОбработки.Получить().Записать(ПолноеИмяФайла);
|
||
КонецЕсли;
|
||
ирКэш.Получить().ОткрытьФайлВКонфигураторе(ПолноеИмяФайла, "Модуль");
|
||
ОбновитьСписок();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ВнешниеОбработкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
|
||
|
||
ОткрытьЗначение(Элемент.ТекущиеДанные.Ссылка);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПерехватВнешнихОбработокПриИзменении(Элемент)
|
||
|
||
Если Не ПерехватВнешнихОбработок Тогда
|
||
ЭтаФорма.СозданиеВнешнихОбработокЧерезФайл = Ложь;
|
||
СохранитьНастройкиПользователяНаСервере();
|
||
КонецЕсли;
|
||
СохранитьНастройкиНаСервере();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрочитатьАктуальныеНастройки(Команда)
|
||
|
||
ПрочитатьНастройкиНаСервере();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ЗагрузитьИзФайла(Команда)
|
||
|
||
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ЗагрузитьИзФайлаНаСервере(ТекущиеДанные.Ссылка, КаталогФайловогоКэша);
|
||
ОбновитьСписок();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервереБезКонтекста
|
||
Процедура ЗагрузитьИзФайлаНаСервере(Ссылка, КаталогФайловогоКэша)
|
||
|
||
#Если Сервер И Не Сервер Тогда
|
||
Ссылка = Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка();
|
||
#КонецЕсли
|
||
ПолноеИмяФайла = ирСервер.ПолноеИмяФайлаВнешнейОбработкиВФайловомКэшеЛкс(Ссылка, КаталогФайловогоКэша);
|
||
Файл = Новый Файл(ПолноеИмяФайла);
|
||
Если Не Файл.Существует() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ОбъектМодуля = ВнешниеОбработки.Создать(Файл.ПолноеИмя, Ложь);
|
||
СведенияМодуля = ОбъектМодуля.СведенияОВнешнейОбработке();
|
||
Объект = Ссылка.ПолучитьОбъект();
|
||
Объект.Версия = СведенияМодуля.Версия;
|
||
Объект.ХранилищеОбработки = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Файл.ПолноеИмя));
|
||
Объект.Записать();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура КаталогФайловогоКэшаОткрытие(Элемент, СтандартнаяОбработка)
|
||
|
||
ЗапуститьПриложение(КаталогФайловогоКэша);
|
||
СтандартнаяОбработка = Ложь;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт
|
||
|
||
ирОбщий.Форма_ВнешнееСобытиеЛкс(ЭтаФорма, Источник, Событие, Данные);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ЗаменитьФайлы(Команда)
|
||
|
||
Ответ = Вопрос("Уверены, что хотите удалить выделенные файлы?", РежимДиалогаВопрос.ОКОтмена);
|
||
Если Ответ <> КодВозвратаДиалога.ОК Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Для Каждого ВыделеннаяСтрока Из Элементы.Список.ВыделенныеСтроки Цикл
|
||
СтрокаТаблицы = Элементы.Список.ДанныеСтроки(ВыделеннаяСтрока);
|
||
ПолноеИмяФайла = ирСервер.ПолноеИмяФайлаВнешнейОбработкиВФайловомКэшеЛкс(СтрокаТаблицы.Ссылка, КаталогФайловогоКэша);
|
||
УдалитьФайлы(ПолноеИмяФайла);
|
||
КонецЦикла;
|
||
ОбновитьСписок();
|
||
|
||
КонецПроцедуры
|
||
|
||
|