Выпадающий список на форме

Как добавить выпадающий список на форме. Типа этого:

А очень просто.
Добавим реквизит формы Выбор?зСписка тип СТРОКА (!)

Перетащим реквизит мы?кой влево, создастся элемент формы Выбор?зСписка. Зайдем в его свойства и установим флажок РежимВыбора?зСписка.

Список выбора будет доступен из свойств элемента Выбор?зСписка, которое так и называется СписокВыбора - туда можно ручками забить значения. Если нужено сделать это программно, то это делается через конструкцию Элементы.Выбор?зСписка.СписокВыбора.Добавить

Подключение вне?ней обработки

При попытке с налета подключить вне?нюю обработку, на вас 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

О?ибка при попытке печати декларации НДС.

Платформа 1С 8.3.9  при попытке печати декларации НДС вылетает предупреждение : "для формирования ма?иночитаемой формы необходимо установить в системе вспомогательную компоненту". При этом компонента Печать НД с PDF417 установлена.

В результате танцев с бубном было установлено, что компонента не работает с x64 платформой 1С.

Ре?ение:
Установить пользователю платформу 1С x32

Проверка по XSD-схеме в XMLPad

Откройте XML-файл, который требуется проверить в XMLPad File > Open.

Перейдите в меню XML > Assign Schema/DTD.

Выберите W3C Schema и нажмите Browse, затем выберите XSD-схему для проверки.

После того, как XSD-схема ассоциирована, нажмите F7 или XML > Validate

Оладка на сервере 1С

В ветке реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\1C:Enterprise 8.3 Server Agent(x86-64)

В параметре ImagePath добавить -debug

«C:\Program Files\1cv8\8.3.9.2033\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 –debug -d «C:\Program Files\1cv8\srvinfo»

Перезапустить службу 1C:Enterprise 8.3 Server Agent(x86-64).

MDaemon настройка адресной книги в Outlook

MDaemon настройка адресной книги в Outlook

В Active Directory в свойствах каждого пользователя необходимо прописать его e-mail адрес.

  1. В Outlook создаем адресную книгу с подключением к LDAP-серверу.
  2. В настройках прописываем локальный IP-адрес контроллера домена, который является глобальным каталогом.
  3. Для авторизации указываем учетную запись пользователя на контроллере домена.
  4. Переходим в дополнительные настройки, на вкладке поиск ставим флажок  «Включить просмотр (требуется серверная поддержка)».
  5. Перезапускаем Outlook

Сервер не смог выделить память из не выгружаемого пула памяти

При попытке использовать Windows 7 Professional как файловый сервер комп по сети становится недоступным, в событиях появляется о?ибка: «Сервер не смог выделить память из не выгружаемого пула памяти, так как достигнут указанный в конфигурации верхний предел»

Лечение:

В редакторе реестра переходим по адресу

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management в параметре LargeSystemCache устанавливаем значение 1.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters в параметре Size устанавливаем значение 3.

Дать право пользователю запускать сервис.

Что бы дать права пользователю, луч?е всего воспользоваться утилитой SubInACL. Утилита входит в пакет Windows Resource Kits.

Запускаем cmd, переходим (команда cd) в каталог "C:\Program Files\Windows Resource Kits\Tools\"

Далее, в командной строке пи?ем subinacl.exe /service НАЗВАН?Е_СЛУЖБЫ /grant=ДОМЕН\ПОЛЬЗОВАТЕЛЬ=PTO

Выполняем команду.

 

Срисок ключей:

W : Generic Write
X : Generic eXecute
L : Read controL
Q : Query Service Configuration
S : Query Service Status
E : Enumerate Dependent Services
C : Service Change Configuration
T : Start Service
O : Stop Service
P : Pause/Continue Service
I : Interrogate Service
U : Service User-Defined Control Commands