Поиск по этому блогу

5 июля 2022 г.

Запрос объединяющий пересекающиеся интервалы дат

ВЫБРАТЬ

Данные.ДатаНачала КАК НачалоПериода,

Данные.ДатаОкончания КАК КонецПериода

ПОМЕСТИТЬ ВТДанные

ИЗ

&ТаблицаПериоды КАК Данные

;


////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ

Данные.НачалоПериода КАК НачалоПериода,

Данные.КонецПериода КАК КонецПериода

ПОМЕСТИТЬ ВТБезПоглощаемых

ИЗ

ВТДанные КАК Данные

ЛЕВОЕ СОЕДИНЕНИЕ ВТДанные КАК Данные2

ПО Данные.НачалоПериода > Данные2.НачалоПериода

И Данные.КонецПериода < Данные2.КонецПериода

ГДЕ

Данные2.НачалоПериода ЕСТЬ NULL

;


////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗЛИЧНЫЕ

ЕСТЬNULL(Т1.НачалоПериода, Т.НачалоПериода) КАК НачалоПериода,

ЕСТЬNULL(Т2.КонецПериода, Т.КонецПериода) КАК КонецПериода

ИЗ

ВТБезПоглощаемых КАК Т

ЛЕВОЕ СОЕДИНЕНИЕ ВТБезПоглощаемых КАК Т2

ПО Т.КонецПериода < Т2.КонецПериода

И Т.КонецПериода >= Т2.НачалоПериода

ЛЕВОЕ СОЕДИНЕНИЕ ВТБезПоглощаемых КАК Т1

ПО Т.НачалоПериода > Т1.НачалоПериода

И Т.НачалоПериода <= Т1.КонецПериода

21 августа 2015 г.

Запрос по удалению "зеркальных" строк из таблицы.

ВЫБРАТЬ
"Вася" КАК Ч1,
"Маша" КАК Ч2
ПОМЕСТИТЬ ВТ_ПарыСДублями

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Маша",
"Вася"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Вася",
"Даша"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Даша",
"Вася"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Вася",
"Оля"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Оля",
"Вася"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Вася",
"Зина"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Зина",
"Вася"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Вася",
"Рита"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Рита",
"Вася"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Ира",
"Петя"

ОБЪЕДИНИТЬ
ВЫБРАТЬ
"Петя",
"Ира"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_ПарыСДублями.Ч1,
ВТ_ПарыСДублями.Ч2
ИЗ
ВТ_ПарыСДублями КАК ВТ_ПарыСДублями
внутреннее СОЕДИНЕНИЕ ВТ_ПарыСДублями КАК ВТ_ПарыСДублями1
ПО ВТ_ПарыСДублями.Ч1 = ВТ_ПарыСДублями1.Ч1
И ВТ_ПарыСДублями.Ч1 > ВТ_ПарыСДублями1.Ч2

10 августа 2015 г.

Алгоритм корректного открытия на чтение и закрытия файла Эксель через COM-объект

// Пример алгоритма работы с файлом Экселя, 
// Обход частой  проблемы зависания процесса Экселя.

Попытка

       Excel          = Новый COMОбъект("Excel.Application");
       ExcelФайл = Excel.WorkBooks.Open(Объект.ПолноеИмяФайлаДанных);
       
Состояние("Обработка файла Microsoft Excel...");
       ExcelЛист = Excel.Sheets(НомерЛистаExcel);

Исключение

       ТекстОшибки = "Ошибка. Возможно неверно указан номер листа книги Excel.";
       ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
       Возврат Ложь;

КонецПопытки;

ActiveCell      = Excel.ActiveCell.SpecialCells(xlLastCell);
RowCount      = ActiveCell.Row;
ColumnCount = ActiveCell.Column;

// Файл открыли на чтение.
// Обрабатываем его данные.... ... ... ... ...
// И корректно зарываем (так чтобы он не пытался выводить подтверждения сохранения/закрытия).

Excel.DisplayAlerts = 0;
ExcelФайл.Close();
Excel.DisplayAlerts = 1;
Excel.Application.Quit();

13 февраля 2013 г.

Коррелированные запросы в 1C8.

 1С не поддерживает коррелированных запросов, то есть обращения из вложенного запроса к полям родительского запроса, кроме варианта с условием "В", пример есть в файле V8adddoc807.htm, приведен ниже. 

===ПРИМЕР ИЗ ФАЙЛА V8adddoc807.htm===
Заметим, что из запроса операции В возможно обращение к полям таблиц, которые встречались во внешнем запросе до появления операции.


Пример:

// Выбрать названия товаров, которые присутствовали в расходных накладных
ВЫБРАТЬ
Товары.Наименование
ИЗ
Справочник.Товары КАК Товары
ГДЕ
      Товары.Ссылка В
      (ВЫБРАТЬ
            РасхНаклСостав.Товар
       ИЗ
            Документ.РасхНакл.Состав КАК РасхНаклСостав
       ГДЕ
           РасхНаклСостав.Товар = Товары.Ссылка
      )
===КОНЕЦ ПРИМЕРА ИЗ ФАЙЛА V8adddoc807.htm===


Еще примеры использования коррелированных запросов:
Задача:
Как получить последние два курса по валютам?

1)Вариант с коррелированным запросом в соединении 
ВЫБРАТЬ
         КурсыВалютСрезПоследних.Валюта,
         КурсыВалютСрезПоследних.Период КАК ПоследняяДата,
         КурсыВалют.Период КАК ПредпоследняяДата,
         КурсыВалютСрезПоследних.Курс КАК ПоследнийКурс,
         КурсыВалют.Курс КАК ПредпоследнийКурс
ИЗ
       РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
ПО ((КурсыВалют.Валюта, КурсыВалют.Период) В
            (ВЫБРАТЬ
                      КурсыВалют.Валюта,
                      МАКСИМУМ(КурсыВалют.Период) КАК Период
              ИЗ
                      РегистрСведений.КурсыВалют КАК КурсыВалют
              ГДЕ
              КурсыВалют.Период < КурсыВалютСрезПоследних.Период
              И КурсыВалют.Валюта = КурсыВалютСрезПоследних.Валюта
              СГРУППИРОВАТЬ ПО
              КурсыВалют.Валюта))



2)Самый элегантный вариант - коррелированным подзапросом с ВЫБРАТЬ ПЕРВЫЕ 2
                          

ВЫБРАТЬ
    ТаблицаРегистра.Период,
    ТаблицаРегистра.Валюта,
    ТаблицаРегистра.Курс
ИЗ
    РегистрСведений.КурсыВалют КАК ТаблицаРегистра
ГДЕ
    (ТаблицаРегистра.Валюта, ТаблицаРегистра.Период) В
            (ВЫБРАТЬ ПЕРВЫЕ 2
                КурсыВалют.Валюта,
                КурсыВалют.Период КАК Период
            ИЗ
                РегистрСведений.КурсыВалют КАК КурсыВалют
            ГДЕ
                КурсыВалют.Валюта = ТаблицаРегистра.Валюта
            УПОРЯДОЧИТЬ ПО
                Период УБЫВ) 


29 августа 2012 г.

Интересный запрос для получения таблицы с периодичностью "МЕСЯЦ"


Периодичность, понятное дело  можно и поменять.

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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  6

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  8

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
  9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
  ВТЦифры1.Цифра + ВТЦифры2.Цифра * 10 + ВТЦифры3.Цифра * 100 КАК Число
ПОМЕСТИТЬ ВТЧисла
ИЗ
  ВТЦифры КАК ВТЦифры3,
  ВТЦифры КАК ВТЦифры1,
  ВТЦифры КАК ВТЦифры2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, ВТЧисла.Число) КАК Месяц
ПОМЕСТИТЬ ВТМесяцы
ИЗ
  ВТЧисла КАК ВТЧисла
ГДЕ
  ВТЧисла.Число <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
  ВТМесяцы.Месяц КАК Месяц
ИЗ
  ВТМесяцы КАК ВТМесяцы

УПОРЯДОЧИТЬ ПО
  Месяц

18 октября 2011 г.

Несколько малоизвестных "фишек" Windows

В операционной системе присутствует настолько огромное количество полезных и не очень инструментов, что многие просто не подозревают о наличии под рукой такой мега-удобной утилиты, как «Ножницы» (Snipping tool). Попробуйте на Windows 7 ввести в строке поиска начальные буквы этого приложения, и вы увидите его в результатах.

