Функция ЭтоЧисло(Символ) Экспорт
Если (КодСимв(Символ)>=48) И (КодСимв(Символ)<=57) Тогда
Возврат(1);
Иначе
Возврат(0);
КонецЕсли;
КонецФункции
//функция возвращает копейки
Функция гКопейки(Значение) Экспорт
Грн=Цел(Значение);
Коп=Значение-Грн;
Возврат(Коп
0);
КонецФункции
//функция возвращает сумму без скидки
Функция гСкидка(Сумма,Скидка) Экспорт
Возврат Сумма*(1-Скидка/100);
КонецФункции
//функция устанавливает новое значение реквизита документа или справочника и задаёт вопрос, если новое значение не соответствует предыдущему
Функция гЗначение(Ко,Атрибут,Значение) Экспорт
Знач1=Ко.ПолучитьАтрибут(Атрибут);
Знач2=Значение;
//проверка
Если Не(ТипЗначенияСтр(Знач1)=ТипЗначенияСтр(Знач2)) Тогда
//несоответствие типов
Возврат(0);
ИначеЕсли Не(ТипЗначенияСтр(Знач2)="Число") И (ПустоеЗначение(Знач2)=1) Тогда
//пустое новое значение
Возврат(0);
КонецЕсли;
//реквизит
Если Метаданные.Документ(Ко.Вид()).Выбран()=1 Тогда
//документ
Если Метаданные.Документ(Ко.Вид()).РеквизитШапки(Атрибут).Выбран()=1 Тогда
Ж=Метаданные.Документ(Ко.Вид()).РеквизитШапки(Атрибут);
Имя=Ж.
Представление();
ИначеЕсли Метаданные.Документ(Ко.Вид()).РеквизитТабличнойЧасти(Атрибут).Выбран()=1 Тогда
Ж=Метаданные.Документ(Ко.Вид()).РеквизитТабличнойЧасти(Атрибут);
Имя=Ж.
Представление()+" (строка "+Ко.НомерСтроки+")";
Иначе
Ж=Метаданные.ОбщийРеквизитДокумента(Атрибут);
Имя=Ж.
Представление();
КонецЕсли;
ИначеЕсли Метаданные.Справочник(Ко.Вид()).Выбран()=1 Тогда
//справочник
Ж=Метаданные.Справочник(Ко.Вид()).Реквизит(Атрибут);
Имя=Ж.
Представление();
Если ПустаяСтрока(Имя)=1 Тогда
Имя=Атрибут;
КонецЕсли;
КонецЕсли;
//форматирование
Если ТипЗначенияСтр(Знач2)="Строка" Тогда
Знач1=СокрЛП(Знач1);
Знач2=СокрЛП(Знач2);
ИначеЕсли ТипЗначенияСтр(Знач2)="Число" Тогда
Знач2=Окр(Знач2,Ж.Точность);
КонецЕсли;
//проверка
Если Знач1=Знач2 Тогда
Возврат(0);
КонецЕсли;
//установка значения
Если ПустоеЗначение(Знач1)=0 Тогда
Текст=
"Атрибут: "+Имя+"
|
|Старое значение: "+СимволТабуляции+Знач1+"
|Новое значение: "+СимволТабуляции+Знач2+"
|
|Установить новое значение?";
Если Вопрос(Текст,"Да+Нет")="Нет" Тогда
Возврат(0)
КонецЕсли;
КонецЕсли;
//значение
Ко.УстановитьАтрибут(Атрибут,Знач2);
Возврат(1);
КонецФункции