Пропускать при вводе 1с что это
Описание:
Оператор Если управляет выполнением программы, основываясь на результаты одного или более логических выражений. Оператор может содержать любое количество групп операторов, возглавляемых конструкциями ИначеЕсли – Тогда.
Синтаксис:
Если < Логическое выражение >Тогда
// Операторы
[ ИначеЕсли < Логическое выражение >Тогда ]
// Операторы
[ Иначе ]
// Операторы
КонецЕсли ;
Англоязычный синтаксис:
If < Логическое выражени е>Then
// Операторы
[ElsIf < Логическое выражение >Then ]
// Операторы
[Else ]
// Операторы
EndIf ;
Параметры:
Тогда – Операторы, следующие за Тогда, выполняются, если результатом логического выражения является значение Истина.
// Операторы – Исполняемый оператор или последовательность таких операторов
ИначеЕсли – Логическое выражение, следующее за ключевым словом ИначеЕсли, вычисляется только тогда, когда условия в Если и всех предшествующих ИначеЕсли
оказались равны Ложь. Операторы, следующие за конструкцией ИначеЕсли – Тогда , выполняются, если результат логического выражения в данном
ИначеЕсли равен Истина.
Иначе – Операторы, следующие за ключевым словом Иначе, выполняются, если результаты логических выражений в конструкции Если и всех предшествующих
конструкциях ИначеЕсли оказались равны Ложь .
КонецЕсли – Ключевое слово, которое завершает структуру оператора условного выполнения.
Если ДеньНедели(ТекущаяДата()) = 6 Тогда
Сообщить (“Сегодня суббота.”);
ИначеЕсли ДеньНедели(ТекущаяДата()) = 7 Тогда
Сообщить (“Сегодня воскресенье.”);
Иначе
Сообщить(“Сегодня рабочий день.”);
КонецЕсли;
Новый (New)
Описание:
Оператор позволяет создать значение указанного типа. Допустим только для тех типов, для которых разрешено создание новых значений. Для прикладных объектов необходимо использовать функциональную форму оператора Новый (вариант 2), так как при проверке модулей в конфигураторе не определены типы для прикладных объектов.
При работе с функциональной формой оператора Новый следует помнить, что операция разыменования непосредственно к результату работы оператора не может быть применена. Вначале следует присвоить результат работы оператора Новый какой-либо переменной, а затем использовать уже эту переменную.
Синтаксис (вариант 1):
Новый Имя типа>[(, …, )]
Параметры:
Имя типа – Указывается имя типа, значение которого создается.
, …, – После имени типа в скобках могут указываться параметры, если они определены в конструкторах для данного типа. Допустимое количество параметров
и их назначение указываются в описании конструкторов объекта.
Пример:
// Пример создания массива из трех элементов.
Массив = Новый Массив(3);
Синтаксис (вариант 2):
Новый ( [, ])
Параметры:
Тип – Имя типа или значение типа Тип.
Параметры конструктора > Массив параметров конструктора.
Пример:
ТипЗначения = Тип (“КвалификаторыСтроки”);
Параметры = Новый Массив(2) ;
Параметры[0] = 20;
Параметры[1] = ДопустимаяДлина.Переменная;
КвалифСтр = Новый ( ТипЗначения, Параметры );
Перейти (Goto)
Описание:
Безусловная передача управления на другой оператор программы. Передает управление от одного оператора к другому.
Область действия оператора ограничивается программным модулем, процедурой или функцией; он не может передать управление за пределы программного модуля, процедуры или функции.
Примечание 1. Метка в этом операторе не должна быть меткой перехода на оператор Процедура или Функция.
Примечание 2. Оператор безусловного перехода не может быть использован для передачи управления на операторы, находящиеся внутри конструкций:
Пока – КонецЦикла, Для – КонецЦикла, Для каждого – КонецЦикла, Если – КонецЕсли, Попытка – Исключение – КонецПопытки извне этих конструкций.
Синтаксис:
Перейти < Метка >;
Пример:
Перейти ~ Метка1 ;
…
~ Метка1 : Сообщить (“Осуществлен переход по метке.”);
Перем (Var)
Описание:
Позволяет в явном виде объявить переменную.
Синтаксис:
Перем < Имя переменной 1 >[Экспорт] [, < Имя переменной 2 >, …];
Англоязычный синтаксис:
Var < Имя переменной 1 >[ Export] [, < Имя переменной 2 >, …];
Параметры:
< Имя переменной 1 >[, , …] – Задается имя или имена объявляемых переменных
Экспорт – Необязательное ключевое слово. Указывает, что данная переменная доступна при обращении к контексту этого модуля из других модулей. Данное ключевое слово необходимо указывать для каждой объявляемой переменной отдельно. Не имеет смысла при объявлении переменных отдельных процедур или функций.
Пример:
// Пример объявления одной переменной
Перем А Экспорт ;
Перем Б ;
// Пример объявления нескольких переменных одним оператором
Перем А, Б Экспорт;
Неявное объявление переменных:
В языке необязательно объявлять переменные в явном виде. Неявным определением переменной является первое ее появление в левой части
оператора присваивания. Тип переменной определяется типом присвоенного ей значения. Не допускается использование в выражениях переменных, не
объявленных ранее в явном или неявном виде.
Область использования переменной:
Область использования переменных зависит от места их определения в конфигурации. Существует три области, в которых можно объявить
переменные:
● В разделе определения переменных программного модуля управляемого приложения. Это глобальные переменные.
● В разделе определения переменных модуля. Это переменные модуля.
● В процедуре или функции. Это локальные переменные.
Глобальные переменные, объявленные с ключевым словом Экспорт, доступны для использования в исполняемых операторах, выражениях, в любой процедуре и функции любого клиентского программного модуля конфигурации.
Переменные модуля доступны для использования в исполняемых операторах, выражениях, в любой процедуре и функции того программного модуля, в пределах которого они объявлены. Если они объявлены с ключевым словом Экспорт, то они доступны из других модулей через контекст модуля, в котором они объявлены.
Локальные переменные доступны в пределах той процедуры или функции, в которой они объявлены.
Если переменная определена как глобальная, то она видна из всех процедур и функций любого клиентского программного модуля конфигурации. Если же переменная определена внутри процедуры, то ее областью видимости является данная процедура или функция.
Таким образом, если две переменные с одинаковыми именами используются в двух различных процедурах модуля и имя этой переменной не упоминается как глобальное, то это две различные переменные, локальные для процедур. Если же переменная определена как глобальная переменная, то любое использование имени этой переменной будет приводить к обращению к одной и той же переменной.
Единственный способ создать для процедуры локальную переменную с именем, совпадающим с именем переменной, определенной как глобальная, – это объявить ее явно при помощи оператора Перем.
Пока (While)
Описание:
Оператор цикла Пока предназначен для циклического повторения операторов, находящихся внутри конструкции Цикл – КонецЦикла. Цикл выполняется,
пока логическое выражение равно Истина. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.
Синтаксис:
Пока < Логическое выражение >Цикл
// Операторы
[ Прервать ;]
// Операторы
[ Продолжить; ]
// Операторы
КонецЦикла
Англоязычный синтаксис:
While < Логическое выражение >Do
// Операторы
[Break;]
// Операторы
[ Continue;]
// Операторы
EndDo;
Параметры:
-Логическое выражение
Цикл – Операторы, следующие за ключевым словом Цикл, выполняются, пока результат логического выражения равен Истина.
// Операторы – Исполняемый оператор или последовательность таких операторов.
Прервать – Позволяет прервать выполнение цикла в любой точке. После выполнения этого оператора управление передается оператору, следующему за ключевым
словом КонецЦикла.
Продолжить – Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле
цикла за ним, на данной итерации обхода не выполняются.
КонецЦикла – Ключевое слово, которое завершает структуру оператора цикла.
Пример:
ВыборкаДок = Документы.РасходнаяНакладная.Выбрать();
// Цикл по всем документам
Пока ВыборкаДок.Следующий() Цикл
// Отобразим Документ в панели состояния
Состояние( “Обрабатывается документ №” + ВыборкаДок.Номер);
// Операторы выполнения действий над документом
КонецЦикла;
Попытка (Try)
Описание:
Оператор Попытка управляет выполнением программы, основываясь на возникающих при выполнении модуля ошибочных (исключительных) ситуациях,
и определяет обработку этих ситуаций.
В качестве ошибочных (исключительных) ситуаций воспринимаются ошибки времени выполнения модуля. Не предусмотрено определяемых пользователем исключений.
КонецПопытки оператор. Если же последовательность операторов попытки выполнилась без ошибок, то последовательность операторов исключения будет пропущена и управление также будет продолжено с оператора, следующего за ключевым словом КонецПопытки.
Конструкции Попытка – Исключение – КонецПопытки могут быть вложенными. При этом при возникновении исключительной ситуации управление передается на тот обработчик, в попытке которого произошла ошибка. Если же в последовательности операторов исключения этого обработчика выполняется оператор ВызватьИсключение , выполнение передается вышестоящему обработчику исключения и так далее. Если вышестоящего обработчика нет, исключительная ситуация обрабатывается системно с прекращением выполнения программного модуля.
В выдаче диагностики помощь могут оказать встроенные функции ОписаниеОшибки() и ИнформацияОбОшибке() (см. описание функций встроенного языка). Также следует учитывать, что попадание во вложенный обработчик исключения приводит к тому, что информация о «родительском» исключении теряется.
С помощью конструкции Попытка – Исключение – КонецПопытки не могут быть перехвачены следующие ошибки:
● Ошибки компиляции модулей встроенного языка во время исполнения.
● Ошибки времени исполнения, возникающие в обработчиках ПередЗакрытием() и ПриЗакрытии() управляемой формы.
Такие ошибки всегда будет отображаться системой «1С:Предприятие» и приводить к прекращению выполнения встроенного языка.
Синтаксис:
Попытка
// Операторы попытки
Исключение
// Операторы исключения
[ ВызватьИсключение ;]
// Операторы исключения
КонецПопытки;
Англоязычный синтаксис:
Try
// Операторы попытки
Except
// Операторы исключения
[ Raise ;]
// Операторы исключения
EndTry;
Параметры:
/ / Операторы попытки – Исполняемый оператор или последовательность таких операторов.
Исключение – Операторы, следующие за ключевым словом Исключение, выполняются, если при выполнении последовательности операторов произошла ошибка
времени выполнения.
// Операторы исключения – Исполняемый оператор или последовательность операторов, которые обрабатывают исключительную ситуацию.
КонецПопытки – Ключевое слово, которое завершает структуру оператора обработки исключительных ситуаций.
Пример:
Процедура СформироватьВExcel()
Попытка
// Пытаемся обратиться к программе MS Excel
Табл = Новый ComObject (“Excel.Application”);
Исключение
Предупреждение(ОписаниеОшибки());
Возврат ;
КонецПопытки;
// Операторы формирования отчета
…
КонецПроцедуры
Процедура (Procedure)
Описание:
Ключевое слово Процедура начинает секцию исходного текста, выполнение которого можно инициировать из любой точки программного модуля, просто указав ИмяПроцедуры() с о списком параметров (если параметры не передаются, то круглые скобки, тем не менее, обязательны). Если в модуле приложения или общем программном модуле в теле описания процедуры использовано ключевое слово Экспорт, то это означает, что данная процедура является доступной из всех других программных модулей конфигурации.
При выполнении оператора Возврат процедура заканчивается и возвращает управление в точку вызова. Если в тексте процедуры не встретился оператор Возврат, то после выполнения последнего исполняемого оператора происходит выполнение неявного оператора Возврат. Конец программной секции процедуры определяется по оператору КонецПроцедуры .
Переменные, объявленные в теле процедуры в разделе Объявления локальных переменных, являются локальными переменными данной процедуры, поэтому доступны только в этой процедуре (за исключением случая передачи их как параметров при вызове других процедур, функций или методов).
ПРИМЕЧАНИЕ. Ключевые слова Процедура , КонецПроцедуры являются не операторами, а операторными скобками, поэтому не должны заканчиваться точкой с запятой (это может приводить к ошибкам выполнения модуля).
Синтаксис:
Процедура < ИмяПроцедуры>([[Знач] [=], … ,[Знач] [=]] )[ Экспорт ]
// Объявления локальных переменных;
// Операторы;
…
[ Возврат; ]
// Операторы;
…
КонецПроцедуры
Англоязычный синтаксис:
Procedure ([[Val] [=], … ,[Val] [=]] )[ Export ]
// Объявления локальных переменных;
// Операторы;
…
[ Return;]
// Операторы;
…
EndProcedure
Перем Глоб ;
// Описание процедуры
Процедура МояПроцедура(Пар1, Пар2, Пар3) Экспорт
Глоб = Глоб + Пар1 + Пар2 + Пар3 ;
Возврат;
КонецПроцедуры
Глоб = 123;
МояПроцедура(5, 6, 7); // Вызов процедуры
УдалитьОбработчик (RemoveHandler)
Описание:
Удаляет обработчик события.
При удалении обработчика события производится проверка соответствия числа параметров события числу параметров метода, назначенного в качестве
обработчика.
Синтаксис:
УдалитьОбработчик , ;
Англоязычный синтаксис:
RemoveHandler , ;
Параметры:
– Событие, обработчик которого удаляется.
Событие задается в форме ., где:
● – произвольное выражение на встроенном языке. Его результатом должен быть объект, обработчик события которого удаляется.
● – идентификатор (имя) события.
– Процедура/функция-обработчик события.
Обработчиком события может являться метод объекта встроенного языка. Тогда задается как .,
где:
● – произвольное выражение на встроенном языке. Его результатом должен быть объект, метод которого служит обработчиком события.
● – имя метода обработчика события.
Также в качестве обработчика события может быть задана процедура/функция, находящаяся в области видимости. В этом случае обработчик события
задается как имя процедуры/функции.
Пример:
УдалитьОбработчик Накладная.ПриЗаписи, Обработка.ПриЗаписиДокумента;
Функция (Function)
Описание:
Ключевое слово Функция начинает секцию исходного текста функции, выполнение которой можно инициировать из любой точки программного модуля,
просто указав ИмяФункции со списком параметров (если параметры не передаются, то круглые скобки, тем не менее, обязательны). Если в модуле приложения или общем программном модуле в теле описания функции использовано ключевое слово Экспорт, то это означает, что данная функция является доступной из всех других программных модулей конфигурации.
Выполнение функции заканчивается оператором Возврат . Функции отличаются от процедур только тем, что возвращают ВозвращаемоеЗначение . Конец
программной секции функции определяется по оператору КонецФункции.
Вызов любой функции в тексте программного модуля можно записывать как вызов процедуры, т. е. в языке допускается не принимать от функции
возвращаемое значение.
Если ключевое слово Возврат в теле функции не указано или строка модуля, его содержащая, не выполнена, то функция возвращает значение типа Неопределено.
Переменные, объявленные в теле функции в разделе Объявления локальных переменных, являются локальными переменными данной функции, поэтому доступны только в этой функции (за исключением случая передачи их как параметров при вызове других процедур, функций или методов).
ПРИМЕЧАНИЕ. Ключевые слова Функция, КонецФункции являются не операторами, а операторными скобками, поэтому не должны заканчиваться точкой с запятой (это может приводить к ошибкам выполнения модуля).
Синтаксис:
Англоязычный синтаксис:
Function ([[Val] [=], … ,[Val] [=] ])[ Export ]
// Объявления локальных переменных;
// Операторы;
…
Return ;
// Операторы;
…
EndFunction
Пример:
Перем Глоб;
// Описание функции
Функция МояФункция(Пар1, Пар2, Пар3) Экспорт
Глоб = Глоб + Пар1 + Пар2 + Пар3;
Возврат Глоб ;
КонецФункции
Глоб = 123;
Рез = МояФункция(5, 6, 7) ; / / Вызов функции
Есть обработка. При выборе в определенное поле данных из справочника подставляются данные в четыре следующих поля. А как программно пропустить эти поля, чтобы не проходить по ним.
Сейчас сделал так:
[1C-CODE] Форма.фоДолжностьСтарая.Доступность(0);
Форма.фоПодразделениеСтарое.Доступность(0);
Форма.фоОкладТарифСтарый.Доступность(0);
Форма.фоРазрядСтарый.Доступность(0);
Форма.Активизировать("фоПодразделениеНовое", 1);
[/CODE
при выполнении ругается
Форма.Активизировать("фоПодразделениеНовое", 1);
<-------------------)>: Поле агрегатного объекта не обнаружено (Активизировать)
Как у меня организована передача фокуса в форме документа "Путевой лист". Использую фиктивное закрытие формы.
Перем ПередатьФокус;
.
Процедура ПриЗакрытии()
Если ПустоеЗначение(ПередатьФокус) = 0 тогда
Активизировать(ПередатьФокус);
СтатусВозврата(0);
ПередатьФокус = "";
Возврат;
КонецЕсли;
КонецПроцедуры //ПриЗакрытии
.
Процедура РассчитатьТопливо()
// Эта процедурка прописана в нескольких реквизитах документа (СпидометрВыезда, СпидометрВозвращения и т.д.) на вкладке "Дополнительно" в поле "Формула". Реквизиты оформлены как поле ввода числа.
Если Автомобиль.Выбран() = 0 Тогда
Возврат;
КонецЕсли;
Если СпидометрВозвращения < СпидометрВыезда Тогда
Расход = 0;
РасходНорма = 0;
Разница = 0;
ПробегПринятый = 0;
ПробегФакт = 0;
Результ = "";
Возврат;
КонецЕсли;
ПересчетРасхода();
Если Форма.АктивныйЭлемент() = "СпидометрВыезда" Тогда
ПередатьФокус = "СпидометрВозвращения";
Форма.Закрыть(0);
ИначеЕсли Форма.АктивныйЭлемент() = "СпидометрВозвращения" Тогда
ПередатьФокус = "Выдано";
Форма.Закрыть(0);
ИначеЕсли Форма.АктивныйЭлемент() = "Выдано" Тогда
ПередатьФокус = "ОстатокНачальный";
Форма.Закрыть(0);
ИначеЕсли Форма.АктивныйЭлемент() = "ОстатокНачальный" Тогда
ПередатьФокус = "ОстатокКонечный";
Форма.Закрыть(0);
ИначеЕсли Форма.АктивныйЭлемент() = "ОстатокКонечный" Тогда
ПередатьФокус = "Сдано";
Форма.Закрыть(0);
КонецЕсли;
КонецПроцедуры // РассчитатьТопливо()
Есть два вида поступление гос и не гос сырья, есть переключатели в которых определяется гос или не гос, так вот если гос то цену и сумму вводить не надо само посчитаеся вместе с НДС, а если не гос то и НДС надо выбрать и цену ввести, поэтому и нажна процедурка ПропускатьПриВводе если бы конечна такая была
Если надо перескочить через колонку при вводе, то можно имитировать нажатие клавиш при помощи WScript.Shell (метод SendKeys). Т.е. послать еще одно или несколько нажатий Enter. Если, конечно, галки "Пропускать при вводе" в свойствах реквизита (колонки таблицы) на форме недостаточно.
Да както я прорвавшись на просторы всемирного бардака(инета) поспорил с тобой и с БорисомГ о том что упс-ы это лажа, и неспасут при "удачном" стечении обстоятельств(не пропадание/броски и пр.).
Все равно не вспомнил. УПСы штука хорошая. Но только когда его подключение делает специалист, правильно рассчитав параметры оборудования и подоврав соответствующий УПС. P.S. Летом у клиента вылетел админ со свистом - мало того что это чудо ухитрилось посадить сервер на БЭК-упс, так оно еще и вторую подсетку в цех не защитило грозозащитой. Результат - вылетел сервер, 3 или 4 компа, свичи при грозе. а то, что ложили мы - выжило нормально, просто сделано было правильно и мы не поленились даже там, где можно, телефоны и факсы посадить через УПС (питание факсов и саму линию - на новых УПС от АРС идет встроенная грозозащита для РЖ-45 и РЖ-11). Результат - нежненький факс живет, а тупой телефон без электроники вылетел.
А всеравно фихня, видел такое что "не в сказке сказать ни пером описать" друх даже сфоткал показания осцилографа(ты меня тогда поддел о вере в осцилограф) который был только включен в розетку(осцилограф был не хухры-мухры - "стильный"-промышленный) с замкнутым накоротко входом, на экране была полупила на 100 герц(понятно "выпрямление" сети) а у него(осцилографа) блок питания, дак любые упсы-суперпупер по сравнению с его питанием - так, что велик с боингом сравнивать.
хе-хе. пара случаев из моей электрической практики комп секретутки без УПСа зависал. Каждый день ровно в 10-50. Причину нашли - в сеть гадила СВЧ-печка в соседней комнате. а УПС своим сетевым фильтром аккуратно все .авно вырезал. второй случай - неправильно подключили транс. примитивный понижающий. при этом - 10А автомат в щите в комнате не сработал. 16А плавкая вставка в щите в комнате - как новая 25А автомат в щите в коридоре - не сработал и только старая добрая, древняя как .авно от мамонта 100А плавкая вставка в щите в подвале разлетелась вдребезги. Ради интереса повторили эксперимент еще 2 раза - эффект тот же. Опять таки ради интереса отнес автоматы в лабораторию на проверку - дали 100% годность к эксплуатации . (10А автомат кстати - французский, отключает фазу и ноль, плюс на нем защита по утечке). так что с осциллографом надо было просто разбираться. P.S. таракан, который после пробежки по разлитому сладкому (!) чаю попал на плату - дает такие чУдные эффекты.
Тут ты неправ, всеж питание у него(осцилографа) и фильтрация в сравнении с любым смарт-суперпуперсмарт-суперпуперсмногимпреобразованием упсом "гораздо длинее", первое что предположил друх-неисправен осцилограф, но это было не так, и поверь моему 10+5 летнему опыту в электронике(несчитая 10 лет в компах) что всеж такого неможет быть потомучто быть такого неможет(хотя знаю как объяснить) хотя было, и три включенных каскадно упса(конечно не суперских но и не самого отстоя) + 2 фильтра(они пожалуй были получчее упсов) неспасало серв, замерял плюсом электромагнитное излучение(спецприбор, а в принципе обыкновенный(несовсем) микровольтметр) во время того и после того - однописуарно, да и в сети(казалось) небыло скачков/помех(ну как обычно в другое время и импульсные помехи и частота до 48,5 герц падала но серв стоял как вкопанный), вот так и непонял толком что это было, продолжалось неделю, потом и без упса и фильтра, да и заземление снимал все было харашо.
То : я что то смотрел в типовых примерах ничего не нашел, может не те типовые примеры, может на mistа где нибудь можно посмотреть, подскажи плиз в каком месте копать?
как его отключить?
вот эт не помогло
Выпадающее при вводе поле
Подскажите, как это можно реализовать. А именно, как при активации элемента для ввода, вроде того.
ну и че те надо чтобы было?
чтобы был контрагент фыаваувыф нужно его создать.
чтобы создать контрагент нужно создать объект типа справочники.контрагенты.создатьновый()
или типа того.
покажи код "ЕстьТакойКонтрагентВСправочнике"
Добавлено через 34 минуты
не помогло уже пробывал
Надеюсь КонтрагентАвтоПодбор() Привязан на событие АвтоПодборТекста()?!
А то параметров многовато.
Добавлено через 5 минут
Кстати, при условии привязки описанной выше, система возьмет значение СтандартнойОбработки из параметра "Ожидание" в вашем случае, так что надо писать
Надеюсь КонтрагентАвтоПодбор() Привязан на событие АвтоПодборТекста()?!
А то параметров многовато.
Добавлено через 5 минут
PPS
Кстати, система возьмет значение стандартной обработки из параметра "Ожидание" в вашем случае, так что надо писать
Кстати, система возьмет значение стандартной обработки из параметра "Ожидание" в вашем случае, так что надо писать
Код 1C
1
Ожидание = ложь;
Система ждет значение стандартной обработки в 4-ом параметре, а он у вас ожидание.
измените описание функции на
И должно начать работать.
Добавлено через 2 минуты
PS
Кстати, я не уверен что он вообще корректно отработает, лучше остановиться на 4-ех параметрах, т.е. использовать стандартный обработчик, а ваш вызывать внутри него.
PPS
Хотя такое должен съесть
Система ждет значение стандартной обработки в 4-ом параметре, а он у вас ожидание.
измените описание функции на
И должно начать работать.
Добавлено через 2 минуты
PS
Кстати, я не уверен что он вообще корректно отработает, лучше остановиться на 4-ех параметрах, т.е. использовать стандартный обработчик, а ваш вызывать внутри него.
PPS
Хотя такое должен съесть
ничего не помогло в решение, но ошибок не было.
не знаю. Я уже пробывал выше написанные предложения и они не получились и поэтому решил уже сюда написать т.к в инете чет ничего не нашел. Все равно спасибо вам, что уделили внимания и за помощь
Автодополнение текста при вводе в поле
Hi ALL! Реально ли сделать автодополнение текста при вводе для поля Dialog List (дополнение.
Загрузка из БД в текстовое поле при вводе
как при вводе пользователя в текстовое поле вывести варианты выбора из бд по определенному столбцу.
Разделитель числа при вводе в поле
Добрый день. Подскажите, плз, что нужно сделать, чтобы при вводе числа сразу появлялись.
Как сделать чтобы при вводе текста в поле, при введении каждого нового символа фильтр обновлялся, а текст в по
Написал фильтр для поля формы, он как только фокус возвращается в поле, весь текст выделяется и при.
Статья входит в цикл «Первые шаги в разработке на 1С». Она продолжает тему, затронутую в предыдущей статье, и описывает новые приёмы работы, которые появились в конфигураторе платформы «1С:Предприятие 8».
Прочитав статью, вы узнаете:
- Что такое контекстная подсказка и как она помогает при написании программного кода?
- Для чего нужны шаблоны текста и как их применять на практике?
- Зачем использовать группировку строк программного кода?
- Как выделение цветом может улучшить удобство работы с редактором кода?
- В чем удобство нового поиска в дереве конфигурации?
- Как быстро отобразить объекты нужной подсистемы?
- Какие инструменты рефакторинга и отказа от модальности существуют и как ими пользоваться?
Применимость
В статье рассматривается возможности конфигуратора на примере платформы «1С:Предприятие» редакций 1C 8.3.5 – 8.3.11, поэтому вся информация актуальна.
Улучшения в конфигураторе платформы «1С:Предприятие 8.3»
При выпуске новой версии платформы «1С:Предприятие 8.3» разработчики добавили в нее несколько интересных и полезных нововведений, чтобы упростить ежедневный труд сотен разработчиков по всей стране.
Контекстная подсказка
Теперь при написании программного кода модуля в редакторе конфигуратора контекстная подсказка отображает не только допустимые в данном контексте имена переменных и процедур, но и параметры редактируемой в данный момент процедуры или функции.
Новая функциональность доступна как для встроенных процедур, так и для собственных процедур разработчика.
Подсказка со списком параметров выглядит следующим образом:
Для увеличения нажмите на изображение.
Параметр процедуры, который следует сейчас ввести, выделяется жирным шрифтом. Ниже под горизонтальной чертой располагается описание текущего параметра. Если он является обязательным, на этом акцентируется внимание при помощи текста в скобках.
При наличии нескольких вариантов синтаксиса встроенной процедуры в заголовке становятся доступны стрелки, предназначенные для переключения между этими вариантами.
Контекстная подсказка для параметров процедур и функций вызывается нажатием сочетания клавиш Ctrl + Shift + Пробел. Также ее можно вызвать автоматически при наборе символов “(“ и “, ”. Это поведение можно включить в диалоге параметров конфигуратора (пункт меню Сервис – Параметры, закладка Модули – Контекстная подсказка):
Следующей полезной особенностью новой контекстной подсказки является возможность отображать параметры пользовательских процедур и функций.
Для увеличения нажмите на изображение.
Напомним, что существует документ “Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8”, в котором описаны рекомендации фирмы “1С” к разрабатываемому программному коду.
В частности, есть рекомендации по оформлению комментария к заголовку процедуры.
Так, секция “Параметры” описывает параметры процедуры (функции). Если их нет, секция пропускается.
Предваряется строкой “Параметры:”, затем с новой строки размещаются описания всех параметров. Описание параметра начинается с новой строки, далее следуют имя параметра, затем дефис и список типов, далее – дефис и текстовое описание параметра.
И конфигуратор анализирует комментарии, написанные по таким правилам, и использует их для отображения контекстной подсказки!
Для увеличения нажмите на изображение.
Чтобы избежать ручного написания комментария по приведенному формату, в платформе предусмотрены шаблоны текста, ознакомиться с которыми можно, нажав сочетание клавиш Ctrl + Shift + T.
Шаблон с наименованием “Процедура (с заголовком)” как раз и формирует правильный комментарий.
Чтобы этот шаблон сработал, достаточно набрать в редакторе символы “Проц”, нажать Ctrl+Q и выбрать нужный шаблон из предлагаемого системой списка.
Группировка строк программного кода
Модули типовых решений на платформе “1С:Предприятие 8” достаточно объемные, содержат достаточно большое количество строк кода.
Для повышения удобства чтения и анализа программного кода были реализованы функции группировки условных и циклических операторов, а также процедур.
Платформа 8.3 предоставляет еще одну возможность – сгруппировать произвольные строки модуля в одну группу по логическому принципу, а затем свернуть ее, чтобы она занимала меньше места на экране для повышения читабельности текста.
Во время исполнения программного кода данные инструкции игнорируются. Они нужны только для обозначения сворачиваемых строк кода.
Для увеличения нажмите на изображение.
Нужно следить, чтобы группируемые области не пересекались между собой, потому что в таком случае они не будут сворачиваться на экране.
В диалоге параметров конфигуратора (пункт меню Сервис – Параметры, закладка Модули – Группировка) можно настроить группировку и сворачивание областей текста.
Выделение цветом конструкций
Теперь в редакторе текста на встроенном языке подсвечиваются цветом синтаксические конструкции, на которых в данный момент установлен курсор. Например, начало и конец процедуры (функции), условного оператора и оператора цикла:
Для увеличения нажмите на изображение.
Еще одним новшеством платформы является выделение цветом открывающихся и закрывающихся скобок. Это очень полезно при написании длинных выражений, когда синтаксический контроль сообщает об ошибке, и разработчику необходимо найти лишнюю или недостающую скобку.
Для увеличения нажмите на изображение.
В диалоге параметров конфигуратора (пункт меню Сервис – Параметры, закладка Модули – Редактирование) можно настроить выделение цветом еще нескольких полезных конструкций.
Если выбрать параметр “Текущий идентификатор” и назначить ему цвет, отличный от цвета фона редактирования (по умолчанию – белый), то при установке курсора на какой-либо идентификатор программного кода он сам выделяется выбранным цветом, а кроме того выделяются все такие же идентификаторы, встречающиеся в модуле, и строковые константы с заключенным в кавычки этим же идентификатором:
Для увеличения нажмите на изображение.
Также интерес представляет параметр “Выбранный идентификатор”. Если для него установлен цвет, не совпадающий с цветом фона редактирования, то при двойном щелчке мышью по идентификатору будет подсвечен и он, и все совпадающие идентификаторы в тексте модуля.
Для увеличения нажмите на изображение.
При выполнении поиска в тексте модуля при помощи строки поиска или после нажатия сочетания клавиш Ctrl + F найденное слово выделяется, а все такие же найденные слова подсвечиваются.
Для увеличения нажмите на изображение.
Объединение ячеек табличного документа
Ранее ячейки табличного документа можно было объединить только с помощью пункта меню или соответствующей кнопки командной панели.
Теперь появилось сочетание клавиш Ctrl + M, при нажатии которого и происходит объединение ячеек табличного документа. Также операция “Объединить” доступна в контекстном меню табличного документа.
Надеемся, что и в следующих релизах платформы «1С:Предприятие 8» разработчики будут уделять внимание повышению удобства работы с конфигуратором.
Новые возможности для разработчика в «1С:Предприятие 8.3.5»
Поиск в конфигураторе
Пользоваться поиском при конфигурировании приходится постоянно. Пока конфигурация содержит относительно небольшое количество объектов метаданных, можно осуществлять поиск визуально – глазами, прокручивая дерево конфигурации.
Однако типовые конфигурации достаточно объемны, и при таком подходе поиск будет занимать длительное время.
До выхода платформы 8.3.5 поиск по дереву метаданных можно было осуществить следующим образом:
- набирать с клавиатуры название объекта, при этом система будет искать по совпадению наименования с первой буквы названия, но только в развернутых строках дерева конфигурации;
- при помощи сочетания клавиш Ctrl+F открыть окно поиска:
Найденные объекты будут выведены в окно Результаты поиска, из которого по двойному щелчку мышью можно перейти к нужному объекту метаданных в дереве конфигурации.
В платформе 8.3.5 появилось новое поле поиска, расположенное над деревом конфигурации:
Поиск выполняется по вхождению строки, анализируются свойствам объектов конфигурации Имя, Синоним и Комментарий.
Причем дерево конфигурации фильтруется “на лету”: в нем остаются только объекты, удовлетворяющие введенному фильтру.
Рассмотрим, что обозначают цвета, которыми раскрашены объекты, оставшиеся в дереве после применения фильтра.
Если строка поиска была найдена, то имя такого объекта выделяется в дереве конфигурации черным цветом.
Если кроме того искомая строка присутствует в имени объекта (не в синониме, не в комментарии), то такие вхождения выделяются красным цветом.
Серым цветом выделяются объекты, сами не подходящие под введенный фильтр, но имеющие в своем составе подчиненные (дочерние) объекты, удовлетворяющие заданному фильтру.
На приведенном выше рисунке реквизит ИдентификаторПользователяИБ справочника Пользователи отображается в дереве, т.к. его синоним содержит подстроку “пост”:
Допустимо вводить для поиска несколько подстрок, разделенных пробелами:
Аналогичная строка поиска появилось и у окна, содержащего набор свойств выделенного объекта (палитра свойств):
Найденные свойства будут выведены общим списком, без разбивки по категориям.
Поиск будет осуществляться либо по именам свойств, либо по представлениям свойств (разница приведена на двух скриншотах выше).
Переключиться между режимами имя/представление можно с помощью команды “Отображать имена свойств” контекстного меню:
Такая же строка поиска была добавлена в окне выбора типа данных:
И в окно выбора объекта метаданных (например, выбора регистра сведений, который будет использоваться в качестве графика для регистра расчета):
Быстрое отображение объектов подсистемы
Для быстрого отображения объектов, входящих в одну конкретную подсистему, в контекстном меню появился новый пункт “Объекты подсистемы”:
Напомним, как такого можно было добиться в предыдущих версиях платформы.
Нужно было открыть окно отбора по подсистемам, установить в нем галочку на требуемую подсистему, со всех остальных подсистем галочки снять:
Теперь получить тот же самый результат можно быстрее. Кроме того, чаще всего используется и наиболее востребован отбор именно по одной подсистеме.
А, следовательно, это маленькое удобное новшество сэкономит время разработчика.
Быстрое отображение объектов, захваченных в хранилище
Если конфигурация подключена к хранилищу, то в командной панели над самим деревом конфигурации доступна кнопка “Захваченные объекты”:
Теперь фильтрация выполняется непосредственно в дереве конфигурации, не нужно открывать отдельное окно для работы с хранилищем, в нем устанавливать отборы на захваченные объекты.
Инструменты рефакторинга
Когда над конфигурацией работает группа из нескольких разработчиков, необходимо следить за понятностью кода, следованием общим стандартам.
Контролировать это постоянно не всегда возможно, поэтому периодически проводятся работы по улучшению читаемости кода, пересмотру уже реализованных фрагментов.
Такие действия именуются рефакторингом кода. Это процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы.
Кроме этого разработчикам предстоит выполнить в своих конфигурациях работу по отказу от модальности – устранению модальных вызовов.
Поэтому в конфигураторе платформы 8.3.5 появились механизмы рефакторинга кода и инструменты работы с модальными вызовами.
Они доступны в контекстном меню текстового редактора конфигуратора в отдельном меню Рефакторинг.
Для увеличения нажмите на изображение.
Рассмотрим подробнее реализованные инструменты рефакторинга.
1. Выделить фрагмент
Эта команда преобразует выделенный участок кода в отдельную процедуру или функцию.
Если процедура, внутри которой расположен выделенный участок, содержит директиву компиляции (&НаКлиенте, &НаСервере и т.д.), то создаваемая процедура или функция будет иметь такую же директиву компиляции.
Если выделенный участок кода может быть расположен в правой части оператора присваивания, то будет создаваться функция. Рассмотрим пример. Пусть есть фрагмент кода:
Читайте также: