Оптимизация

&НаСервере
Процедура ВыполнитьПаралельноНаСервере()

	МассивЗаданий = Новый Массив;
	Для Каждого ТекСтрока ИЗ ТЗСклады Цикл

		НаборПараметров = Новый Массив;
		НаборПараметров.Добавить("%ЗначениеПараметра1%");
		НаборПараметров.Добавить("%ЗначениеПараметраN%");

		// запуск фонового задания
		Задание = ФоновыеЗадания.Выполнить("%ОбщийСерверныйМодуль%.%Имяпроцедуры%", НаборПараметров);

		// добавляем задание в массив, что бы потом отследить выполнение
		МассивЗаданий.Добавить(Задание);
		
	КонецЦикла;

	// проверим результат выполнения фоновых заданий	
	Если МассивЗаданий.Количество() > 0 Тогда
		Попытка
			ФоновыеЗадания.ОжидатьЗавершения(МассивЗаданий);
		Исключение
			// действия в случае ошибки
		КонецПопытки;        
	КонецЕсли;
	
КонецПроцедуры // ВыполнитьПаралельно()
on Четверг сентября 17 by Администратор
Was this helpful?

Не рекомендуется в обработчике "ПриАктивизацииСтроки" обращаться на сервер. Если без этого нельзя обойтись, то следует помнить, что если в серверном вызове были изменены свойства элементов, которые влияют на внешний вид формы, то на клиент вернётся новое описание формы, и будет заново вызван обработчик "ПриАктивизацииСтроки".

Если нельзя уйти от вызова сервера, следует использовать следующий типовой приём:

В начале модуля формы:

&НаКлиенте
Перем ПредыдущаяСтрока;

Изменённый обработчик "ПриАктивизацииСтроки":

&НаКлиенте
Процедура СпрПриАктивизацииСтроки(Элемент)
    Если Элементы.Спр.ТекущаяСтрока = ПредыдущаяСтрока Тогда
        Возврат;
    КонецЕсли;
  
    ПредыдущаяСтрока = Элементы.Спр.ТекущаяСтрока;
    ПодключитьОбработчикОжидания("ОтборВДеревеДополнительныхПрав", 0.2, Истина);
КонецПроцедуры
on Четверг декабря 24 by Администратор
Was this helpful?

Регулярные выражения (Regexp)

&НаКлиентеНаСервереБезКонтекста
Функция РазобратьТекст(ИсходныйТекст, Шаблон)

    Попытка
       
RegExp = Новый COMОбъект("VBScript.RegExp");
    Исключение
        Возврат Новый
Массив;
    КонецПопытки;


   
RegExp.Multiline  = Истина;
   
RegExp.Global     = Истина;
   
RegExp.IgnoreCase = Истина;
   
RegExp.Pattern    = Шаблон;

   
РезультатРазбора = RegExp.Execute(ИсходныйТекст);
   
Результат        = Новый Массив;

    Для каждого
Item Из РезультатРазбора Цикл
       
Результат.Добавить(Item.Value);
    КонецЦикла;

    Возврат
Результат

КонецФункции

on Четверг сентября 17 by Администратор
Was this helpful?

Системы счисления

Функция ПереводЧислаИз_10_В_Любую(Знач Значение=0,Нотация=36) Экспорт
	
	Если Нотация <= 0 Тогда Возврат("") КонецЕсли;
	
	Значение = Число(Значение);
	
	Если Значение<=0 Тогда Возврат("0") КонецЕсли;
	
	Значение  = Цел(Значение);
	Результат = "";
	
	Пока Значение > 0 Цикл
		Результат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%Нотация+1,1)+Результат;
		Значение = Цел(Значение/Нотация) ;
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции
on Четверг сентября 17 by Администратор
Was this helpful?

Файловая система

&НаКлиентеНаСервереБезКонтекста
Функция РазмерКаталога(ПутьККаталогу)

   
ФСО = Новый COMОбъект("Scripting.FileSystemObject");
   
ИнформацияПоКаталогу = ФСО.GetFolder(ПутьККаталогу);

    Возврат 
ИнформацияПоКаталогу.Size;

КонецФункции

on Четверг сентября 17 by Администратор
Was this helpful?

Прочее

&НаСервере
// Определяет, является ли символ разделителем.
//
// Параметры:
//  КодСимвола      - Число  - код проверяемого символа;
//  РазделителиСлов - Строка - символы разделителей.
//
// Возвращаемое значение:
//  Булево - истина, если символ является разделителем.
//
Функция ЭтоРазделительСлов(КодСимвола, РазделителиСлов = Неопределено) Экспорт

    Если
РазделителиСлов <> Неопределено Тогда
        Возврат
Найти(РазделителиСлов, Символ(КодСимвола)) > 0;
    КонецЕсли;

   
Диапазоны = Новый Массив;
   
Диапазоны.Добавить(Новый Структура("Мин,Макс", 48, 57)); // цифры
   
Диапазоны.Добавить(Новый Структура("Мин,Макс", 65, 90)); // латиница большие
   
Диапазоны.Добавить(Новый Структура("Мин,Макс", 97, 122)); // латиница маленькие
   
Диапазоны.Добавить(Новый Структура("Мин,Макс", 1040, 1103)); // кириллица
   
Диапазоны.Добавить(Новый Структура("Мин,Макс", 1025, 1025)); // символ "Ё"
   
Диапазоны.Добавить(Новый Структура("Мин,Макс", 1105, 1105)); // символ "ё"
   
Диапазоны.Добавить(Новый Структура("Мин,Макс", 95, 95)); // символ "_"
   
Для Каждого Диапазон Из Диапазоны Цикл
        Если
КодСимвола >= Диапазон.Мин И КодСимвола <= Диапазон.Макс Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;

    Возврат Истина;

КонецФункции

&НаСервере
// Разбивает строку на несколько строк, используя заданный набор разделителей.
// Если параметр РазделителиСлов не задан, то разделителем слов считается любой из символов,
// не относящихся к символам латиницы, кириллицы, цифры, подчеркивания.
//
// Параметры:
//  Строка          - Строка - строка, которую необходимо разложить на слова.
//  РазделителиСлов - Строка - строка, содержащая символы-разделители.
//
//  Возвращаемое значение:
//      массив значений, элементы которого - отдельные слова.
//
// Пример:
//  РазложитьСтрокуВМассивСлов("один-@#два2_!три") возвратит массив значений: "один", "два2_", "три";
//  РазложитьСтрокуВМассивСлов("один-@#два2_!три", "#@!_") возвратит массив значений: "один-", "два2", "три".
//
Функция РазложитьСтрокуВМассивСлов(Знач Строка, РазделителиСлов = Неопределено) Экспорт

   
Слова = Новый Массив;

   
РазмерТекста = СтрДлина(Строка);
   
НачалоСлова = 1;
    Для
Позиция = 1 По РазмерТекста Цикл
       
КодСимвола = КодСимвола(Строка, Позиция);
        Если
ЭтоРазделительСлов(КодСимвола, РазделителиСлов) Тогда
            Если
Позиция <> НачалоСлова Тогда
               
Слова.Добавить(Сред(Строка, НачалоСлова, Позиция - НачалоСлова));
            КонецЕсли;
           
НачалоСлова = Позиция + 1;
        КонецЕсли;
    КонецЦикла;

    Если
Позиция <> НачалоСлова Тогда
       
Слова.Добавить(Сред(Строка, НачалоСлова, Позиция - НачалоСлова));
    КонецЕсли;

    Возврат
Слова;

КонецФункции

&НаСервере
///  Объединяет строки из массива в строку с разделителями.
//
// Параметры:
//  Массив      - Массив - массив строк которые необходимо объединить в одну строку;
//  Разделитель - Строка - любой набор символов, который будет использован в качестве разделителя.
//
// Возвращаемое значение:
//  Строка - строка с разделителями.
//
Функция СтрокаИзМассиваПодстрок(Массив, Разделитель = ",", СокращатьНепечатаемыеСимволы = Ложь) Экспорт

   
Результат = "";

    Для
Индекс = 0 По Массив.ВГраница() Цикл

       
Подстрока = Массив[Индекс];

        Если
СокращатьНепечатаемыеСимволы Тогда
           