«Ножницы» помогут сэкономить массу времени при создании скриншотов, а если вы используете не PrintScreen, а платную утилиту для захвата экрана, то еще и деньги. При помощи приложения можно делать захват всего экрана, активного окна, прямоугольной области или области произвольного размера. На сохраненном скриншоте можно обвести определенную область карандашом или сделать пометку пером, после чего сохранить его в виде файла PNG, GIF или JPG, а также отправить по электронной почте.

Данным инструментом можно воспользоваться на Windows 7, Windows Vista а также с помощью Experience Pack для Windows XP Tablet PC Edition 2005.



Источник http://digest.subscribe.ru/inet/review/n688721516.html


Сброс пароля Windows 7


04.11.2011 13:25, Павел Михайлов, howtogeek.com
Вы забыли свой пароль и сейчас вам очень грустно? Не грустите, ведь существует действительно простой способ его сбросить. Все что вам нужно – это копия установочного диска Windows и одна простая команда.
Загрузитесь с диска с Windows и выберите опцию “Восстановления компьютера” (Repair your computer) из нижнего левого угла.
Сброс пароля в Windows 7
Идите дальше до тех пор, пока не увидите опцию открытия командной строки (Command Prompt), которую вам и надо выбрать.
Сброс пароля в Windows 7
Теперь, вам сначала надо сделать резервную копию своего оригинального файла залипающих клавиш. Для этого используйте следующую команду (или аналогичную, если Windows у вас стоит на другом диске или в другой папке):
copy c:\windows\system32\sethc.exe c:\
Теперь скопируйте исполняемый файл командной строки (cmd.exe) поверх исполняемого файла залипающих клавиш:
copy c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe
Сброс пароля в Windows 7
Перезагрузите свой компьютер.
Дойдя до экрана с вводом пароля, нажмите 5 раз клавишу Shift, и вы увидите командную строку в режиме администратора.
Сброс пароля в Windows 7
Теперь, чтобы сбросить пароль – просто выполните нижеследующую команду, заменив параметр имя пользователя (в приведенном примере - geek) и пароль (в приведенном примере - newpassword) на желаемую собой комбинацию:
net user geek newpassword
Сброс пароля в Windows 7
Вот и все. Теперь вы можете войти в систему!
Да, если вы хотите вернуть оригинальный файл sethc.exe назад, загрузите свой компьютер с установочного CD, откройте командную строку и скопируйте файл c:\sethc.exe назад в c:\windows\system32\sethc.exe. Удачи!
Оригинал winline.ru/

13 сентября 2011 г.

Как восстановить базу данных MS SQL, если нет журнала транзакций?


Приводится последовательность действий с помощью которой можно вернуть работоспособность базы данных MS SQL сервера, в случае отсутствия журнала транзакций.

Данная последовательность проверялась на Microsoft SQL Server 2005 и 2008.
  1. Останавливаем сервер БД. Сделать это можно из панели управления службами.
  2. Переименовываем файл данных db_name.mdf в db_name.mdf_old
  3. Запускаем сервер БД, из Managment Studio удаляем базу данных
  4. Cоздаем базу данных с таким же именем, как была, в том же месте, где и была.
  5. Останавливаем сервер БД. Подменяем файл новой базы нашим переименованным файлом. Переименовываем его обратно.
  6. Стартуем сервер.
  7. Выполняем:
    go 
           sp_configure 'allow updates', 1 
           reconfigure with override 
           go 
  8. Выполняем:
    alter database db_name set EMERGENCY, SINGLE_USER 
  9. Выполняем:
    dbcc checkdb('db_name', REPAIR_ALLOW_DATA_LOSS )
    Если база большая, то выполнение этой команды может занять несколько минут.
    Эта команда выдаст много сообщений, можете не вникать.
  10. Перезапускаем SQL сервер
  11. Выполняем:
    alter database db_name set ONLINE, MULTI_USER
  12. Выполняем:
    Use master 
           go 
           sp_configure 'allow updates', 0 
           go 
  13. Перезапускаем SQL сервер (на всякий случай, хотя и не обязательно)
После выполнения этих, не очень сложных, манипуляций ваша база данных должна заработать.

источник:
http://www.bkyca.net/k0080.html

http://www.izcity.com/data/soft/article644.htm