01. Базовае типы и системные функции

Получить символ в строке в заданной позиции

// Функция получения символа из строки в заданной позиции// // Параметры:// Строка - Строка, из которой берется символ// Поз - Позиция получаемого символа в строке//// Возвращаемое значение:// Символ из запрашиваемой позиции//Функция ПолучитьСимвол(Строка, Поз) Возврат Сред(Строка, Поз, 1); КонецФункции

Как явно указать нужную дату?

'20050308' Дата(2005, 1, 1) Дата(1, 1, 1) Дата(2005, 1, 1, 10, 29, 50) ДАТАВРЕМЯ(2005, 01, 01)

Как проверить дату на пустое значение?

Если ДатаПроверяемая = Дата(1, 1, 1) Тогда Сообщить("Пустая дата!");КонецЕсли;

Как сравнить две даты (дни)?

Если НачалоДня(Дата1) = НачалоДня(Дата2) Тогда Сообщить("Дни совпадают!");КонецЕсли;

Как прибавить к дате день, месяц?

СледующийДень = ТекущаяДата() + 60 * 60 * 24; ДобавитьМесяц(Дата(2005, 1, 31), 1); ДобавитьМесяц(Дата(2005, 2, 28), -1); КонецМесяца(ДобавитьМесяц(Дата(2005, 2, 28), -1));Функция ПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней) Запрос = Новый Запрос(" |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата"; Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата); Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней); ВозвратЗапрос.Выполнить().Выгрузить()[0].Дата; КонецФункции

Как можно проверить тип значения переменной на равенство нужному?

ИмяНужногоТипа = "ДокументСсылка.РеализацияТоваров"; Если ТипЗнч(ОбрабатываемыйДокумент) = Тип(ИмяНужногоТипа) Тогда // Строки кода, выполняемые при истинности условия.

КонецЕсли;

Как очистить значение, имеющее тип "Хранилище значения"?

РеквизитХранилище = Неопределено;

Как проверить тип значения, помещенного в реквизит имеющий тип "Хранилище значения"?

Значение = Фотография.Получить(); Если Значение <> Неопределено Тогда Если ТипЗнч(Значение) = Тип("Строка") Тогда // Обработать строку. ИначеЕсли ТипЗнч(Значение) = Тип("Картинка") Тогда // Обработать картинку. Сообщить("Картинка"); КонецЕсли; КонецЕсли;

Как сжать данные, помещаемые в хранилище значения?

СопроводительнаяИнформация = Новый ХранилищеЗначения(ПомещаемоеЗначение, Новый СжатиеДанных(9));

Как применить округление при работе с вычисляемыми числовыми полями в запросе?

ВЫБРАТЬ ПродажиОбороты.Номенклатура, ВЫРАЗИТЬ(ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот КАК ЧИСЛО(15, 2)) КАК СредняяЦенаПродажи ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты

Как вывести многострочное предупреждение?

Предупреждение("На складе: " + Остаток + Символы.ПС + "В резерве : " + Зарезервировано + Символы.ПС + "Свободный остаток: " + (Остаток - Зарезервировано), 20, "Состояние остатков");

Как вывести число прописью по-русски, с указанием сотых в дробной части?

ПараметрыПредметаИсчисления = "целая, целых, целых, ж, сотая, сотой, сотых, ж, 2";ФорматнаяСтрока = "Л=ru_RU; ДП=Истина"; Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));

Как вывести прописью число килограммов с указанием дробной части в граммах?

ПараметрыПредметаИсчисления = "килограмм, килограмма, килограммов, м, грамм, грамма, граммов, м, 3"; ФорматнаяСтрока = "Л=ru_RU; ДП=Истина";

Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));

Как долларовую сумму вывести прописью по-английски?

ФорматнаяСтрока = "Л=en_US"; ПараметрыПредметаИсчисления = "dollar, dollars, cent, cents, 2";

Сообщить(ЧислоПрописью(Сумма, ФорматнаяСтрока, ПараметрыПредметаИсчисления));

Как загрузить внешнюю компоненту?

Попытка ЗагрузитьВнешнююКомпоненту("scanopos.dll") Исключение Сообщить("Ошибка загрузки внешней компоненты!"); КонецПопытки; Попытка // Получить объект компоненты. Объект = Новый("AddIn.Scanner"); Исключение Сообщить("Не удалось создать объект внешней компоненты");

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

Как выполнить команду операционной системы?

КомандаСистемы("del *.* /q", "c:\temp"); КомандаСистемы("cmd"); ЗапуститьПриложение("ШаблонДоговора.doc");

Как посчитать сумму по формуле сложного процента?

Функция СложныйПроцент(Кредит, Ставка, Срок = 1) Возврат Кредит*Pow(1 + Ставка/100, Срок); КонецФункции

Как задать вопрос пользователю?

Если Товары.Количество() > 0 Тогда Ответ = Вопрос("Табличная часть будет очищена! Продолжить?", РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да, "Внимание!"); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; КонецЕсли;Товары.Очистить();

Или другой вариант

&НаКлиентеПроцедура СписокСостоянияУзловВыбор(Элемент) ОписаниеОповещения = Новый ОписаниеОповещения("ПроцедураОбработкиПослеВопроса", ЭтотОбъект); // Создать обработчик ПоказатьВопрос(ОписаниеОповещения, НСтр("ru = 'Выполнить обработку данных?'"), РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да); КонецПроцедуры&НаКлиентеПроцедура ПроцедураОбработкиПослеВопроса(Ответ, ДополнительныеПараметры) Экспорт Если Ответ = КодВозвратаДиалога.Да Тогда // обработка "ДА" Иначе //Обработка "НЕТ" КонецЕсли;КонецПроцедуры

Как обработать строку параметров

дано:

Список = "Параметр1, Параметр2, ..." Список = Список + ?(Прав(Список, 1) = ",", "", ",");ЧислоПараметров = СтрЧислоВхождений(Список, ",");Для Счетчик = 1 По ЧислоПараметров Цикл ПозЗапятой = Найти(Список, ","); Если ПозЗапятой > 0 Тогда ИмяПараметра = Лев(Список, ПозЗапятой - 1); Список = Сред(Список, ПозЗапятой + 1, СтрДлина(Список)); // обработка параметраКонецЕсли;КонецЦикла;

Как показать сообщение пользователю с привязкой к элементу формы

Процедура Пример_СообщениеПользователюСПривязкой() // Сообщение.КлючДанных = Ссылка на объект базы или ключ записи // Сообщение.ПутьКДанным = содержит путь в форме до объекта. // показываем сообщение из обработки // КлючДанных и ПутьКДанным - пустые Сообщение = Новый СообщениеПользователю; Сообщение.Поле = "Комментарий"; Сообщение.Текст = "Заполните комментарий"; Сообщение.Сообщить(); // показываем сообщение из документа // КлючДанных - пустой, ПутьКДанным заполнится автоматически Сообщение = Новый СообщениеПользователю; Сообщение.Поле = "Товары[0].Количество"; Сообщение.Текст = "Не заполнено количество товара в первой строке!"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить();

КонецПроцедуры

Как сгенерировать случайное число

Процедура Пример_ГенераторСлучайныхЧисел() // инициализируем временем работы ОС ГСЧ = Новый ГенераторСлучайныхЧисел(); Сообщить(ГСЧ.СлучайноеЧисло(0, 1)); // инициализируем своим числом ГСЧ = Новый ГенераторСлучайныхЧисел(0); Сообщить(ГСЧ.СлучайноеЧисло(1, 100)); КонецПроцедуры

Как получить системную информацию

Процедура Пример_ПолученияСистемнойИнформации() СисИнфо = Новый СистемнаяИнформация; // версия операционной системы Сообщить(СисИнфо.ВерсияОС); // версия приложения Сообщить(СисИнфо.ВерсияПриложения); // количество оперативной памяти Сообщить(СисИнфо.ОперативнаяПамять); // тип процессора Сообщить(СисИнфо.Процессор); // тип платформы Сообщить(СисИнфо.ТипПлатформы);КонецПроцедуры

Как работать со списком пользователей

Процедура Пример_РаботаСоСпискомПользователей() // как получить список пользователей Пользователи = ПользователиИнформационнойБазы. ПолучитьПользователей(); Для Каждого Пользователь Из Пользователи Цикл Сообщить(Пользователь.Имя); // перечислим роли пользователя Для Каждого Роль Из Пользователь.Роли Цикл Сообщить(" >>" + Роль); КонецЦикла; КонецЦикла; // как получить текущего пользователя Сообщить(ПользователиИнформационнойБазы.ТекущийПользователь()); // как создать нового пользователя Ползователь = ПользователиИнформационнойБазы.СоздатьПользователя(); Пользователь.Имя = "Васечкин А.В."; Пользователь.Пароль = "123"; Пользователь.Роли.Добавить(Метаданные.Роли.Администратор); //Пользователь.Записать(); // как найти пользователя по имени Пользователь = ПользователиИнформационнойБазы. НайтиПоИмени("Васечкин А.В."); // как удалить пользователя //Пользователь.Удалить(); // как узнать являюсь ли я администратором Сообщить( ПользователиИнформационнойБазы. ТекущийПользователь().Роли.Содержит( Метаданные.Роли.Администратор)); КонецПроцедуры