Подстрока = СокрЛП(Подстрока);
        КонецЕсли;

        Если
ТипЗнч(Подстрока) <> Тип("Строка") Тогда
           
Подстрока = Строка(Подстрока);
        КонецЕсли;

        Если
Индекс > 0 Тогда
           
Результат = Результат + Разделитель;
        КонецЕсли;

       
Результат = Результат + Подстрока;
    КонецЦикла;

    Возврат
Результат;

КонецФункции

&НаСервере
// Разделяет текст на слова по указанным разделителям. По умолчанию разделители - пробельные символы.
//
// Параметры:
//     Текст       - Строка - Разделяемая строка.
//     Разделители - Строка - Необязательная строка символов-разделителей.
//
// Возвращаемое значение:
//     Массив - строки, слова
//
Функция СловаТекста(Знач Текст, Знач Разделители = Неопределено) Экспорт

   
НачалоСлова = 0;
   
Состояние   = 0;
   
Результат   = Новый Массив;

    Для
Позиция = 1 По СтрДлина(Текст) Цикл

       
ТекущийСимвол = Сред(Текст, Позиция, 1);
       
ЭтоРазделитель = ?(Разделители = Неопределено, ПустаяСтрока(ТекущийСимвол), Найти(Разделители, ТекущийСимвол) > 0);

        Если
Состояние = 0 И (Не ЭтоРазделитель) Тогда
           
НачалоСлова = Позиция;
           
Состояние   = 1;
        ИначеЕсли
Состояние = 1 И ЭтоРазделитель Тогда
           
Результат.Добавить(Сред(Текст, НачалоСлова, Позиция-НачалоСлова));
           
Состояние = 0;
        КонецЕсли;
    КонецЦикла;

    Если
Состояние = 1 Тогда
       
Результат.Добавить(Сред(Текст, НачалоСлова, Позиция-НачалоСлова));
    КонецЕсли;

    Возврат
Результат;

КонецФункции

&НаСервере
Функция СократитьНеЦифры(Текст, ДопустимоКромеЦифр = "", Направление = Истина)

   
Длина = СтрДлина(Текст);
    Если
Направление Тогда
       
// Сокращение слева
       
Индекс = 1;
       
Конец  = 1 + Длина;
       
Шаг    = 1;
    Иначе
       
// Сокращение справа
       
Индекс = Длина;
       
Конец  = 0;
       
Шаг    = -1;
    КонецЕсли;

    Пока
Индекс <> Конец Цикл
       
Символ = Сред(Текст, Индекс, 1);
       
ЭтоЦифра = (Символ >= "0" И Символ <= "9") Или Найти(ДопустимоКромеЦифр, Символ) = 0;
        Если
ЭтоЦифра Тогда
            Прервать;
        КонецЕсли;
       
Индекс = Индекс + Шаг;
    КонецЦикла;

    Если
Направление Тогда
       
// Сокращение слева
       
Возврат Прав(Текст, Длина - Индекс + 1);
    КонецЕсли;

   
// Сокращение справа
   
Возврат Лев(Текст, Индекс);

КонецФункции

on Четверг сентября 17 by Администратор
Was this helpful?

//{
//Если вы хотите создать предопределенные данные средствами платформы, то менять конфигурацию не нужно. Можно использовать примерно такой код:
//Нужно понимать, что этот код сработает для справочника "СправочникПример" у которого в данных нет предопределенных элементов, и у которого в метаданных есть предопределенный элемент с именем "Предопределенный".
//}

// Принудительно включаем автообновление предопределенных данных на уровне данных
Справочники.СправочникПример.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.ОбновлятьАвтоматически);

// Сбрасываем признак, что предопределенные данные инициализированы
Справочники.СправочникПример.УстановитьИнициализациюПредопределенныхДанных(Ложь);

// первое обращение к таблице справочника к предопределенному элементу
Значение = Справочники.СправочникПример.Предопределенный;

// Возвращаем автообновление предопределенных данных в исходное состояние
Справочники.СправочникПример.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.Авто);

on Четверг сентября 17 by Администратор
Was this helpful?

