При попытке установки сессии клиент выдает "не удалось проверить не был ли отозван этот сертификат"
1. сертификаты на клиенте надо хранить в учетке компьютера а не пользователя
2.в реестре добавляется запись:
UseCachedCRLOnlyAndIgnoreRevocationUnknownErrors в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Credssp типа DWORD - значение 1
Автор: admin
использование конфигурации поставщика
Меню -> Конфигурация -> Поддержка -> Настройка поддержки и внизу нажимаем кнопку Сравнить, объединить.
Все 99% ручных глюков этим можно закрыть. Дело раскрыто.
Настройка OpenVPN
Генерация сертификатов
1. Идем на официальный сайт https://openvpn.net/index.php/open-source/downloads.html (community->downloads) и скачиваем ПО OpenVPN 2.3.18 (old stable) — released on 2017.09.26
2. Устанавливаем ПО
3. Открываем C:\Program Files\OpenVPN\easy-rsa\vars.bat.sample
Переименовываем vars.bat.sample в vars.bat, открываем файл и изменяем строки:
set KEY_COUNTRY=RU
set KEY_PROVINCE=Moscow
set KEY_CITY=Moscow
set KEY_ORG=UMEL
set KEY_EMAIL=admin@umel.ru
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=UMEL
set PKCS11_MODULE_PATH=server
set PKCS11_PIN=1234
4. Генерируем сертификаты. Запускаем командную строку от имени администратора, переходим в каталог C:\Program Files\OpenVPN\easy-rsa\
Набираем vars, потом clean-all, читаем информативную надпись "Скопировано файлов - 1
5. Командами:
build-ca- генерируем публичный сертификат.
build-key-server server (имя может быть любым) — генерируем сертификат сервера
build-key client1 — генерируем сертификат пользователя/
На все вопросы нажимаем enter или y. Потому как мы все нужное уже прописали в vars.bat
Все созданные сертификаты будут находиться C:\Program Files\OpenVPN\easy-rsa\keys
Настройка Mikrotik
1. Копируем ca.crt, server.crt, server.key, заходим в Mikrotik — Files и жмем на иконку вставить.
2. Импортируем сертификаты в Mikrotik System - Certificates - выбор сертификата - кнопка Import.
3. Создаем пул адресов
4.Создаем PPP-профиль. (PPP - Profiles)
5.Настраиваем сервер VPN (PPP- Interface - OVPN Server)
6. добавляем пользователя (PPP - Secrets)
7. Создаем разрешающее правило в Firewall
Настройка клиента
1. Устанавливаем OpenVPN, который мы скачали ранее
2.Копируем ранее созданные файлы ca.crt, client.crt, client.key в C:\Program Files\OpenVPN\config.
3. Там же создаем файл auth.cfg. Первой строчкой прописываем имя пользователя, второй пароль.
4. В папке C:\Program Files\OpenVPN\sample-config находим файл client.ovpn копируем его в C:\Program Files\OpenVPN\config и изменяем строки:
remote XXX.XXX.XXX.XXX 1194 (XXX.XXX.XXX.XXX- внешний адрес mikrotik)
ca ca.crt
cert client1.crt
key client1.key
auth-user-pass auth.cfg
5. на клиенте прописываем обратный маршрут
route add -p 192.168.0.0 mask 255.255.255.0 192.168.5.1
Конвертация данных 2.1 Из регистра в справочник
В ЗУП в справочнике ФизЛиц нет поля даты регистрации по месту жительства. Это поле засунуто в регистр сведений ПаспортныеДанныеФизЛиц
Для того, чтобы вытащить сведения о дата регистрации нужно в ПКО ДатаРегистрации в обработчике "Перед выгрузкой" сделать запрос к регистру сведений ПаспортныеДанныеФизЛиц
Источник пустой, т.к. в ЗУП в справочнике нет такого поля. Нюанс в том, что
1. в запросе Источник- это элемент справочника ЗУП ФизЛица.
2. Данные в Дату Регистрации передаются через переменную Значение.
Теперь адреса в ЗУП они хранятся в регистре КонтактнаяИнформация, а в БП в табличной части элемента справочника.
Добавляем через синхронизацию свойств табличную часть КонтактнаяИнформация. Источник оставляем пустым. На папке КонтактнаяИнформация выставляем флажок Получить из входящих данных.
Переходим на вкладку "Правило выгрузки данных" , открываем правило ФизическиеЛица
В обработчике "Перед обработкой" способ выгрузки выбираем Произвольный запрос. И пишем запрос.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Объект КАК ФизическоеЛицо,
| КонтактнаяИнформация.Тип КАК Тип,
| КонтактнаяИнформация.Вид КАК Вид,
| КонтактнаяИнформация.Представление КАК Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
| ПО КонтактнаяИнформация.Объект = ФизическиеЛица.Ссылка
|ГДЕ
| КонтактнаяИнформация.Тип = &Тип
| И КонтактнаяИнформация.Вид В (&СписокВидов)";
СписокВидов = Новый СписокЗначений;
СписокВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ФактАдресФизЛица);//проживание
СписокВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица);//прописка
Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.Адрес);
Запрос.УстановитьПараметр("СписокВидов",СписокВидов);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ФизЛица = РезультатЗапроса.Скопировать();
ФизЛица.Свернуть("ФизическоеЛицо");
Для Каждого СтрФз Из ФизЛица Цикл
Отбор = Новый Структура;
Отбор.Вставить("ФизическоеЛицо",СтрФз.ФизическоеЛицо);
НайденныеСтроки= РезультатЗапроса.НайтиСтроки(Отбор);
Выборка=Новый ТаблицаЗначений;
Выборка.Колонки.Добавить("Тип");
Выборка.Колонки.Добавить("Вид");
Выборка.Колонки.Добавить("Представление");
Для Каждого СтрРез Из НайденныеСтроки Цикл
НоваяСтрока= Выборка.Добавить();
НоваяСтрока.Тип=СтрРез.Тип;
НоваяСтрока.Вид=СтрРез.Вид;
НоваяСтрока.Представление=СтрРез.Представление;
КонецЦикла;
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("КонтактнаяИнформация", Выборка);
ВыгрузитьПоПравилу(СтрФз.ФизическоеЛицо, , ИсходящиеДанные, , "ФизическиеЛица");
КонецЦикла;
Заполняем структуру ИсходящиеДанные, где "КонтактнаяИнформация" это название табличной части приемника, т.е. справочника физлица в БП
И выгружаем по правилу.
В обработчике "Перед выгрузкой" пишем, что к группам наша выгрузка не относится.
Еще в ПКО ФизическиеЛица напишем, что уволенных и удаленных выгружать не будем.
Ну и в правиле справочника ВидыКонтактнойИнформации нужно синхронизировать пару свойств.
Как исправить размытый шрифт в Windows 10.
Откройте редактор реестра (WIN+R regedit).
В разделе реестра : HKEY_CURRENT_USER\ControlPanel\Desktop
- Установите параметр DpiScalingVer — 0x00001018
- Установите параметр Win8DpiScaling : 1
- Установите параметр LogPixels : 0x00000078 (если его нет, создайте новый 32-битный ключ DWORD)
Перезагрузите Windows 10.
Профит
Проблема сохранения файла в .docm
Проблема: пользователи открывают файл формата .docx из письма в аутлуке, и жмут на save, Word 2003 пишет файл в формате .docm.
Решение:
Нужно удалить параметр реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Components\58CE92CC2CB71D119A12000A9CE1A22A]
«wks632»
копия которого находится в
[HKEY_CLASSES_ROOT\Installer\Components\58CE92CC2CB71D119A12000A9CE1A22A]
«wks632»
Выпадающий список на форме
Как добавить выпадающий список на форме. Типа этого:
А очень просто.
Добавим реквизит формы ВыборИзСписка тип СТРОКА (!)
Перетащим реквизит мышкой влево, создастся элемент формы ВыборИзСписка. Зайдем в его свойства и установим флажок РежимВыбораИзСписка.
Список выбора будет доступен из свойств элемента ВыборИзСписка, которое так и называется СписокВыбора - туда можно ручками забить значения. Если нужено сделать это программно, то это делается через конструкцию Элементы.ВыборИзСписка.СписокВыбора.Добавить
Подключение внешней обработки
При попытке с налета подключить внешнюю обработку, на вас 1С ругнется матерно.
Лечится это вставкой в модуль обработки экспортной функции СведенияОВнешнейОбработке()
Обращаю внимание не в модуль формы, а в модуль обработки!
Текст функции приблизительно такой
Что бы не поиметь проблем, внимательно заполняем реквизиты:
РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
Функции языка запросов 1с
Функции языка запросов 1с
1. Функция ДАТАВРЕМЯ - данная функция создает константное поле с типом "Дата".
Синтаксис: ДАТАВРЕМЯ(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
| ДАТАВРЕМЯ(2015, 3, 1) КАК ПервоеМарта"; // 1 марта 2015
2. Функция РАЗНОСТЬДАТ - возвращает разность двух дат в одном из измерений (год, месяц, день, час, минута, секунда). Измерение передается в параметре.
Синтаксис: РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>)
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
| РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2015, 4, 17), ДАТАВРЕМЯ(2015, 2, 1), ДЕНЬ)
| КАК КолвоДней";
3. Функция ЗНАЧЕНИЕ - задает константное поле с предопределенной записью из базы данных, также можно получить пустую ссылку любого типа.
Синтаксис: ЗНАЧЕНИЕ(<Имя>)
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
//предопределенный элемент
| ЗНАЧЕНИЕ(Справочник.Валюты.Доллар) КАК Доллар,
//пустая ссылка
| ЗНАЧЕНИЕ(Документ.ПоступлениеТоваровУслуг.ПустаяСсылка) КАК Поступление,
//знач. перечисления
| ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ФизЛицо) КАК ФизЛицо,
//предопределенный счет
| ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы) КАК Счет_10";
4. Функция ВЫБОР - перед нами аналог конструкции ЕСЛИ который используется в коде, только эта используется в запросах 1С.
Синтаксис: ВЫБОР
КОГДА <Выражение> ТОГДА <Выражение>
ИНАЧЕ <Выражение>
КОНЕЦ
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
//если сумма больше 7500, тогда должна быть скидка 300 рублей,
//поэтому если условие срабатывает то функция
//возвращает Сумма - 300
//в противном случае запрос вернет просто Сумма
| ВЫБОР
| КОГДА ТЧПоступления.Сумма > 7500
| ТОГДА ТЧПоступления.Сумма - 300
| ИНАЧЕ ТЧПоступления.Сумма
| КОНЕЦ КАК СуммаСоСкидкой
|ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК ТЧПоступления";
5. Функция ВЫРАЗИТЬ - позволяет выразить константное поле определенным типом.
Синтаксис: ВЫРАЗИТЬ(НазваниеПоля КАК НазваниеТипа)
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(Номенклатура.Комментарий КАК Строка(300)) КАК Комментарий,
| ВЫРАЗИТЬ(Номенклатура.Сумма КАК Число(15,2)) КАК Сумма
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Еще есть вариант использования функции ВЫРАЗИТЬ в полях смешанных типах, где такие встречаются? Самый простой пример это "Регистратор" у любого регистра. Так зачем нам может понадобиться уточнять тип в регистраторе? Давайте рассмотрим ситуацию когда мы из регистратора выбираем поле "Номер", из какой таблицы будет выбран номер? Правильный ответ из всех! Поэтому чтобы наш запрос работал быстро следует указывать явный тип с помощью функции ВЫРАЗИТЬ
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Продажи.Регистратор.Номер,
| ВЫБОР
| КОГДА Продажи.Регистратор ССЫЛКА Документ.Расходная
| ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.Расходная)
| ИНАЧЕ ВЫБОР
| КОГДА Продажи.Регистратор ССЫЛКА Документ.Реализация
| ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.Реализация)
| КОНЕЦ
| ...
| КОНЕЦ КАК Номер
| ИЗ
| РегистрНакопления.Закупки КАК Закупки";
6. Функция ISNULL (альтернативное написание ЕСТЬNULL) - если поле имеет тип NULL, то оно заменяется на второй параметр функции.
Синтаксис: ЕСТЬNULL(<Поле>, <ПодставляемоеЗначение>)
Пример использования:
Запрос.Текст =
//Выбираем всю номенклатуру и остатки по ней
//если остатокв но какой-то номенклатуре нет то будет поле
//NULL которое заменится значением 0
"ВЫБРАТЬ
| Ном.Ссылка,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остаток
|ИЗ
| Справочник.Номенклатура КАК Ном
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
| ПО (ТоварыНаСкладахОстатки.Номенклатура = Ном.Ссылка)";
Также отмети что тип NULL желательно ВСЕГДА заменять на какое-то значение, т.к. сравнение с типом NULL всегда дает ЛОЖЬ даже если вы сравниваете NULL с NULL. Чаще всего значения NULL образуются в результате соединения таблиц (все виды соединений кроме внутреннего).
7. Функция ПРЕДСТАВЛЕНИЕ - позволяет получить представление поля запроса
Синтаксис: ПРЕДСТАВЛЕНИЕ(<НаименованиеПоля>)
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
| ПРЕДСТАВЛЕНИЕ(СвободныеОстаткиОстатки.Номенклатура) КАК Номенклатура,
| ПРЕДСТАВЛЕНИЕ(СвободныеОстаткиОстатки.Склад) КАК Склад,
| СвободныеОстаткиОстатки.ВНаличииОстаток
|ИЗ
| РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки";
Конструкции в языке запросов 1с
Выше мы рассмотрели с Вами функции языка запросов 1с, теперь пришло время рассмотреть конструкции в языке запросов 1с, они не менее важны и полезны, приступаем.
1. Конструкция ССЫЛКА - представляет из себя логический оператор проверки ссылочного типа. Наиболее часто встречается при проверки поля составного типа на конкретный тип.
Синтаксис: ССЫЛКА <Имя таблицы>
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
//если тип значения регистратора документ Приходная,
//тогда запрос вернет "Поступление товаров", иначе "Реализация товаров"
| ВЫБОР
| КОГДА Остатки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
| ТОГДА ""Приход""
| ИНАЧЕ ""Расход""
| КОНЕЦ КАК ВидДвижения
|ИЗ
| РегистрНакопления.ОстаткиТоваровНаСкладах КАК Остатки";
2. Конструкция МЕЖДУ - данный оператор проверяет входит ли значение в указанный диапазон.
Синтаксис: МЕЖДУ <Выражение> И <Выражение>
Пример использования:
Запрос.Текст =
//получим всю номенклатуру код которой лежит в диапазоне от 1 до 100
"ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Код МЕЖДУ 1 И 100";
3. Конструкция В и В ИЕРАРХИИ - проверяют находится ли значение в передаваемом списке (в качестве списка могут передаваться массивы, таблицы значений и т.д.). Оператор В ИЕРАРХИИ позволяет просматривать иерархию (пример использования ПланСчетов).
Синтаксис: В(<СписокЗначений>), В ИЕРАРХИИ(<СписокЗначений>)
Пример использования:
Запрос.Текст =
//выбираем все субсчета счета
"ВЫБРАТЬ
| Хозрасчетный.Ссылка КАК Счет
|ИЗ
| ПланСчетов.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Ссылка В ИЕРАРХИИ ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)";
4. Конструкция ПОДОБНО - эта функция позволяет нам сравнивать строку с шаблоном строки.
Синтаксис: ПОДОБНО "<ТекстШаблона>"
Варианты шаблона строки:
% - последовательность, содержащая любое количество произвольных символов
_ - один произвольный символ
[...] - любой одиночный символ, либо последовательность символов из перечисленных внутри квадратных скобок. В перечислении могут задаваться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона
[^...] - любой одиночный символ, либо последовательность символов из перечисленных внутри квадратных скобок кроме тех, которые перечислены следом за значком отрицания
Пример использования:
Запрос.Текст =
//найдем всю номенклатуру которая содержит корень ТАБУР и начинается
//либо с маленькой либо с большой буквы т
"ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Товары.Наименование ПОДОБНО ""[Тт]абур%""";
5. Конструкция РАЗРЕШЕННЫЕ - этот оператор позволяет выбрать только те записи из БД, на которые вызывающий имеет право чтения. Данные права настраиваются на уровне записей (RLS).
Синтаксис: РАЗРЕШЕННЫЕ пишется после ключевого слова ВЫБРАТЬ
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
6. Конструкция РАЗЛИЧНЫЕ - позволяет выбрать записи в которых отсутствуют повторные записи
Синтаксис: РАЗЛИЧНЫЕ пишется после ключевого слова ВЫБРАТЬ
Пример использования:
Запрос.Текст =
//выбирает записи на которые есть права у читающего
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Контрагенты.Наименование
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
Также Конструкция РАЗЛИЧНЫЕ может использоваться с оператором РАЗРЕШЕННЫЕ и другими операторами.
Пример использования:
Запрос.Текст =
//выбирает различные записи на которые есть права у читающего
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| Контрагенты.Наименование
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
7. Конструкция ПЕРВЫЕ - выбирает указанное в параметре число записей из результата запроса
Синтаксис: ПЕРВЫЕ <число>
Пример использования:
Запрос.Текст =
//выбирают первые 4 номера ГТД из справочника
"ВЫБРАТЬ ПЕРВЫЕ 4
| НомераГТД.Ссылка
|ИЗ
| Справочник.НомераГТД КАК НомераГТД";
8. Конструкция ДЛЯ ИЗМЕНЕНИЯ - позволяет заблокировать таблицу, работает только в транзакциях (актуально только для автоматических блокировок)
Синтаксис: ДЛЯ ИЗМЕНЕНИЯ <НаименованиеТаблицы>
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
| СвободныеОстаткиОстатки.Номенклатура,
| СвободныеОстаткиОстатки.Склад,
| СвободныеОстаткиОстатки.ВНаличииОстаток
|ИЗ
| РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
|ДЛЯ ИЗМЕНЕНИЯ
| РегистрНакопления.СвободныеОстатки.Остатки";
9. Конструкция УПОРЯДОЧИТЬ ПО - упорядочивает данные по определенному полю. Если полем является ссылка то при установке флага АВТОУПОРЯДОЧИВАНИЕ будет происходить сортировка по представлению ссылки, если флаг выключен то ссылки сортируются по старшинству адреса ссылки в памяти
Синтаксис: УПОРЯДОЧИТЬ ПО <НаименованиеПоля> АВТОУПОРЯДОЧИВАНИЕ
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
| СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
| СвободныеОстаткиОстатки.Склад КАК Склад,
| СвободныеОстаткиОстатки.ВНаличииОстаток
|ИЗ
| РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";
10. Конструкция СГРУППИРОВАТЬ ПО - используется для группировки строк запроса по определенным полям. Числовые поля должны использоваться с любой агрегатной функцией.
Синтаксис: СГРУППИРОВАТЬ ПО <НаименованиеПоля1>, .... , <НаименованиеПоляN>
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ | ТоварыНаСкладах.Номенклатура КАК Номенклатура,
| ТоварыНаСкладах.Склад,
| СУММА(ТоварыНаСкладах.ВНаличии) КАК ВНаличии
|ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
|
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладах.Номенклатура,
| ТоварыНаСкладах.Склад";
11. Конструкция ИМЕЮЩИЕ - позволяет применить агрегатную функцию к условию выборки данных, похожа на конструкцию ГДЕ
Синтаксис: ИМЕЮЩИЕ <агрегатная функция с условием>
Пример использования:
Запрос.Текст =
//выбирает сгруппированные записи где поле ВНаличии больше 3
"ВЫБРАТЬ
| ТоварыНаСкладах.Номенклатура КАК Номенклатура,
| ТоварыНаСкладах.Склад,
| СУММА(ТоварыНаСкладах.ВНаличии) КАК ВНаличии
|ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
|
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладах.Номенклатура,
| ТоварыНаСкладах.Склад
|ИМЕЮЩИЕ СУММА(ТоварыНаСкладах.ВНаличии) > 3 ";
12. Конструкция ИНДЕКСИРОВАТЬ ПО - используется для индексации поле запроса. Запрос с индексацией дольше выполняется, но ускоряет поиск по индексированным полям. Можно использовать только в виртуальных таблицах.
Синтаксис: ИНДЕКСИРОВАТЬ ПО <Поле1, ... , ПолеN>
Пример использования:
Запрос.Текст =
"ВЫБРАТЬ
| Тз.НаименованиеОС,
| Тз.НомерПапки,
| Тз.КодОС,
| Тз.Срок,
| Тз.Тип
|ПОМЕСТИТЬ ДанныеТз
|ИЗ
| &Тз КАК Тз
|ИНДЕКСИРОВАТЬ ПО
| Тз.НаименованиеОС,
| Тз.КодОС
|;
";
13. Конструкция ГДЕ - позволяет наложить условие на любые поля выборки. В результат попадут записи только удовлетворяющие условию.
Синтаксис: ГДЕ <Условие1 ОператорЛогСоединения УсловиеN>
Пример использования:
Запрос.Текст =
//выбираются все записи у которых КомпенсацияОстаток <> 0 и
//СуммаДляРасчКомпОстаток > 100
"ВЫБРАТЬ
| КомпенсацияРПОстатки.Контрагент,
| КомпенсацияРПОстатки.Ребенок,
| КомпенсацияРПОстатки.КомпенсацияОстаток,
| КомпенсацияРПОстатки.СуммаДляРасчКомпОстаток
|ПОМЕСТИТЬ ДанныеТз
|ИЗ
| РегистрНакопления.КомпенсацияРП.Остатки КАК КомпенсацияРПОстатки
|ГДЕ
| КомпенсацияРПОстатки.КомпенсацияОстаток <> 0
| И КомпенсацияРПОстатки.СуммаДляРасчКомпОстаток > 100";
MEMORY_SIZE ERROR при установке VMware ESXi 5.5
VMware заявляет минимальный размер памяти для ESXi 5.5 - 4Гб, что проверяется во время установки. Но имея на борту 4Гб памяти столкнулся с ошибкой - "MEMORY_SIZE ERROR: This host has 3.97 GiB bytes of RAM. 3.97 GiB are needed".
Запускаем установщик VMware ESXi 5.5
После появления окна приветствия "Welcome to theVMware ESXi 5.5.0 Installation" нажимаем Alt+F1 для перехода на первую консоль
Логинимся под root, пароля нет
# переходим в каталог с интересующими нас файлами cd /usr/lib/vmware/weasel/util/ # удаляем скомпилированный скрипт rm upgrade_precheck.pyc # снимаем флаги, препятствующие редактированию скрипта mv upgrade_precheck.py upgrade_precheck.py.def cp upgrade_precheck.py.def upgrade_precheck.py # прописываем права на редактирование chmod 755 upgrade_precheck.py # открываем скрипт в vi для редактирования vi upgrade_precheck.py
Вводим "/MEM_MIN_SIZE" - ищем необходимую переменную - "MEM_MIN_SIZE".
Нажимаем "a" - входим в режим ввода символов.
Формулу "(4 * 1024 - 32)" меняем на "(2 * 1024 - 32)"
Нажимаем "ESC"- возвращаемся в командный режим.
Вводим ":wq" - сохраняем и выходим из vi.
# ищем PID утстановщика ps -c | grep weasel # убиваем установщик kill PID