Как установить отбор в справочнике «без помеченных на удаление» программным путем? Когда справочник наполняется помеченными на удаление объектами, они начинают мешать пользователям выбирать значение справочника. Бывает, что долго не представляется возможным удалить помеченные на удаление элементы. Чтобы пользователям они не мешали, можно программным путем отключить их видимость при открытии формы выбора (или формы списка) справочника с помощью предустановки отбора.
Делается это примерно таким способом. В
диалоговой форме справочника назначается процедура «При открытии». И в модуле формы пишется примерно такой код:
Код 1C v 8.х Процедура ПриОткрытии()
// чтобы для выбора справочник открывался в неиерархическом виде (чтобы не нужно было каждый раз "раскрывать" папки в поисках нужного элемента)
ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;
// можно установить ограничение - для определенной роли
//Если НЕ РольДоступна("усРазработчик") Тогда
// установка собственно ограничения видимости помеченных на удаление элементов:
ЭлементОтбора = СправочникСписок.Отбор.Найти("ПометкаУдаления");
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = СправочникСписок.Отбор.Добавить("ПометкаУдаления");
КонецЕсли;
ЭлементОтбора.Установить(Ложь);
// чтобы можно было открыть отбор и вручную сбросить установленные выше флаг отбора:
ЭлементыФормы.СправочникСписок.НастройкаОтбора.ПометкаУдаления.Доступность = Истина;
// чтобы папки не отображались:
ЭлементОтбора = СправочникСписок.Отбор.Найти("ЭтоГруппа");
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = СправочникСписок.Отбор.Добавить("ЭтоГруппа");
КонецЕсли;
ЭлементОтбора.Установить(Ложь);
// чтобы можно было открыть отбор и вручную сбросить установленные выше флаг отбора:
ЭлементыФормы.СправочникСписок.НастройкаОтбора.ЭтоГруппа.Доступность = Истина;
//КонецЕсли;
КонецПроцедуры
Источник Категория:
Справочники Функция возведения числа в степень, в дробную степень Для возведения числа в степень в 1С 8.х есть встроенная функция
pow(основание, степень);
Возвращает результат возведения основания в указанную степень.
* основание: число
* степень: число
Код 1C v 8.х //Возведем число 5 в степень 3
Результат = pow(5,3);
//Результат = 125
// Вычисление объема шара по значению радиуса
Pi=3.1415926535897932;
Радиус=3;
V=4*Pi*Pow(Радиус,3)/3;
Сообщить("Объем шара с радиусом "+Радиус+" равен "+Формат(V,"ЧДЦ=2"));
//Пример расчета сложного процента используя POW
Функция СложныйПроцент(Кредит, Ставка, Срок = 1)
Возврат Кредит*Pow(1 + Ставка/100, Срок);
КонецФункции
Возведение в дробную степень
Код 1C v 7.x
//В диалоговой форме - Лимит, Точность, СамоЧисло(неотрицательное) и //Степень.
Функция ЦелаяСтепень(а,б)
Результат=1;
Для К=1 По б Цикл
Результат=Результат*а;
КонецЦикла;
Возврат Результат;
КонецФункции
Функция ЗнаковПослеТочки(Стр)
Перем К;
Номер=Найти(Стр,".");
Если Номер=0 Тогда
Возврат 0;
КонецЕсли;
НачалоНулей=Номер+1;
Для К=Номер+1 По СтрДлина(Стр) Цикл
Если Сред(Стр,К,1)<>"0" Тогда
НачалоНулей=К;
КонецЕсли;
КонецЦикла;
Возврат Макс(НачалоНулей-Номер,0);
КонецФункции
Функция Знак(Ч)
Если Ч=0 Тогда
Возврат 0;
ИначеЕсли Ч>0 Тогда
Возврат 1;
Иначе
Возврат -1;
КонецЕсли;
КонецФункции
Функция Корень10ВСтепени(Ч,Степень)
Перем а,б;
Если Степень<0 Тогда
Сообщить("Степень <0");
КонецЕсли;
_10ВСтепени=ЦелаяСтепень(10,Степень);
Если _10ВСтепени>1 Тогда
а=0;
б=Лимит;
РезА=Ч-ЦелаяСтепень(а,_10ВСтепени);
РезБ=Ч-ЦелаяСтепень(б,_10ВСтепени);
Пока 1=1 Цикл
Текущее=(а+б)/2;
Рез=Ч-ЦелаяСтепень(Текущее,_10ВСтепени);
Если Знак(Рез)*Знак(РезА)<0 Тогда
б=Текущее;
Иначе
а=Текущее;
КонецЕсли;
Если (а-б<Точность) И (а-б>-Точность) Тогда
Возврат Текущее;
КонецЕсли;
КонецЦикла;
ИначеЕсли Степень=1 Тогда
Возврат Ч;
Иначе
Возврат 1;
КонецЕсли;
КонецФункции
Функция Степень_xyz(f,x,y,z)
Возврат ЦелаяСтепень(f,x)*ЦелаяСтепень(f,y)/Корень10ВСтепени(f,z);
КонецФункции
Функция ПоложительнаяДробнаяСтепень(а,ПоказательСтепени)
Перем Знак;
ЦелаяЧасть=Число(Строка(Цел(ПоказательСтепени)));
ДрЧасть=Сред(ПоказательСтепени,СтрДлина(Строка(ЦелаяЧасть))+2);
ВерхДробной=Число(СтрЗаменить(ДрЧасть,".",""));
Если ВерхДробной>0 Тогда
ДлинаДробной=ЗнаковПослеТочки(Строка(ПоказательСтепени));
Иначе
ДлинаДробной=0;
КонецЕсли;
x=ЦелаяСтепень(а,ЦелаяЧасть)*Корень10ВСтепени(ЦелаяСтепень(а,ВерхДробной),ДлинаДробной);
Возврат x;
КонецФункции
Функция Степень(а,б)
Если б<0 Тогда
НашаА=1/а;
НашаБ=-б;
Иначе
НашаА=а;
НашаБ=б;
КонецЕсли;
Сообщить(ПоложительнаяДробнаяСтепень(НашаА,НашаБ));
Возврат ПоложительнаяДробнаяСтепень(НашаА,НашаБ);
КонецФункции
Лимит=9999999;
Точность=0.001;
//<сообщил Пудель>
Категория:
Работа с Числами