// Выгрузка данных из списка справочника в таблицу значений
// СправочникСписок - элемент формы список справочника
Функция ПолучитьСписокВТаблицу()

   
Построитель = Новый ПостроительЗапроса;// Создаем построитель отчетов
   
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(СправочникСписок);// Источником для построителя будет наш СправочникСписок
   
Результат = Построитель.Результат;// Получаем результат обработки построителем
   
ТаблицаЗначений = Результат.Выгрузить();// Выгужаем результат в таблицу значений

   
Воврат ТаблицаЗначений;// Возвращаем в таблице значений данные из списка справочника с учетом отборов

КонецФункции

on Четверг сентября 17 by Администратор
Was this helpful?

ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Организация"   , Организация);
ПараметрыОтбора.Вставить("БанковскийСчет", БанковскийСчет);

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
//ПараметрыФормы.Вставить("ТолькоПросмотр", Истина);

ОткрытьФорму("РегистрСведений.ИмяРегистра.Форма.ФормаСписка", ПараметрыФормы);
//ОткрытьФорму("РегистрСведений.ИмяРегистра.ФормаСписка", ПараметрыФормы);
//ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", Новый Структура("Ключ", СсылкаНаЭлементСправочника)); // открытие существующего элемента

on Четверг сентября 17 by Администратор
Was this helpful?

&НаКлиенте
Перем ВыполняетсяЗакрытие;

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)

    Если Не
Модифицированность Тогда
        Возврат;
    КонецЕсли;

    Если Не
ВыполняетсяЗакрытие Тогда
       
Отказ = Истина;
       
Показатьвопрос(Новый ОписаниеОповещения("ПередЗакрытиемЗавершение", ЭтотОбъект), НСтр("ru = 'Данные изменены. Сохранить изменения?'"), РежимДиалогаВопрос.ДаНетОтмена);
    КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытиемЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт

    Если
РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
        Возврат;
    КонецЕсли;

    Если
РезультатВопроса = КодВозвратаДиалога.Да Тогда
       
ИмяФайла = Объект.ИмяФайла;
        Если Не
ДиалогСохраненияФайла(ИмяФайла) Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;

   
ВыполняетсяЗакрытие = Истина;
   
Закрыть();

КонецПроцедуры

on Четверг сентября 17 by Администратор
Was this helpful?

// Процедура - Восстанавливает настройки из хранилища общих настроек
&НаСервере
Функция ВосстановитьНастройкиНаСервере()

    Перем
СохраненноеЗначение;

   
ключОбъекта      = "Обработка.ИмяОбработки";
   
ключНастроек     = "Обработка.ИмяОбработки.ИмяСохраняемогоПараметра";
   
описаниеНастроек = "Описание настройки";
   
имяПользователя  = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;

   
ЗначениеНастроек = ХранилищеОбщихНастроек.Загрузить(ключОбъекта, ключНастроек, описаниеНастроек, имяПользователя);
    Если
ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
       
СохраненноеЗначение = ЗначениеНастроек.Получить("ИмяСохраняемогоПараметра");
    КонецЕсли;

    Возврат
СохраненноеЗначение

КонецФункции // ВосстановитьНастройкиНаСервере()

// Процедура - Сохраняет настройки в хранилище общих настроек
&НаСервере
Процедура СохранитьНастройки()

   
ключОбъекта      = "Обработка.ИмяОбработки";
   
ключНастроек     = "Обработка.ИмяОбработки.ИмяСохраняемогоПараметра";
   
описаниеНастроек = "Описание настройки";
   
имяПользователя  = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;

   
настройки = Новый Соответствие;
   
настройки.Вставить("ИмяСохраняемогоПараметра", СохраняемоеЗначение);

   
ХранилищеОбщихНастроек.Сохранить(ключОбъекта, ключНастроек, настройки, описаниеНастроек, имяПользователя);

КонецПроцедуры
// СохранитьНастройки()

on Четверг сентября 17 by Администратор
Was this helpful?

