22 июл. 2017 г.

"Живой поиск" на форме 1С Предприятие

Для реализации такого функционала 


нужно:

  • В свойствах поля формы установить свойства
    • ОбновлениеТекстаРедактирования = При изменении значения
    • РежимВыбораНезаполненного = При активации
  • Сама реализация методики
&НаКлиенте
Процедура НаименованиеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    СтруктураОтбора = Новый Структура;
    ДобавитьОтборВСтруктуру(СтруктураОтбора, "Наименование", "подобно", Текст + "%");
    ДанныеВыбора = Поиск(СтруктураОтбора);
КонецПроцедуры
&НаКлиенте
//Процедура добавляет отбор в структуру
//
//Параметры:
// Структура - тип Структура
// ИмяПоля - тип Строка
// Сравнение - тип Строка
// ТекЗначение - тип Любой
Процедура ДобавитьОтборВСтруктуру(Структура, ИмяПоля, Сравнение, ТекЗначение)
     
    Если ТипЗнч(Структура) <> Тип("Структура") Тогда
        Возврат;
    КонецЕсли;
    Если ИмяПоля = "" Тогда
        Возврат;
    КонецЕсли;
    МассивОтбора = Новый Массив; МассивОтбора.Добавить(Сравнение); МассивОтбора.Добавить(ТекЗначение);
    Структура.Вставить(ИмяПоля, МассивОтбора);
КонецПроцедуры
&НаСервере
Функция Поиск(СтруктураОтбора)
     
    Если ТипЗнч(СтруктураОтбора) <> Тип("Структура")Тогда
        Возврат Неопределено;
    КонецЕсли;
    Если СтруктураОтбора.Количество() = 0 Тогда
        Сообщить("Не заполнены отборы для поиска", СтатусСообщения.Информация);
        Возврат Неопределено;
    КонецЕсли;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Таблица.Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Таблица  
    |ГДЕ";
    Индекс = 1;
    Для Каждого ТекКЗ Из СтруктураОтбора Цикл
        Запрос.Текст = Запрос.Текст + "
        | Таблица." + ТекКЗ.ключ + " " + ТекКЗ.Значение[0] + " &Пар" + Индекс;
        Запрос.УстановитьПараметр("Пар" + Индекс, ТекКЗ.Значение[1]);
        Индекс = Индекс + 1;
    КонецЦикла;
    Список = Новый СписокЗначений;
    Список.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
    Возврат Список;
КонецФункции

Данная реализация процедур и функций взята из этого сайта.

17 июл. 2017 г.

Номер документа и дата в отчете СКД

Нужно в одной ячейке вывести Номер и Дата документа по шаблону № НомерДок от ДатаДок, ДатаДок в формате 17.07.2017

Открываем Схему компоновки данных отчета - Вычисляемые поля - Добавить поле, с выражением
"№" + Номер + " от " + Строка(ФОРМАТ(Дата "ДФ = дд.ММ.гггг")) 
Результат 



14 июл. 2017 г.

Установить привязки программно на форме

Обычные формы.
Алгоритм заключается в свойстве кнопки на форме Кнопка.Верх, которым управляем положением на форме, а методом Кнопка.УстановитьПривязку() управляем привязками кнопки.

НашаКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), "НаименованиеКнопки", Истина, ЭлементыФормы.ОсновнаяПанель);
НашаКнопка .Верх = 280;
НашаКнопка .УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭлементыФормы.ИнфНадписьТекущаяСумма, ГраницаЭлементаУправления.Лево);

и т.д.

При обновлении данных после последней реструктуризации произошла критическая ошибка. Повторить обновление?

Данная ошибка произошла при динамическом обновлении конфигурации базы данных.

  • delete from configsave
  • delete from config where FileName = 'commit'
  • delete from config where FileName = 'dynamicCommit'
  • delete from config where FileName = 'dbStruFinal'

Спрятать учетную запись на экране входа

Есть тестовая учетная запись под название ftp.
Эта учетная запись не должна быть видна на экране входа в виндовс.

Переходим в куст реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]

добавляем параметр
Наименование параметра: ftp
Тип: REG_DWORD
Значение: 0

Заблокировать Windows при входе

Пример.
Для того, что бы нужный нам батник запускался из Планировщика заданий нужно зайти под пользователем, под которым будет запускаться наше задание.

Но так как авто вход пользователя можно осуществить с помощью control userpasswords2 теперь нужно сделать авто блокировку пользователя, для безопасности.

Делаем рядом с нашим задание при запуске, еще одно задание, которое будет блокировать сразу сессию, где в качестве исполняемого файла блокировки сессии указываем батник где пишем
@rundll32 user32.dll,LockWorkStation



6 июл. 2017 г.

Отправить POST запрос HTTP-сервису 1С Предприятие

Есть хттп сервис на 1С, в качестве параметра получает джейсон. 

Нужно проверить этот хттп сервис из браузера. 

Ввожу в адресной строке браузера

data:text/html,<form action=http://192.168.0.96/NameHTTPService/hs/tcd-http/getMovingRegisters method=post enctype="text/plain"><input  name=value></form>

где
192.168.0.96 - адрес сервера хттп 1С
NameHTTPService - название хттп сервиса
getMovingRegisters - название метода 

в появившейся форме ввожу джейсон (т.е. параметр)


    "GUID": "c310475f-58ab-11e7-80da-6abab6d48e3b" 


далее в коде обраотки полученных данных хттп сервиса пишу

Функция getMovingRegisters(Запрос)
     
    Ответ = Новый HTTPСервисОтвет(200);     
    СтрокаJSON = Запрос.ПолучитьТелоКакСтроку();  
     
    //для отладки из браузера
    Если Найти(СтрокаJSON, "value=") <> 0 Тогда
        СтрокаJSON = СтрЗаменить(СтрокаJSON, "value=", "");
    КонецЕсли;
  
    .................
     
КонецФункции

где в результате в переменную СтрокаJSON будет чистый джейсон, который можем скормить

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(JSON);
Структура = ПрочитатьJSON(СтрокаJSON );

 

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07