mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 13:14:11 +00:00
Подбор и обработка объектов
+ Реализована доступность для выбора полей количества движений по регистрам
+Добавлена поддержка доп. реквизитов и сведений БСП 2+ в обработке "Изменить/Добавить строку"
Грамматика языка запросов
*Исправлена ошибка разбора текста с REF в качестве имени поля
Общее
+В общих настройках добавлен флажок "Проверять подписки конфигурации при открытии первой формы" для ускорения на больших конфигурациях
+Добавлена поддержка английского варианта встроенного языка
*Проверка совместимости конфигурации при открытии первой формы теперь выполняется отложено
Управление COM классами 1С
+Теперь при двойном клике на имени файла он открывается в проводнике
Адаптация расширения
*Исправлена ошибка выполнения адаптации при наличии в конфигурации ссылочных таблиц внешних источников данных
+Добавлен флажок "Подключить отладку отчетов БСП"
Динамический список
+Реализовано автоматическое обновление после завершения всех изменений данных в инструментах
*Исправлена ошибка в обычной форме при выборе таблицы перечисления
Интерфейсная панель
*Исправлена ошибка открытия общих форм в варианте Расширение
Анализ журнала регистрации
+Добавлена кнопки снятия всех пометок в отборе
Редактор объекта БД
*Исправлена ошибка команды "Выгрузить в XML"
Консоль запросов
*Исправлена работа переход к закладке по F2 в поле текста запроса
*Ускорено первое в сеансе открытие формы на больших конфигурациях
471 lines
34 KiB
Plaintext
471 lines
34 KiB
Plaintext
//ирПортативный Перем ирПортативный Экспорт;
|
||
//ирПортативный Перем ирОбщий Экспорт;
|
||
//ирПортативный Перем ирСервер Экспорт;
|
||
//ирПортативный Перем ирКэш Экспорт;
|
||
//ирПортативный Перем ирПривилегированный Экспорт;
|
||
|
||
Функция ПолучитьСписокЗначенийЭлементаОтбора(ПолеОтбора) Экспорт
|
||
|
||
Если ПолеОтбора = "Уровень" Тогда
|
||
ВозможныеЗначения = Новый СписокЗначений;
|
||
ВозможныеЗначения.Добавить(УровеньЖурналаРегистрации.Ошибка);
|
||
ВозможныеЗначения.Добавить(УровеньЖурналаРегистрации.Предупреждение);
|
||
ВозможныеЗначения.Добавить(УровеньЖурналаРегистрации.Информация);
|
||
ВозможныеЗначения.Добавить(УровеньЖурналаРегистрации.Примечание);
|
||
ИначеЕсли ПолеОтбора = "СтатусТранзакции" Тогда
|
||
ВозможныеЗначения = Новый СписокЗначений;
|
||
ВозможныеЗначения.Добавить(СтатусТранзакцииЗаписиЖурналаРегистрации.Зафиксирована);
|
||
ВозможныеЗначения.Добавить(СтатусТранзакцииЗаписиЖурналаРегистрации.Отменена);
|
||
ВозможныеЗначения.Добавить(СтатусТранзакцииЗаписиЖурналаРегистрации.НеЗавершена);
|
||
ВозможныеЗначения.Добавить(СтатусТранзакцииЗаписиЖурналаРегистрации.НетТранзакции);
|
||
ИначеЕсли Ложь
|
||
Или ПолеОтбора = "Пользователь"
|
||
Или ПолеОтбора = "Компьютер"
|
||
Или ПолеОтбора = "ИмяПриложения"
|
||
Или ПолеОтбора = "Событие"
|
||
Или ПолеОтбора = "Метаданные"
|
||
Или ПолеОтбора = "РабочийСервер"
|
||
Или ПолеОтбора = "ОсновнойIPПорт"
|
||
Или ПолеОтбора = "ВспомогательныйIPПорт"
|
||
Или ПолеОтбора = "РазделениеДанныхСеанса"
|
||
Тогда
|
||
СтруктураЗначенийОтбора = ПолучитьЗначенияОтбораЖурналаРегистрации(ПолеОтбора, ИмяФайла);
|
||
ВозможныеЗначения = СтруктураЗначенийОтбора[ирОбщий.ПеревестиСтроку(ПолеОтбора)];
|
||
Иначе
|
||
ВозможныеЗначения = Неопределено;
|
||
КонецЕсли;
|
||
Если ВозможныеЗначения <> Неопределено Тогда
|
||
Если ТипЗнч(ВозможныеЗначения) = Тип("СписокЗначений") Тогда
|
||
СписокВыбора = ВозможныеЗначения;
|
||
ИначеЕсли ТипЗнч(ВозможныеЗначения) = Тип("Массив") Тогда
|
||
СписокВыбора = Новый СписокЗначений;
|
||
СписокВыбора.ЗагрузитьЗначения(ВозможныеЗначения);
|
||
СписокВыбора.СортироватьПоЗначению();
|
||
ИначеЕсли ТипЗнч(ВозможныеЗначения) = Тип("Соответствие") Тогда
|
||
СписокВыбора = Новый СписокЗначений;
|
||
Для Каждого КлючИЗначение Из ВозможныеЗначения Цикл
|
||
СписокВыбора.Добавить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
|
||
КонецЦикла;
|
||
СписокВыбора.СортироватьПоПредставлению();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат СписокВыбора;
|
||
|
||
КонецФункции
|
||
|
||
Функция УстановитьОписаниеТиповЗначенияОтбора(СтрокаОтбора) Экспорт
|
||
|
||
ПолеОтбора = СтрокаОтбора.Поле;
|
||
МетаРеквизит = Метаданные().ТабличныеЧасти.ТаблицаЖурнала.Реквизиты[ПолеОтбора];
|
||
БазовоеОписаниеТипов = МетаРеквизит.Тип;
|
||
Если Ложь
|
||
Или ПолеОтбора = "Уровень"
|
||
Или ПолеОтбора = "СтатусТранзакции"
|
||
Или ПолеОтбора = "Пользователь"
|
||
Или ПолеОтбора = "Компьютер"
|
||
Или ПолеОтбора = "ИмяПриложения"
|
||
Или ПолеОтбора = "Событие"
|
||
Или ПолеОтбора = "Метаданные"
|
||
Или ПолеОтбора = "РабочийСервер"
|
||
Или ПолеОтбора = "ОсновнойIPПорт"
|
||
Или ПолеОтбора = "ВспомогательныйIPПорт"
|
||
Или ПолеОтбора = "РазделениеДанныхСеанса"
|
||
Тогда
|
||
ОписаниеТипов = Новый ОписаниеТипов("СписокЗначений");
|
||
ИначеЕсли ПолеОтбора = "Сеанс" Тогда
|
||
ОписаниеТипов = Новый ОписаниеТипов(БазовоеОписаниеТипов, "СписокЗначений");
|
||
Иначе
|
||
ОписаниеТипов = БазовоеОписаниеТипов;
|
||
КонецЕсли;
|
||
СтрокаОтбора.ОписаниеТипов = ОписаниеТипов;
|
||
СтрокаОтбора.Значение = ОписаниеТипов.ПривестиЗначение(СтрокаОтбора.Значение);
|
||
СтрокаОтбора.Представление = МетаРеквизит.Представление();
|
||
Если МетаРеквизит.Имя = "Данные" Тогда
|
||
//СтрокаОтбора.Представление = "Данные (медленно!)";
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
Функция ДобавитьЭлементОтбора(Отбор, ПолеОтбора = "Данные", Знач ЗначениеОтбора = Неопределено, ПредставлениеЗначения = Неопределено,
|
||
Использование = Истина, ОставлятьСтарыеПометки = Истина) Экспорт
|
||
|
||
Если ПолеОтбора = "Уровень" И ТипЗнч(ЗначениеОтбора) = Тип("Строка") Тогда
|
||
ЗначениеОтбора = УровеньЖурналаРегистрации[ЗначениеОтбора];
|
||
КонецЕсли;
|
||
ДоступныеЗначенияЭлементаОтбора = ПолучитьСписокЗначенийЭлементаОтбора(ПолеОтбора);
|
||
СтрокаОтбора = Отбор.Найти(ПолеОтбора);
|
||
Если СтрокаОтбора = Неопределено Тогда
|
||
СтрокаОтбора = Отбор.Добавить();
|
||
СтрокаОтбора.Поле = ПолеОтбора;
|
||
СтрокаОтбора.Значение = ДоступныеЗначенияЭлементаОтбора;
|
||
КонецЕсли;
|
||
УстановитьОписаниеТиповЗначенияОтбора(СтрокаОтбора);
|
||
ирОбщий.ПрисвоитьЕслиНеРавноЛкс(СтрокаОтбора.Использование, Использование);
|
||
Если ТипЗнч(СтрокаОтбора.Значение) = Тип("СписокЗначений") Тогда
|
||
СписокВыбора = СтрокаОтбора.Значение;
|
||
Если Не ОставлятьСтарыеПометки Тогда
|
||
СписокВыбора.ЗаполнитьПометки(Ложь);
|
||
КонецЕсли;
|
||
Если ТипЗнч(ЗначениеОтбора) <> Тип("СписокЗначений") Тогда
|
||
лПустышка = ЗначениеОтбора;
|
||
ЗначениеОтбора = Новый СписокЗначений;
|
||
ЗначениеОтбора.Добавить(лПустышка, , Истина);
|
||
КонецЕсли;
|
||
Для Каждого ЭлементСписка Из СписокВыбора Цикл
|
||
ЭлементСтарогоСписка = ЗначениеОтбора.НайтиПоЗначению(ЭлементСписка.Значение);
|
||
Если ЭлементСтарогоСписка <> Неопределено Тогда
|
||
ЭлементСписка.Пометка = ЭлементСтарогоСписка.Пометка;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Для Каждого ДоступноеЗначение Из ДоступныеЗначенияЭлементаОтбора Цикл
|
||
ЭлементСписка = СписокВыбора.НайтиПоЗначению(ДоступноеЗначение.Значение);
|
||
Если ЭлементСписка = Неопределено Тогда
|
||
ЭлементСписка = СписокВыбора.Добавить();
|
||
КонецЕсли;
|
||
ЗаполнитьЗначенияСвойств(ЭлементСписка, ДоступноеЗначение,, "Пометка");
|
||
КонецЦикла;
|
||
СписокВыбора.СортироватьПоПредставлению();
|
||
Иначе
|
||
Если ЗначениеОтбора = Неопределено Тогда
|
||
ЗначениеОтбора = СтрокаОтбора.Значение;
|
||
КонецЕсли;
|
||
СтрокаОтбора.Значение = СтрокаОтбора.ОписаниеТипов.ПривестиЗначение(ЗначениеОтбора);
|
||
КонецЕсли;
|
||
Возврат СтрокаОтбора;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаполнитьОтбор() Экспорт
|
||
|
||
СписокУровнейОтбора = Новый СписокЗначений;
|
||
СписокУровнейОтбора.Добавить(УровеньЖурналаРегистрации.Ошибка,, Истина);
|
||
СписокУровнейОтбора.Добавить(УровеньЖурналаРегистрации.Предупреждение,, Истина);
|
||
ДобавитьЭлементОтбора(Отбор, "Уровень", СписокУровнейОтбора);
|
||
ДобавитьЭлементОтбора(Отбор, "Комментарий");
|
||
ДобавитьЭлементОтбора(Отбор, "Пользователь");
|
||
ДобавитьЭлементОтбора(Отбор, "Событие");
|
||
ДобавитьЭлементОтбора(Отбор, "СтатусТранзакции");
|
||
ДобавитьЭлементОтбора(Отбор, "ИмяПриложения");
|
||
ДобавитьЭлементОтбора(Отбор, "Данные");
|
||
ДобавитьЭлементОтбора(Отбор, "Метаданные");
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПолучитьДанные(НачалоПериода = Неопределено, КонецПериода = Неопределено, СтруктураОтбора = Неопределено, МаксимальныйРазмерВыгрузки = Неопределено) Экспорт
|
||
|
||
//ЗаполнитьОтбор();
|
||
Если НачалоПериода <> Неопределено Тогда
|
||
ЭтотОбъект.НачалоПериода = НачалоПериода;
|
||
Иначе
|
||
ЭтотОбъект.НачалоПериода = НачалоДня(ТекущаяДата());
|
||
КонецЕсли;
|
||
Если КонецПериода <> Неопределено Тогда
|
||
ЭтотОбъект.КонецПериода = КонецПериода;
|
||
Иначе
|
||
ЭтотОбъект.КонецПериода = Неопределено;
|
||
КонецЕсли;
|
||
Если МаксимальныйРазмерВыгрузки <> Неопределено Тогда
|
||
ЭтотОбъект.МаксимальныйРазмерВыгрузки = МаксимальныйРазмерВыгрузки;
|
||
КонецЕсли;
|
||
Если СтруктураОтбора <> Неопределено Тогда
|
||
Для Каждого КлючИЗначение Из СтруктураОтбора Цикл
|
||
ДобавитьЭлементОтбора(ЭтотОбъект.Отбор, КлючИЗначение.Ключ, КлючИЗначение.Значение);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
ЗагрузитьДанныеЖурнала();
|
||
Возврат ТаблицаЖурнала;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗагрузитьДанныеЖурнала() Экспорт
|
||
|
||
Фильтр = ПолучитьФильтрВыгрузкиЖурнала();
|
||
#Если Сервер И Не Сервер Тогда
|
||
Фильтр = Новый Структура;
|
||
#КонецЕсли
|
||
НачалоИнтервала = ТекущаяДата();
|
||
ЭтотОбъект.ТаблицаЗначенийЖурнала = Новый ТаблицаЗначений;
|
||
Если Фильтр.Свойство("Данные") Тогда
|
||
// Антибаг платформы 8.3.8-14 https://partners.v8.1c.ru/forum/t/1807905/m/1807905
|
||
МаксимальныйРазмерВыгрузкиТекущий = 0;
|
||
Иначе
|
||
МаксимальныйРазмерВыгрузкиТекущий = МаксимальныйРазмерВыгрузки;
|
||
КонецЕсли;
|
||
Если АнализироватьТранзакцииСУчастиемОбъекта Тогда
|
||
#Если Клиент Тогда
|
||
Состояние("Анализ транзакций журнала...");
|
||
#КонецЕсли
|
||
ТаблицаТранзакций = Новый ТаблицаЗначений;
|
||
ВыгрузитьЖурналРегистрации(ТаблицаТранзакций, Фильтр,, ИмяФайла, МаксимальныйРазмерВыгрузкиТекущий);
|
||
ТаблицаТранзакций.Свернуть("Транзакция");
|
||
ТаблицаТранзакций.Сортировать("Транзакция");
|
||
Транзакции = ТаблицаТранзакций.ВыгрузитьКолонку("Транзакция");
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(Транзакции.Количество(), "Выгрузка журнала по транзакциям");
|
||
ФильтрТранзакции = ирОбщий.СкопироватьУниверсальнуюКоллекциюЛкс(Фильтр);
|
||
Для Каждого Транзакция Из Транзакции Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
//ФильтрТранзакции.Вставить("Транзакция", ирОбщий.ПолучитьСтрокуМеждуМаркерамиЛкс(Транзакция, "(",")"));
|
||
ФильтрТранзакции.Вставить("Транзакция", Транзакция);
|
||
Если Транзакция <> "" Тогда
|
||
ФильтрТранзакции.Удалить("Данные");
|
||
КонецЕсли;
|
||
ТаблицаТранзакции = Новый ТаблицаЗначений;
|
||
Если МаксимальныйРазмерВыгрузкиТекущий > 0 Тогда
|
||
МаксимальныйРазмерВыгрузкиТекущий = МаксимальныйРазмерВыгрузкиТекущий - ТаблицаЗначенийЖурнала.Количество();
|
||
КонецЕсли;
|
||
ВыгрузитьЖурналРегистрации(ТаблицаТранзакции, ФильтрТранзакции,, ИмяФайла, МаксимальныйРазмерВыгрузкиТекущий);
|
||
Если Транзакция = "" Тогда
|
||
ТаблицаТранзакции = ТаблицаТранзакции.Скопировать(Новый Структура("Транзакция", ""));
|
||
КонецЕсли;
|
||
ТаблицаТранзакции.Колонки.Добавить("ПорядокСтроки", Новый ОписаниеТипов("Число"));
|
||
Для Счетчик = 1 По ТаблицаТранзакции.Количество() Цикл
|
||
ТаблицаТранзакции[Счетчик - 1].ПорядокСтроки = ТаблицаЗначенийЖурнала.Количество() + Счетчик;
|
||
КонецЦикла;
|
||
Если ТаблицаЗначенийЖурнала.Колонки.Количество() = 0 Тогда
|
||
ТаблицаЗначенийЖурнала = ТаблицаТранзакции;
|
||
Иначе
|
||
ирОбщий.ЗагрузитьВТаблицуЗначенийЛкс(ТаблицаТранзакции, ТаблицаЗначенийЖурнала);
|
||
КонецЕсли;
|
||
Если МаксимальныйРазмерВыгрузкиТекущий > 0 И ТаблицаЗначенийЖурнала.Количество() >= МаксимальныйРазмерВыгрузкиТекущий Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
//ТаблицаЗначенийЖурнала.Индексы.Добавить("Дата, ПорядокСтроки");
|
||
//ТаблицаЗначенийЖурнала.Сортировать("Дата, ПорядокСтроки");
|
||
Иначе
|
||
#Если Клиент Тогда
|
||
Состояние("Выборка из журнала регистрации...");
|
||
#КонецЕсли
|
||
ВыгрузитьЖурналРегистрации(ТаблицаЗначенийЖурнала, Фильтр,, ИмяФайла, МаксимальныйРазмерВыгрузкиТекущий);
|
||
ТаблицаЗначенийЖурнала.Колонки.Добавить("ПорядокСтроки", Новый ОписаниеТипов("Число"));
|
||
Для Счетчик = 1 По ТаблицаЗначенийЖурнала.Количество() Цикл
|
||
ТаблицаЗначенийЖурнала[Счетчик - 1].ПорядокСтроки = Счетчик;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
ТаблицаЗначенийЖурнала.Индексы.Добавить("ПорядокСтроки");
|
||
ТаблицаЗначенийЖурнала.Сортировать("ПорядокСтроки");
|
||
ирОбщий.ПеревестиКолонкиВыгрузитьЖурналРегистрацииЛкс(ТаблицаЗначенийЖурнала);
|
||
ТаблицаЖурнала.Загрузить(ТаблицаЗначенийЖурнала);
|
||
ЭтотОбъект.КоличествоСтрокЖурнала = ТаблицаЖурнала.Количество();
|
||
КонецИнтервала = ТекущаяДата();
|
||
#Если Клиент Тогда
|
||
Состояние("");
|
||
#КонецЕсли
|
||
|
||
ДлительностьИнтервала = КонецИнтервала - НачалоИнтервала;
|
||
Если ВыводитьДлительностьВыгрузки Или ДлительностьИнтервала > 5 Тогда
|
||
КолвоЧасов = Цел(ДлительностьИнтервала / 3600);
|
||
ДлительностьИнтервалаДата = '00010101' + (КонецИнтервала - НачалоИнтервала) - КолвоЧасов * 3600;
|
||
ДлительностьИнтервалаСтр = Формат(КолвоЧасов, "ЧН=; ЧГ=0") + ":" + Формат(ДлительностьИнтервалаДата, "ДФ=мм:сс; ДП=");
|
||
ИспользованныйВариант = ОписаниеВариантаОтбора(Истина);
|
||
ПредставлениеОтбора = ПредставлениеВариантаОтбора(ИспользованныйВариант);
|
||
Сообщить("Выгрузка данных журнала выполнена за " + ДлительностьИнтервалаСтр + ". Отбор - " + ПредставлениеОтбора);
|
||
КонецЕсли;
|
||
Если МаксимальныйРазмерВыгрузки > 0 И МаксимальныйРазмерВыгрузки = ТаблицаЖурнала.Количество() Тогда
|
||
Сообщить("Выгрузка прервана по максимально допустимому количеству сообщений");
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ОписаниеВариантаОтбора(Полное = Ложь) Экспорт
|
||
|
||
Результат = Новый Структура;
|
||
Если Полное Или ЗначениеЗаполнено(КонецПериода) Тогда
|
||
Результат.Вставить("НачалоПериода", НачалоПериода);
|
||
Результат.Вставить("КонецПериода", КонецПериода);
|
||
КонецЕсли;
|
||
Результат.Вставить("МаксимальныйРазмерВыгрузки", МаксимальныйРазмерВыгрузки);
|
||
Результат.Вставить("Отбор", Отбор);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПредставлениеВариантаОтбора(Знач СохраняемыйВариант) Экспорт
|
||
|
||
ИмяВарианта = "";
|
||
Если СохраняемыйВариант.Свойство("НачалоПериода") И ЗначениеЗаполнено(СохраняемыйВариант.НачалоПериода) Тогда
|
||
ИмяВарианта = ИмяВарианта + " С " + СохраняемыйВариант.НачалоПериода;
|
||
КонецЕсли;
|
||
Если СохраняемыйВариант.Свойство("КонецПериода") И ЗначениеЗаполнено(СохраняемыйВариант.КонецПериода) Тогда
|
||
ИмяВарианта = ИмяВарианта + " По " + СохраняемыйВариант.КонецПериода;
|
||
КонецЕсли;
|
||
Если ЗначениеЗаполнено(СохраняемыйВариант.МаксимальныйРазмерВыгрузки) Тогда
|
||
ИмяВарианта = ИмяВарианта + " Количество <= " + СохраняемыйВариант.МаксимальныйРазмерВыгрузки;
|
||
КонецЕсли;
|
||
Для Каждого СтрокаОтбора Из СохраняемыйВариант.Отбор Цикл
|
||
ИспользованиеСтрокиОтбора = ИспользованиеСтрокиОтбора(СтрокаОтбора);
|
||
Если ТипЗнч(СтрокаОтбора.Значение) = Тип("СписокЗначений") И СтрокаОтбора.Значение.ТипЗначения.Типы().Количество() = 0 Тогда
|
||
ПредставлениеСтрокиОтбора = ПредставлениеСтрокиОтбора(СтрокаОтбора,, 3);
|
||
ИспользованиеСтрокиОтбора = ИспользованиеСтрокиОтбора И ЗначениеЗаполнено(ПредставлениеСтрокиОтбора);
|
||
Иначе
|
||
ПредставлениеСтрокиОтбора = "" + СтрокаОтбора.Значение;
|
||
КонецЕсли;
|
||
Если ИспользованиеСтрокиОтбора Тогда
|
||
ИмяВарианта = ИмяВарианта + "; " + СтрокаОтбора.Представление + " = " + ПредставлениеСтрокиОтбора;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Возврат ИмяВарианта;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПредставлениеСтрокиОтбора(Знач ДанныеСтроки, выхКоличествоПомеченных = 0, МаксЭлементов = 20) Экспорт
|
||
|
||
Результат = "";
|
||
Если ДанныеСтроки.Значение <> Неопределено Тогда
|
||
выхКоличествоПомеченных = 0;
|
||
Для Каждого ЭлементСписка Из ДанныеСтроки.Значение Цикл
|
||
Если ЭлементСписка.Пометка Тогда
|
||
выхКоличествоПомеченных = выхКоличествоПомеченных + 1;
|
||
Если выхКоличествоПомеченных < МаксЭлементов Тогда
|
||
Если Результат <> "" Тогда
|
||
Результат = Результат + "; ";
|
||
КонецЕсли;
|
||
ПредставлениеЭлемента = ЭлементСписка.Представление;
|
||
Если Не ЗначениеЗаполнено(ПредставлениеЭлемента) Тогда
|
||
ПредставлениеЭлемента = ЭлементСписка.Значение;
|
||
КонецЕсли;
|
||
Результат = Результат + ПредставлениеЭлемента;
|
||
ИначеЕсли выхКоличествоПомеченных = МаксЭлементов Тогда
|
||
Результат = Результат + "...";
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ИспользованиеСтрокиОтбора(Знач СтрокаОтбора) Экспорт
|
||
|
||
ИспользованиеСтрокиОтбора = СтрокаОтбора.Использование;
|
||
Если ИспользованиеСтрокиОтбора Тогда
|
||
Если СтрокаОтбора.Поле = "Данные" Тогда
|
||
ИспользованиеСтрокиОтбора = СтрокаОтбора.Значение <> Неопределено;
|
||
ИначеЕсли ТипЗнч(СтрокаОтбора.Значение) = Тип("Строка") Тогда
|
||
ИспользованиеСтрокиОтбора = ЗначениеЗаполнено(СтрокаОтбора.Значение);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат ИспользованиеСтрокиОтбора;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПолучитьФильтрВыгрузкиЖурнала()
|
||
|
||
Фильтр = Новый Структура;
|
||
Если ЗначениеЗаполнено(НачалоПериода) Тогда
|
||
Фильтр.Вставить("ДатаНачала", НачалоПериода);
|
||
КонецЕсли;
|
||
Если ЗначениеЗаполнено(КонецПериода) Тогда
|
||
Фильтр.Вставить("ДатаОкончания", КонецПериода);
|
||
КонецЕсли;
|
||
Для Каждого СтрокаОтбора Из Отбор Цикл
|
||
ЗначениеОтбора = СтрокаОтбора.Значение;
|
||
Если Истина
|
||
И ЗначениеОтбора = Неопределено
|
||
И СтрокаОтбора.Поле <> "Данные"
|
||
Тогда
|
||
СтрокаОтбора.Использование = Ложь;
|
||
КонецЕсли;
|
||
Если Не СтрокаОтбора.Использование Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Если ТипЗнч(ЗначениеОтбора) = Тип("СписокЗначений") Тогда
|
||
Если ЗначениеОтбора.ТипЗначения.Типы().Количество() = 0 Тогда
|
||
СписокЗначений = ЗначениеОтбора;
|
||
ЗначениеОтбора = Новый Массив();
|
||
Для Каждого ЭлементСписка Из СписокЗначений Цикл
|
||
Если ЭлементСписка.Пометка Тогда
|
||
Если СтрокаОтбора.Поле = "Пользователь" Тогда
|
||
ЗначениеЭлемента = ЭлементСписка.Представление;
|
||
Иначе
|
||
ЗначениеЭлемента = ЭлементСписка.Значение;
|
||
КонецЕсли;
|
||
ЗначениеОтбора.Добавить(ЗначениеЭлемента);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Иначе
|
||
ЗначениеОтбора = ЗначениеОтбора.ВыгрузитьЗначения();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Фильтр.Вставить(СтрокаОтбора.Поле, ЗначениеОтбора);
|
||
КонецЦикла;
|
||
Возврат Фильтр;
|
||
|
||
КонецФункции
|
||
|
||
#Если Клиент Тогда
|
||
|
||
Функция ОткрытьСПараметром(ПолеОтбора = "Данные", ЗначениеОтбора, ПредставлениеЗначения = Неопределено) Экспорт
|
||
|
||
Форма = ПолучитьФорму(,, ЗначениеОтбора);
|
||
Форма.Открыть();
|
||
Форма.Отбор.ЗаполнитьЗначения(Ложь, "Использование");
|
||
Форма.НачалоПериода = НачалоДня(ТекущаяДата());
|
||
Форма.КонецПериода = Неопределено;
|
||
ДобавитьЭлементОтбора(Форма.Отбор, ПолеОтбора, ЗначениеОтбора, ПредставлениеЗначения);
|
||
Ответ = Вопрос("Сразу выполнить выгрузку с текущим отбором?", РежимДиалогаВопрос.ОКОтмена);
|
||
Если Ответ = КодВозвратаДиалога.ОК Тогда
|
||
Форма.ОбновитьТаблицуЖурнала();
|
||
КонецЕсли;
|
||
Возврат Форма;
|
||
|
||
КонецФункции
|
||
|
||
Функция ОткрытьСОтбором(НачалоПериода = Неопределено, КонецПериода = Неопределено, СтруктураОтбора = Неопределено, МаксимальныйРазмерВыгрузки = Неопределено) Экспорт
|
||
|
||
Форма = ПолучитьФорму(,,);
|
||
Форма.Открыть();
|
||
Форма.Отбор.ЗаполнитьЗначения(Ложь, "Использование");
|
||
Если НачалоПериода <> Неопределено Тогда
|
||
Форма.НачалоПериода = НачалоПериода;
|
||
Иначе
|
||
Форма.НачалоПериода = НачалоДня(ТекущаяДата());
|
||
КонецЕсли;
|
||
Если КонецПериода <> Неопределено Тогда
|
||
Форма.КонецПериода = КонецПериода;
|
||
Иначе
|
||
Форма.КонецПериода = Неопределено;
|
||
КонецЕсли;
|
||
Если МаксимальныйРазмерВыгрузки <> Неопределено Тогда
|
||
Форма.МаксимальныйРазмерВыгрузки = МаксимальныйРазмерВыгрузки;
|
||
КонецЕсли;
|
||
Если СтруктураОтбора <> Неопределено Тогда
|
||
Для Каждого КлючИЗначение Из СтруктураОтбора Цикл
|
||
ДобавитьЭлементОтбора(Форма.Отбор, КлючИЗначение.Ключ, КлючИЗначение.Значение);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Ответ = Вопрос("Сразу выполнить выгрузку с текущим отбором?", РежимДиалогаВопрос.ОКОтмена);
|
||
Если Ответ = КодВозвратаДиалога.ОК Тогда
|
||
Форма.ОбновитьТаблицуЖурнала();
|
||
КонецЕсли;
|
||
Возврат Форма;
|
||
|
||
КонецФункции
|
||
|
||
#КонецЕсли
|
||
|
||
//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
|
||
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
|
||
//ирПортативный #Если Клиент Тогда
|
||
//ирПортативный Контейнер = Новый Структура();
|
||
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
|
||
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
|
||
//ирПортативный ирПортативный.Открыть();
|
||
//ирПортативный КонецЕсли;
|
||
//ирПортативный #Иначе
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
|
||
//ирПортативный #КонецЕсли
|
||
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
|
||
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
|
||
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
|
||
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");
|
||
|
||
Отбор.Колонки.Добавить("Использование", Новый ОписаниеТипов("Булево"));
|
||
Отбор.Колонки.Добавить("Поле", Новый ОписаниеТипов("Строка"));
|
||
Отбор.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
|
||
Отбор.Колонки.Добавить("ОписаниеТипов", Новый ОписаниеТипов("ОписаниеТипов"));
|
||
Отбор.Колонки.Добавить("Значение");
|
||
ЭтотОбъект.МаксимальныйРазмерВыгрузки = 1000;
|