fso = Новый COMОбъект("scripting.fileSystemObject");
Сообщить(Окр(Число(fso.getDrive(fso.GetDriveName("d:\")).freeSpace())/1024/1024, 2));

on Четверг сентября 17 by Администратор
Was this helpful?

// Автор: Сергей (ildarovich, http://infostart.ru/profile/28527/)
Функция СтрокаВДату(Знач ФорматДаты, Знач СтрокаСДатой, Ошибка = Ложь) Экспорт

    Попытка
       
тест = Формат('00010101', "ДФ=" + ФорматДаты) // - проверка корректности параметра ФорматДата
   
Исключение
       
Ошибка = Истина;
        Возврат
'00010101'
   
КонецПопытки;

   
составДаты = Новый Соответствие;                                                                                                        // - части даты
   
Для Инд = 1 По СтрДлина(ФорматДаты) + 7 Цикл
       
составДаты[Сред(ФорматДаты + "dMyHhms", Инд, 1)] = 0                                                                                // - инициализация частей даты
   
КонецЦикла;

    Для
Инд = 1 По 12 Цикл
       
СтрокаСДатой = СтрЗаменить(СтрокаСДатой, Формат(Дата(1, Инд, 1), "ДФ=MMММ"), Формат(Инд, "ЧЦ=4; ЧВН="));                            // - замена названий месяцев числами
       
СтрокаСДатой = СтрЗаменить(СтрокаСДатой, Формат(Дата(1, Инд, 1), "ДФ=MMМ" ), Формат(Инд, "ЧЦ=3; ЧВН="))
    КонецЦикла;

    Для
Инд = 1 По СтрДлина(ФорматДаты) Цикл
       
составДаты[Сред(ФорматДаты, Инд, 1)] = 10 * составДаты[Сред(ФорматДаты, Инд, 1)] + Найти("123456789", Сред(СтрокаСДатой, Инд, 1));  // - накопление частей даты
       
Ошибка = Ошибка ИЛИ Найти("dMyHhms", Сред(ФорматДаты, Инд, 1)) И НЕ Найти("0123456789", Сред(СтрокаСДатой, Инд, 1))                 // - необязательная проверка на цифры
   
КонецЦикла;

   
составДаты["y"] = составДаты["y"] + ?(составДаты["y"] < 50, 2000, ?(составДаты["y"] < 100, 1900, 0));                                   // - дополнение двух цифр года до четырех
   
Попытка
        Возврат
Дата(составДаты["y"], составДаты["M"], составДаты["d"], составДаты["H"] + составДаты["h"], составДаты["m"], составДаты["s"])
    Исключение
       
Ошибка = Истина;
        Возврат
'00010101'
   
КонецПопытки

КонецФункции
// СтрокаВДату

on Четверг сентября 17 by Администратор
Was this helpful?

// Формирует и выводит сообщение, которое может быть связано с элементом
// управления формы.
//
//  Параметры
//  ТекстСообщенияПользователю - Строка - текст сообщения.
//  КлючДанных                - Любая ссылка на объект информационной базы.
//                               Ссылка на объект информационной базы, к которому это сообщение относится,
//                               или ключ записи.
//  Поле                       - Строка - наименование реквизита формы
//  ПутьКДанным                - Строка - путь к данным (путь к реквизиту формы)
//  Отказ                      - Булево - Выходной параметр
//                               Всегда устанавливается в значение Истина
//
// Примеры использования:
//
// 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта:
// ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), ,
// "ПолеВРеквизитеФормыОбъект",
// "Объект");
//
// Альтернативный вариант использования в форме объекта:
// ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), ,
// "Объект.ПолеВРеквизитеФормыОбъект");
//
// 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы:
// ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), ,
// "ИмяРеквизитаФормы");
//
// 3. Для вывода сообщения связанного с объектом информационной базы
// ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), ОбъектИнформационнойБазы, "Ответственный",,Отказ);
//
// 4. Для вывода сообщения по ссылке на объект информационной базы
// ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), Ссылка, , , Отказ);
//
// Случаи некорректного использования:
//  1. Передача одновременно параметров КлючДанных и ПутьКДанным
//  2. Передача в параметре КлючДанных значения типа отличного от допустимых
//  3. Установка ссылки без установки поля (и/или пути к данным)
//

&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(

    Знач
ТекстСообщенияПользователю,
    Знач
КлючДанных = Неопределено,
    Знач
Поле = "",
    Знач
ПутьКДанным = "",
   
Отказ = Ложь) Экспорт

   
Сообщение = Новый СообщениеПользователю;
   
Сообщение.Текст = ТекстСообщенияПользователю;
   
Сообщение.Поле = Поле;

   
ЭтоОбъект = Ложь;

   
#Если НЕ (ТонкийКлиент ИЛИ ВебКлиент) Тогда
       
Если КлючДанных <> Неопределено
            И
XMLТипЗнч(КлючДанных) <> Неопределено Тогда

           
ТипЗначенияСтрокой = XMLТипЗнч(КлючДанных).ИмяТипа;
           
ЭтоОбъект = Найти(ТипЗначенияСтрокой, "Object.") > 0;

        КонецЕсли;
   
#КонецЕсли

   
Если ЭтоОбъект Тогда
       
Сообщение.УстановитьДанные(КлючДанных);
    Иначе
       
Сообщение.КлючДанных = КлючДанных;
    КонецЕсли;

    Если НЕ
ПустаяСтрока(ПутьКДанным) Тогда
       
Сообщение.ПутьКДанным = ПутьКДанным;
    КонецЕсли;

   
Сообщение.Сообщить();

   
Отказ = Истина;

КонецПроцедуры

on Четверг сентября 17 by Администратор
Was this helpful?

Функция СведенияОВнешнейОбработке() Экспорт

   
РегистрационныеДанные = Новый Структура();
   
РегистрационныеДанные.Вставить("Наименование", "Отчет 'xxx'");
   
РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
   
РегистрационныеДанные.Вставить("Версия", "x.xx");
   
РегистрационныеДанные.Вставить("Информация", "Отчет 'xxx");
   
РегистрационныеДанные.Вставить("Вид", "ДополнительныйОтчет");

   
тз = Новый ТаблицаЗначений;
   
тз.Колонки.Добавить("Идентификатор");
   
тз.Колонки.Добавить("Использование");
   
тз.Колонки.Добавить("Представление");

   
НоваяСтрока = тз.Добавить();
   
НоваяСтрока.Идентификатор = "ОткрытьОбработку";
   
НоваяСтрока.Использование = "ОткрытиеФормы";
   
НоваяСтрока.Представление = "Отчет 'XXX'";

   
РегистрационныеДанные.Вставить("Команды", тз);

    Возврат
РегистрационныеДанные;

КонецФункции

on Вторник октября 13 by Администратор
Was this helpful?
&НаКлиенте 
Процедура Операция() 
	
	Состояние = ПолучитьСостояние(); 
	НачальнаяИнициализация(Состояние); 
	
	ПоследнееОбновлениеИндикатора = ТекущаяДата(); 
	Пока Продолжать(Состояние) Цикл 
		
		ОбработкаПрерыванияПользователя(); 
		ПоследнееОбновлениеИндикатора = СовершитьВитокИтерации(Состояние, ПоследнееОбновлениеИндикатора); 
		ОбновитьИндикатор(Состояние); 
		
	КонецЦикла; 
	
	ЗавершающаяИнициализация(Состояние); 
	
КонецПроцедуры 

&НаСервере 
Процедура СовершитьВитокИтерации(Состояние, ПоследнееОбновлениеИндикатора) 
	
	Пока Продолжать(Состояние) Цикл 
		
		ТекущееПоложениеИндикатора = ТекущаяДата(); 
		Если НеобходимоОбновлениеИндикатора(ПоследнееОбновлениеИндикатора, ТекущееПоложениеИндикатора) Тогда 
			Возврат ТекущееПоложениеИндикатора; 
		КонецЕсли; 
		
		Состояние = ОбработатьСостояние(Состояние); 
		
	КонецЦикла; 
	
	Возврат ТекущаяДата(); 
	
КонецПроцедуры 

 

функции ПолучитьСостояние, НачальнаяИнициализация, Продолжать, ОбработатьСостояние, ЗавершающаяИнициализация оставить на разработку пользователю шаблона.

Итсочник: infostart.ru, из комментариев пользователя Rusmus

 

on Среда января 06 by Администратор
Was this helpful?
Файл = Новый Файл("ИмяФайла");
Shell = Новый COMОбъект("Shell.Application"); NameSpace = Shell.NameSpace(Файл.Путь); ParseName = NameSpace.ParseName(Сред(Файл.ПолноеИмя, СтрНайти(Файл.ПолноеИмя, "\", НаправлениеПоиска.СКонца) + 1)); Для Сч=-100 По 500 Цикл Попытка Сообщить("" + Сч + "|" + NameSpace.GetDetailsOf(Неопределено, Сч) + "|" + NameSpace.GetDetailsOf(ParseName, Сч)); Исключение КонецПопытки; КонецЦикла;

 

Пример результата:  

-1   Item type: PNG File
Dimensions: ‪822 x 556‬
Size: 45,8 KB
0 Name fubrlbrkdqix.png
1 Size 45,8 KB
2 Item type PNG File
3 Date modified 31.01.2015 1:40
4 Date created 06.01.2016 12:46
5 Date accessed 06.01.2016 12:46
6 Attributes A
7 Offline status  
8 Availability Available offline
9 Perceived type Image
10 Owner MyComputer\Evgeny
11 Kind Picture
12 Date taken  
13 Contributing artists  
14 Album  
15 Year  
16 Genre  
17 Conductors  
18 Tags  
19 Rating Unrated
20 Authors  
21 Title  
22 Subject  
23 Categories  
24 Comments  
25 Copyright  
26 #  
27 Length  
28 Bit rate  
29 Protected  
30 Camera model  
31 Dimensions ‪822 x 556‬
32 Camera maker  
33 Company  
34 File description  
35 Program name  
36 Duration  
37 Is online  
38 Is recurring  
39 Location  
40 Optional attendee addresses  
41 Optional attendees  
42 Organizer address  
43 Organizer name  
44 Reminder time  
45 Required attendee addresses  
46 Required attendees  
47 Resources  
48 Meeting status  
49 Free/busy status  
50 Total size 831 GB
51 Account name  
52    
53 Task status  
54 Computer SERVER (this PC)
55 Anniversary  
56 Assistant's name  
57 Assistant's phone  
58 Birthday  
59 Business address  
60 Business city  
61 Business country/region  
62 Business P.O. box  
63 Business postal code  
64 Business state or province  
65 Business street  
66 Business fax  
67 Business home page  
68 Business phone  
69 Callback number  
70 Car phone  
71 Children  
72 Company main phone  
73 Department  
74 E-mail address  
75 E-mail2  
76 E-mail3  
77 E-mail list  
78 E-mail display name  
79 File as  
80 First name  
81 Full name  
82 Gender  
83 Given name  
84 Hobbies  
85 Home address  
86 Home city  
87 Home country/region  
88 Home P.O. box  
89 Home postal code  
90 Home state or province  
91 Home street  
92 Home fax  
93 Home phone  
94 IM addresses  
95 Initials  
96 Job title  
97 Label  
98 Last name  
99 Mailing address  
100 Middle name  
101 Cell phone  
102 Nickname  
103 Office location  
104 Other address  
105 Other city  
106 Other country/region  
107 Other P.O. box  
108 Other postal code  
109 Other state or province  
110 Other street  
111 Pager  
112 Personal title  
113 City  
114 Country/region  
115 P.O. box  
116 Postal code  
117 State or province  
118 Street  
119 Primary e-mail  
120 Primary phone  
121 Profession  
122 Spouse/Partner  
123 Suffix  
124 TTY/TTD phone  
125 Telex  
126 Webpage  
127 Content status  
128 Content type  
129 Date acquired  
130 Date archived  
131 Date completed  
132 Device category  
133 Connected  
134 Discovery method  
135 Friendly name  
136 Local computer  
137 Manufacturer  
138 Model  
139 Paired  
140 Classification  
141 Status  
142 Status  
143 Client ID  
144 Contributors  
145 Content created  
146 Last printed  
147 Date last saved  
148 Division  
149 Document ID  
150 Pages  
151 Slides  
152 Total editing time  
153 Word count  
154 Due date  
155 End date  
156 File count  
157 File extension .png
158 Filename fubrlbrkdqix.png
159 File version  
160 Flag color  
161 Flag status  
162 Space free 157 GB
163    
164    
165 Group  
166 Sharing type  
167 Bit depth 8
168 Horizontal resolution ‎96 dpi
169 Width ‎822 pixels
170 Vertical resolution ‎96 dpi
171 Height ‎556 pixels
172 Importance  
173 Is attachment  
174 Is deleted  
175 Encryption status  
176 Has flag  
177 Is completed  
178 Incomplete  
179 Read status  
180 Shared No
181 Creators  
182 Date  
183 Folder name TEMP
184 Folder path F:\TEMP
185 Folder TEMP (F:)
186 Participants  
187 Path F:\TEMP\fubrlbrkdqix.png
188 By location  
189 Type PNG File
190 Contact names  
191 Entry type  
192 Language  
193 Date visited  
194 Description  
195 Link status Unresolved
196 Link target  
197 URL  
198    
199    
200    
201 Media created  
202 Date released  
203 Encoded by  
204 Episode number  
205 Producers  
206 Publisher  
207 Season number  
208 Subtitle  
209 User web URL  
210 Writers  
211    
212 Attachments  
213 Bcc addresses  
214 Bcc  
215 Cc addresses  
216 Cc  
217 Conversation ID  
218 Date received  
219 Date sent  
220 From addresses  
221 From  
222 Has attachments  
223 Sender address  
224 Sender name  
225 Store  
226 To addresses  
227 To do title  
228 To  
229 Mileage  
230 Album artist  
231 Sort album artist  
232 Album ID  
233 Sort album  
234 Sort contributing artists  
235 Beats-per-minute  
236 Composers  
237 Sort composer  
238 Initial key  
239 Part of a compilation  
240 Mood  
241 Part of set  
242 Period  
243 Color  
244 Parental rating  
245 Parental rating reason  
246 Space used ‎81%
247 EXIF version  
248 Event  
249 Exposure bias  
250 Exposure program  
251 Exposure time  
252 F-stop  
253 Flash mode  
254 Focal length  
255 35mm focal length  
256 ISO speed  
257 Lens maker  
258 Lens model  
259 Light source  
260 Max aperture  
261 Metering mode  
262 Orientation  
263 People  
264 Program mode  
265 Saturation  
266 Subject distance  
267 White balance  
268 Priority  
269 Project  
270 Channel number  
271 Episode name  
272 Closed captioning  
273 Rerun  
274 SAP  
275 Broadcast date  
276 Program description  
277 Recording time  
278 Station call sign  
279 Station name  
280 Summary  
281 Snippets  
282 Auto summary  
283 Relevance  
284 Encrypted to  
285 Sensitivity  
286 Shared with <Unknown Contact>
287 Sharing status Shared
288   Available
289 Product name  
290 Product version  
291 Support link  
292 Source  
293 Start date  
294 Sharing  
295 Billing information  
296 Complete  
297 Task owner  
298 Sort title  
299 Total file size  
300 Legal trademarks  
301 Video compression  
302 Directors  
303 Data rate  
304 Frame height  
305 Frame rate  
306 Frame width  
307 Video orientation  
308 Total bitrate  
309 Backup Method  
310 Backup Comment  
on Среда января 06 by Администратор
Was this helpful?

Источник: http://www.forum.mista.ru/topic.php?id=612862

Текст запроса: 

//************************

ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ Цифры_0_9

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, Цифры_0_9_0001.Цифра + 10 * Цифры_0_9_0010.Цифра + 100 * Цифры_0_9_0100.Цифра + 1000 * Цифры_0_9_1000.Цифра) КАК День
ПОМЕСТИТЬ Дни
ИЗ
	Цифры_0_9 КАК Цифры_0_9_0001,
	Цифры_0_9 КАК Цифры_0_9_0010,
	Цифры_0_9 КАК Цифры_0_9_0100,
	Цифры_0_9 КАК Цифры_0_9_1000
ГДЕ
	ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, Цифры_0_9_0001.Цифра + 10 * Цифры_0_9_0010.Цифра + 100 * Цифры_0_9_0100.Цифра + 1000 * Цифры_0_9_1000.Цифра) <= &ДатаКонца

ИНДЕКСИРОВАТЬ ПО
	День
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Дни.День
ИЗ
	Дни КАК Дни

//************************

on Вторник августа 23 by Администратор
Was this helpful?