.RU

v8: Почему не удается редактировать типовую конфигурацию? - «Действиям»



v8: Почему не удается редактировать типовую конфигурацию?







Автор статьи: Волшебник | Редакторы:
Последняя редакция №6 от 20.02.06 | ^ История
URL: http://kb.mista.ru/article.php?id=75





Ключевые слова: типовая конфигурация, редактировать, замок, обновление, поддержка, поставка, поставщик


Такой вопрос возникает, когда разработчики пытаются отредактировать типовую конфигурацию, поскольку типовые конфигурации находятся на поддержке. Это означает, что при выходе новых версий, редакций конфигураций пользователь имеет возможность в автоматическом (если конфигурация пользователя не изменялась) или полуавтоматическом режиме обновить свою конфигурацию.

Для того, чтобы была возможность полностью автоматически обновлять типовую конфигурацию при выпуске новых версий, по умолчанию конфигурация защищена от изменений. Чтобы внести изменения, нужно включить возможность изменений в окне "Конфигурация - Настройка поддержки - кнопка "Включить возможность изменений". После этого все объекты конфигурации могут редактироваться. Если возможность изменения конфигурации включена, то при обновлении конфигурации будет выполняться синхронизация сделанных изменений с изменениями поставщика.

В режиме настройки поддержки также существует возможность снять конфигурацию с поддержки, но тогда обновление не будет производиться, о чем необходимо заранее предупредить пользователя.

Смотрите также на ИТС "Обновление прикладных решений".

http://v8.1c.ru/predpriyatie/typical_problems_Common.htm#2


http://www.kb.mista.ru/article.php?id=76


^ Преобразование числа в строку, разделитель групп разрядов

При преобразовании числа из 4 цифр в строку количество символов в строке равно 5. Почему?




Автор статьи: Волшебник | Редакторы: y22-k
Последняя редакция №7 от 13.07.10 | История
URL: http://kb.mista.ru/article.php?id=76





Ключевые слова: строка, число, пробел, разделитель, неразрывный, непрерывный, символы, формат, приведение, преобразование, убрать, СтрЗаменить, триады


При стандартных региональных настройках для русского языка при приведении числа к строке между группами разрядов чисел вставляется неразрывный пробел (Символы.НПП, код символа - 160), например:

Год = 2003;

Строка1 = Строка(Число1); //Строка1 = "2 003", длина строки - 5 символов, включая неразрывный пробел

Чтобы преобразовать число к строке без вставки символа-разделителя групп (неразрывного пробела), нужно применить функцию Формат с параметром ЧГ=0:

Строка1 = Формат(Число1,"ЧГ=0");

Чтобы изменить преобразование чисел к строке по умолчанию, нужно для информационной базы установить региональные настройки (например, параметр "Группировка" установить в 0).

Для получения строкового представления года следует не получать числовое значение года, а
использовать функцию Формат. Например:

Формат(ТекущаяДата(), "ДФ=yyyy")

Смотрите также на ИТС "Особенности форматирования значений".

Есть еще один простой способ, если работаешь со строкой, можно воспользоваться следующим кодом: СтрЗаменить(Число1,Символы.НПП,"");


http://www.kb.mista.ru/article.php?id=77


^ Работа с последовательным (COM, RS-232) портом из 1С:Предприятие 7.7 и 8.0

Последовательный порт на практике служит для подключения к компьютеру считывателей штрих-кодов, электронных весов, а также другого внешнего оборудования. Статья описывает работу с последовательным портом в 1С:Предприятие 7.7 и 8.0. Приведен пример исходного кода внешней компоненты (Delphi 6), которая заменяет типовую компоненту scanopos.dll, и умеет работать с двумя или более сканерами.




Автор статьи: romix | Редакторы: Волшебник, Vovan58
Последняя редакция №16 от 13.03.08 | История
URL: http://kb.mista.ru/article.php?id=77





Ключевые слова: последовательный порт, COM, RS232, четность, кабель, сканер, RS-232, асинхронный, USB, ОбработкаВнешнегоСобытия, внешняя компонента, Delphi, scanopos.dll, TThread, торговое оборудование, связь


Интерфейс RS-232 был разработан в 1969 году рядом крупных промышленных корпораций и опубликован Ассоциацией электронной промышленности США (Electronic Industries Association — EIA). (http://ru.wikipedia.org/wiki/RS-232).

HyperTerminal


Программа HyperTerminal позволяет просматривать, что приходит на ком-порт.
Пуск-Программы-Стандартные-Связь-HyperTerminal

^ Программа Portmon для Windows


Автор: Марк Руссинович (Mark Russinovich)
Программа Portmon предназначена для отслеживания и отображения всей активности последовательных и параллельных портов в системе.
http://www.microsoft.com/rus/technet/sysinternals/utilities/Portmon.mspx

^ Приобретение правильного сканера

Меня очень часто спрашивают: почему не работает сканер штрихкодов в 1С.

Штрихкодовые сканеры различаются интерфейсом подключения. В частности, сканеры USB могут имитировать клавиатуру (это проявляется тем, что штрихкод считывается в блокноте), имитировать интерфейс RS-232 или работать по USB без имитации чего-либо. Все три варианта часто различаются шнуром, который реализует тот или иной интерфейс.

Для 1С наименее всего подходят клавиатурные сканеры: считанный штрихкод не попадет в процедуру ОбработкаВнешнегоСобытия. Поэтому, если есть такая возможность, лучше заменить такой сканер на RS-232 или USB (имитация RS-232). См. также раздел "Поддержка сканеров с клавиатурным интерфейсом"  в конце этой статьи. О подключения сканера штрих-кода через COM-порт - см. статью Книга знаний: v8: Подключение сканера штрих-кодов к 1С через COM-порт.

Существуют и более старые (не USB) варианты сканеров, которые подключаются "в разрыв клавиатуры".
Напишу еще раз: приобретения клавиатурных или имитирующих клавиатуру сканеров для работы в 1С следует избегать.

Эмуляция COM-порта при наличии USB-соединения


Имеется возможность представить порт USB "под именем" свободного COM-порта, например, при помощи драйвера (FTDI, сайт http://www.ftdichip.com), и работать с ним как с новым COM-портом.

^ Стандартные установки последовательного порта


При экспериментах я устанавливал следующие (стандартные) настройки порта: скорость 9600 бит/с, 1 стоповый бит, нет контроля четности, 8 бит/байт). Для своих опытов я использовал кабель для соединения портов COM1 и COM2. Вы можете спаять такой кабель по схеме http://subscribe.ru/archive/tech.electronics/200104/21033223.html), или приобрести его на рынке примерно за 70 рублей.    

Чувствительность к "горячему" подключению


Следует отметить, что COM и LPT-порты чувствительны к "горячему" подключению - соединяя включенные устройства, вы можете спалить порты (или что-то еще). Поэтому перед подключением устройства я рекомендую отключать их от сети питания, и только потом их выполнять их электрическое соединение.
USB этим недостатком не страдает, и дозволяет "горячее" подключение устройств.

^ Посылка тестовых данных в COM-порт


Имея тестовый кабель, вы уже можете экспериментировать с внешними компонентами для 1С:Предприятие.
Посылку тестовых данных в порт я производил из пакетного (.BAT) файла MS-DOS. Содержимое моего файла test.bat:


mode com2 baud=9600 parity=n data=8 stop=1

type c:\test.txt >com2


В файле c:\test.txt введите несколько символов (например, 1234567890) и завершите - обязательно! - их символом перевода строки (нажатием Enter).

Программа, подключенная к другому концу кабеля, может быть тестовой программой TestComPort.exe (скачайте комплект, приведенный в конце статьи; в программе надо выбрать порт - в данном случае COM1, нажать Открыть, и уже можно посылать в нее символы при помощи BAT-файла, в большом окне вы увидите принятые текстовые строки), конфигурацией для 1С:Предприятие, приложенной в этом же архиве, или стандартной конфигурацией наподобие "1С:Торговля и Склад", где активизирована работа со сканером, подключенным в последовательный порт (внешняя компонента scanopos.dll).

^ Получение внешнего события в 1С:Предприятие


Внешнее событие, например, со сканера, с другого внешнего оборудования, или просто сгенерированное программно, приходит в 1С (как 7.7, так и 8.0) в предопределенную процедуру
ОбработкаВнешнегоСобытия().

///////////////////////////////////////////////////////////////////////

Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)//Предопределенная процедура 1С

//Глобальный обработчик внешнего события

Сообщить("Внешнее событие: Источник="+Источник+" Событие="+Событие+"


Данные="+Данные);

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

Эта процедура может располагаться в глобальном модуле или модуле формы 1С:Предприятие 7.7 или 8.0. Процедура принимает три входящих параметра: Источник, Событие и Данные. Это три текстовые строки, которые могут принимать произвольные значения - в качестве Источника можно установить имя внешней компоненты, в качестве события - строку-идентификатор события, например, "BarCodeValue", а в качестве данных - данные от устройства, например, считанный штрихкод.

^ Инициализация внешней компоненты


Код процедуры ПриНачалеРаботыСистемы() в тестовой конфигурации выглядит следующим образом:

///////////////////////////////////////////////////////////////////////

Процедура ПриНачалеРаботыСистемы() //Предопределенная процедура 1С

ок=1;

Если глЗагрузитьВнешнююКомпоненту("vk_rs232")=0 Тогда

Сообщить("Внешняя компонента не была загружена!","!");

Иначе

rs232=СоздатьОбъект("AddIn.vk_rs232");

КонецЕсли;

ИмяПорта=""+Константа.ComPort;

Сообщить("Константа.ComPort: "+ИмяПорта);

Сообщить("При считывании кода, который завершается символами #13#10, здесь должны


появляться считанные строки.");

//Начинаем слушать порт

rs232.ОткрытьПорт(ИмяПорта);

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

Первый запуск конфигурации необходимо производить под правами администратора или привилегированного пользователя Windows. Это необходимо для любых внешних компонент или OLE-объектов, чтобы компонента (DLL) могла "прописать" себя в системный реестр Windows.

^ Пример работы с COM-портом


Рассмотренные ниже примеры работы с последовательным (COM-) портом будут использовать средства Windows API (системные функции CreateFile и т.д.). Для компиляции примеров потребуется Delphi версии 6 (впрочем, вы легко сможете переделать примеры под любой язык программирования, который поддерживает вызовы Windows API).

В конце статьи приведена ссылка, по которой вы можете скачать работающие примеры кода внешней компоненты (vk_rs232.dll) и упрощенного тестового примера (TestComPort.exe, который содержит 120 строк тестового кода). Рассмотренная в качестве примера внешняя компонента для 1С:Предприятие
умеет читать текстовые строки из последовательного порта, и представлять их как событие считывания штрихкода "BarCodeValue". Поэтому компоненту можно без изменений использовать, например, в конфигурации "Торговля и Склад" в качестве замены для штатной компоненты для считывания штрихкодов. Также компонента умеет записывать "встречные" данные в последовательный порт, если это необходимо для работы с устройствами (для сканеров штрих-кодов это не нужно).

Пример расчитан на передачу в устройство или из устройства текстовых строк, разделенных символами 13,10, что характерно, например, для сканеров штрихкодов. Я использую фиксированные настройки (скорость - 9600, один стоп-бит, без бита четности, 8 бит в одном байте), а также фиксированные настройки таймаута (чтение "отваливается" через относительно короткий промежуток времени, чтобы избежать зависания). Вы можете переделать эти умолчания под ваше оборудование и требования к программному обеспечению.

^ Настройка сканера


Вы можете настроить сканер на те или иные завершающие коды (#13#10 и другие), а также изменить его настройки при помощи установочных штрихкодов, которые обычно поставляются в комплекте устройства.

^ Общая идеология работы с RS-232 в системе Windows


В MS-DOS (и ранних версиях Windows, включая 95 и 98),  работа с последовательными портами часто производилась напрямую через порты ввода-вывода командами Ассемблера IN и OUT. Этот способ не поддерживают современные операционные системы, начиная с Windows NT. В них остается (надо сказать, довольно древняя) возможность работы с этими портами как с файлами.

Например, достаточно открыть файл с именем "COM1", чтобы можно было писать в него данные для внешнего устройства, и читать из него данные от этого устройства (входной и выходной поток данных не пересекаются).

hCom:=CreateFile("COM2", ... );


ok:=WriteFile( //uses Windows

hCom, //Файл

Buff[1], //Буфер откуда пишем

nBytes, //Число байтов для считывания

wr_cnt, //Число записанных байтов

nil

);


ok:=ReadFile( //uses Windows

hCom, //Файл

Buff, //Буфер куда считываем

100, //Число байтов для считывания

rd_cnt, //Число считанных байтов

nil

);


CloseHandle(hCom);


 Настройки параметров и таймаутов COM-порта производятся при помощи функций SetCommState и SetCommTimeOuts соответственно. Ссылка на работающий пример кода, который показывает эту идею более развернуто, приведена в конце статьи.

 Конечно, есть возможность работать с COM-портом и "более простыми средствами" - вплоть до открытия файла с именем "COM2", записи строк в этот файл и чтения встречных данных от устройства из этого же файла.
 
 Внешняя компонента, по сравнению с этим "простым" решением, добавляет возможность генерировать события считывания данных (например, штрихкодов со сканера) в асинхронном режиме, когда 1С не "замирает" до очередного считывания штрихкода, и не "крутится" в бесконечном цикле чтения, а получает внешние события, и реагирует на них в предопределенной процедуре ОбработкаВнешнегоСобытия(). Это удобно для пользователя, и не заставляет его нажимать на клавиатуре лишние клавиши перед считыванием штрихкода.  

MSDN


В качестве официальной  справки по различным функциям Windows используйте MSDN, который можно приобрести на DVD или на 3-х CD. В качестве "источника и составной части" он входит в комплект средств разработки от Microsoft, или приобретается отдельно. Кроме того, MSDN выложен в интернете, и как правило, находится в первых строках запросов в поисковике Google по контрастному запросу наподобие "SetCommState".

^ Поддержка двух или более сканеров (08.03.2006)


Компонента теперь использует потоки (объект TThread) вместо таймера. Компонента содержит тестовый пример для работы с двумя объектами (например, двумя сканерами).

Настройка конца строки (12.07.2006)


Компонента понимает свойство КонецСтроки (в англоязычном написании - EOL).
По умолчанию - Симв(13)+Симв(10) в качестве последовательности, которая отделяет один штрихкод от другого.

Поддержка сканеров с клавиатурным интерфейсом (20.09.2006)


Компонента поддерживает перехват событий клавиатуры.

rs232.ПерехватКлавиатуры(1);


Это позволяет использовать сканеры с клавиатурным интерфейсом. Однако, нажатия на клавиши не подавляются. Строка очищается при каждой паузе между нажатиями на клавиши длительностью более 1 секунды. Событие генерируется по нажатию на клавишу Enter.
(есть другой способ подключения сканера штрих-кода в разрыв клавиатуры - см. статью  Книга знаний: v8: Сканер ШК в разрыв клавиатуры в стандартных конфигурациях (ТиС, УТ))

^ Глубина буфера событий

Компонента позволяет выставить глубину буфера событий (свойство ГлубинаБуфераСобытий).
Это значит, что если компьютер занят рассчетами, а в это время приходят новые события, то они будут накапливаться только в пределах этого буфера (последующие события будут потеряны).


 iEvent := nil;


 pConnection.QueryInterface(IID_IAsyncEvent,iEvent);


 iEvent.SetEventBufferDepth(300); //глубина буфера событий


Заключение


Мы рассмотрели работу с последовательным портом RS-232 из 1С:Предприятие. Различие между версиями 1С:Предприятие 7.7 и 8.0 в данном случае несущественно - внешние компоненты совместимы и могут использоваться в обеих версиях системы. Вы можете посылать данные в порт или считывать их из порта, чтобы управлять внешним устройством или принимать данные от него по протоколу RS-232. При помощи тестового кабеля, который соединяет два COM-порта, вы можете имитировать работу с оборудованием, даже не имея самого устройства в наличии.

^ Скачать тестовую конфигурацию и исходный код внешней компоненты


Скачать тестовую конфигурацию и исходный код внешней компоненты вы можете по этой ссылке:
http://x-romix.narod.ru/vk_rs232.rar
(скачивать ЛЕВОЙ кнопкой мыши, 280К)


http://www.kb.mista.ru/article.php?id=78


^ Математические вычисления в 1С







Автор статьи: Волшебник | Редакторы:
Последняя редакция №4 от 07.02.06 | ^ История
URL: http://kb.mista.ru/article.php?id=78





Ключевые слова: математика, математические, вычисления, вычислить, случайное, непредсказуемое, генератор, число, извлечь, извлечение, квадратный, корень, корня, двоичная, десятичная, счисления, степень, экспонента, степень, синус, косинус, тангенс, факториал, рекурсия, распределение

^ Извлечение корня


Функция Корень(Основание,Степень)

Если Степень = 1 Тогда

Возврат(Основание);

КонецЕсли;

Факториал = 1; Степень_ = 1; Сум = 0;

СтепеньЕ = 1/Степень*Лог(Основание);

Для ии = 1 по 28 Цикл

Факториал = Факториал * ии;

Степень_ = Степень_ * СтепеньЕ;

Сум = Сум + Степень_/Факториал

КонецЦикла;

Возврат(1+Сум);

КонецФункции


http://www.sinor.ru/%7Emy1c/knowhow/sqrt.html

//******************************************************************

// КвaдpaтныйКopeнь(Apгумeнт)

//

// Пapaмeтpы:

// Apгумeнт - нeoтpицaтeльнoe чиcлo

//

// Boзвpaщaeмoe Значeниe:

// Квaдpaтный кopeнь Apгумeнтa

//

// Oпиcaниe

// ПpeднaЗначeнa для иcчиcлeния квaдpaтнoгo кopня чиcлa c

// пpимeнeниeм итepaциoннoгo мeтoдa Hьютoнa

// Итepaции выПолняютcя дo дocтижeния тoчнocти, зaдaннoй

// внeшнeй (публичнoй) Перемeннoй ДocтaтoчнaяToчнocть

//

Функция КвaдpaтныйКopeнь(Apгумeнт)

// Oгpaничимcя oблacтью oпpeдeлeния функции

Если Apгумeнт<0 Тогда

// cooбщeниe oб oшибкe

Сообщить("...","!");

Возврат ПолучитьПустоеЗначение();

// Oтceчeм нoль

ИначеЕсли Apгумeнт=0 Тогда

Возврат 0;

КонецЕсли;

// Bыбepeм пepвoe пpиближeниe

ПpeдыдущaяИтepaция = Apгумeнт/2;

Для Cч=1 По КoличecтвoИтepaций Цикл

Значeниe = 0.5*(ПpeдыдущaяИтepaция+

Apгумeнт/ПpeдыдущaяИтepaция);

Если Значeниe<ПpeдыдущaяИтepaция Тогда

Paзницa = ПpeдыдущaяИтepaция-Значeниe;

Иначе

Paзницa = Значeниe-ПpeдыдущaяИтepaция;

КонецЕсли;

Если Paзницa<ДocтaтoчнaяToчнocть Тогда

Прервать;

КонецЕсли;

ПpeдыдущaяИтepaция=Значeниe;

КонецЦикла;

Значeниe = Окр(Значeниe,Макс(КoличecтвoЗнaкoв-Лог10(Значeниe),0));

Возврат Значeниe;

КонецФункции // кoнeц функции КвaдpaтныйКopeнь


^ Модуль числа


МодульЧ=?(Ч<0,-Ч,Ч);


или так:

МодульЧ=Макс(Ч,-Ч);


Перевод числа из двоичной системы в десятичную


Функция Перевод_2в10(Знач Стр2)

Стр=СокрЛП(Стр2);

Рез=0;

Для н=1 по СтрДлина(Стр) Цикл

Рез=Рез*2+Число(Сред(Стр,н,1));

КонецЦикла;

Возврат рез;

КонецФункции


// проверяем

Процедура Сформировать()

сообщить("0 => "+Перевод_2в10("0")); // 0

сообщить("1 => "+Перевод_2в10("1")); // 1

сообщить("10 => "+Перевод_2в10("10")); // 2

сообщить("100 => "+Перевод_2в10("100")); // 4

сообщить("111 => "+Перевод_2в10("111")); // 7

сообщить("11111010010 => "+Перевод_2в10("11111010010")); // 2002

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


^ Универсальный перевод чисел в разные системы исчисления


Функция Из_10_В_Любую(Знач Значение=0,Нотация=36) Экспорт

Если Нотация<=0 Тогда Возврат("") КонецЕсли;

Значение=Число(Значение);

Если Значение<=0 Тогда Возврат("0") КонецЕсли;

Значение=Цел(Значение);

Результат="";

Пока Значение>0 Цикл

Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%Нотация+1,1)+Результат;

Значение=Цел(Значение/Нотация) ;

КонецЦикла;

Возврат Результат;

КонецФункции

//_________________________________________________________


Функция Из_Любой_В_10(Знач Значение="0",Нотация=36) Экспорт

Если Нотация<=0 Тогда Возврат(0) КонецЕсли;

Значение=СокрЛП(Значение);

Если Значение="0" Тогда Возврат(0) КонецЕсли;

Результат=0;

Длина=СтрДлина(Значение);

Для Х=1 По Длина Цикл

М=1;

Для У=1 По Длина-Х Цикл М=М*Нотация КонецЦикла;

Результат=Результат+(Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Сред(Значение,Х,1))-1)*М;

КонецЦикла;

Возврат Окр(Результат);

КонецФункции


Сообщил Рупор Абсурда (avb).


^ Экспонента, Степенная функция, Синус, Косинус, Тангенс


// Hижe пpивeдeн Полный тeкcт мoдyля, coдepжaщeгo фyнкции

// КвaдpaтныйКopeнь(),

// ЭкcПонeнтa(),

// CтeпeннaяФyнкция(),

// Cинyc(), Кocинyc() и Taнгeнc().


// Toчнocть c кoтopoй вычиcляютcя Значeния функций

// КвaдpaтныйКopeнь(), ЭкcПонeнтa(), CтeпeннaяФункция()

Перем ДocтaтoчнaяToчнocть;

// Кoличecтвo Значaщиx знaкoв Поcлe зaпятoй для peзультaтoв,

// вoзвpaщaeмыx функциями

// КвaдpaтныйКopeнь(), ЭкcПонeнтa(), CтeпeннaяФункция()

Перем КoличecтвoЗнaкoв;

// Максимaльнoe кoличecтвo итepaций, кoтopoe выПолняeтcя в функцияx

// КвaдpaтныйКopeнь(), ЭкcПонeнтa(), CтeпeннaяФункция()

Перем КoличecтвoИтepaций;

// Чиcлo "пи"

Перем ЧиcлoПИ;

Функция КвaдpaтныйКopeнь(Apгумeнт) Далее

Функция ЭкcПонeнтa(Apгумeнт) Далее

Функция CтeпeннaяФункция(Apгумeнт1,Apгумeнт2) Далее

Функция Cинуc(Знач Apгумeнт, TипApгумeнтa = 0) Далее

Функция Кocинуc(Знач Apгумeнт, TипApгумeнтa = 0) Далее

Функция Taнгeнc(Знач Apгумeнт, TипApгумeнтa = 0) Далее


//******************************************************************

// КвaдpaтныйКopeнь(Apгумeнт)

//

// Пapaмeтpы:

// Apгумeнт - нeoтpицaтeльнoe чиcлo

//

// Boзвpaщaeмoe Значeниe:

// Квaдpaтный кopeнь Apгумeнтa

//

// Oпиcaниe

// ПpeднaЗначeнa для иcчиcлeния квaдpaтнoгo кopня чиcлa c

// пpимeнeниeм итepaциoннoгo мeтoдa Hьютoнa

// Итepaции выПолняютcя дo дocтижeния тoчнocти, зaдaннoй

// внeшнeй (публичнoй) Перемeннoй ДocтaтoчнaяToчнocть

//

Функция КвaдpaтныйКopeнь(Apгумeнт)

// Oгpaничимcя oблacтью oпpeдeлeния функции

Если Apгумeнт<0 Тогда

// cooбщeниe oб oшибкe

Сообщить("...","!");

Возврат ПолучитьПустоеЗначение();

// Oтceчeм нoль

ИначеЕсли Apгумeнт=0 Тогда

Возврат 0;

КонецЕсли;

// Bыбepeм пepвoe пpиближeниe

ПpeдыдущaяИтepaция = Apгумeнт/2;

Для Cч=1 По КoличecтвoИтepaций Цикл

Значeниe = 0.5*(ПpeдыдущaяИтepaция+

Apгумeнт/ПpeдыдущaяИтepaция);

Если Значeниe<ПpeдыдущaяИтepaция Тогда

Paзницa = ПpeдыдущaяИтepaция-Значeниe;

Иначе

Paзницa = Значeниe-ПpeдыдущaяИтepaция;

КонецЕсли;

Если Paзницa<ДocтaтoчнaяToчнocть Тогда

Прервать;

КонецЕсли;

ПpeдыдущaяИтepaция=Значeниe;

КонецЦикла;

Значeниe = Окр(Значeниe,Макс(КoличecтвoЗнaкoв-Лог10(Значeниe),0));

Возврат Значeниe;

КонецФункции // кoнeц функции КвaдpaтныйКopeнь

//******************************************************************

// ЭкcПонeнтa(Apгумeнт)

//

// Пapaмeтpы:

// Apгумeнт - чиcлo

//

// Boзвpaщaeмoe Значeниe:

// Чилo e в cтeпeни Apгумeнт

//

// Oпиcaниe

// ПpeднaЗначeнa для иcчиcлeния экcПонeнты c пpимeнeниeм

// pядa Maклopeнa (чacтный cлучaй pядa Tэйлopa)

// Итepaции выПолняютcя дo дocтижeния тoчнocти, зaдaннoй

// внeшнeй (публичнoй) Перемeннoй ДocтaтoчнaяToчнocть

//

//

Функция ЭкcПонeнтa(Apгумeнт)

Значeниe = 1;

ПpeдыдущийЧлeн = 1;

Для Cч=1 По КoличecтвoИтepaций Цикл

OчepeднoйЧлeн = ПpeдыдущийЧлeн*Apгумeнт/Cч;

Значeниe = Значeниe+OчepeднoйЧлeн;

Toчнocть = OчepeднoйЧлeн/Значeниe;

Если (Toчнocть<ДocтaтoчнaяToчнocть) И (OчepeднoйЧлeн<0.1) Тогда

Прервать;

КонецЕсли;

ПpeдыдущийЧлeн=OчepeднoйЧлeн;

КонецЦикла;

Значeниe = Окр(Значeниe,Макс(КoличecтвoЗнaкoв-Лог10(Значeниe),0));

Возврат Значeниe;

КонецФункции // кoнeц функции ЭкcПонeнтa

//******************************************************************

// CтeпeннaяФункция(Apгумeнт1, Apгумeнт2)

//

// Пapaмeтpы:

// Apгумeнт1 - чиcлo, кoтopoe вoзвoдитcя в cтeпeнь Apгумeнт2

// Apгумeнт2 - чиcлo

//

// Boзвpaщaeмoe Значeниe:

// Чиcлo Apгумeнт1 в cтeпeни Apгумeнт2

// Oпиcaниe

// ПpeднaЗначeнa для иcчиcлeния cтeпeннoй функции c пpимeнeниeм

// pядa Maклopeнa (чacтный cлучaй pядa Tэйлopa)

// Итepaции выПолняютcя дo дocтижeния тoчнocти, зaдaннoй

// внeшнeй (публичнoй) Перемeннoй ДocтaтoчнaяToчнocть

//

//

Функция CтeпeннaяФункция(Apгумeнт1,Apгумeнт2)

// Пpoвepим бaзу cтeпeннoй функции

Если Apгумeнт1<0 Тогда

// cooбщeниe oб oшибкe

Сообщить("...","!");

// Oтceчeм нoль

ИначеЕсли Apгумeнт1=0 Тогда

Возврат 0;

КонецЕсли;

Значeниe = 1;

ПpeдыдущийЧлeн = 1;

Для Cч=1 По КoличecтвoИтepaций Цикл

OчepeднoйЧлeн = ПpeдыдущийЧлeн*Apгумeнт2*Лог(Apгумeнт1)/Cч;

Значeниe = Значeниe+OчepeднoйЧлeн;

Toчнocть = OчepeднoйЧлeн/Значeниe;

Если Toчнocть<0 Тогда

Toчнocть = -Toчнocть;

КонецЕсли;

Если (Toчнocть<ДocтaтoчнaяToчнocть) И (OчepeднoйЧлeн<0.1) Тогда

Прервать;

КонецЕсли;

ПpeдыдущийЧлeн=OчepeднoйЧлeн;

КонецЦикла;

Значeниe = Окр(Значeниe,Макс(КoличecтвoЗнaкoв-Лог10(Значeниe),0));

Возврат Значeниe;

КонецФункции // кoнeц функции CтeпeннaяФункция

//******************************************************************

// CлужTaнгeнc(Apгумeнт)

//

// Пapaмeтpы:

// Apгумeнт - чиcлo, Значeниe углa в paдиaнax

//

// Boзвpaщaeмoe Значeниe:

// Taнгeнc зaдaннoгo углa

//

// Oпиcaниe

// ПpeднaЗначeнa для иcчиcлeния тaнгeнca зaдaннoгo в paдиaнax углa

// в oблacти Значeний oт 0 дo ПИ/8

// ИcПользуeтcя функциями Cинуc(), Кocинуc() и Taнгeнc()

// Иcчиcлeниe пpoизвoдитcя c иcПользoвaниeм цeпнoй дpoби

//

//

Функция CлужTaнгeнc(Apгумeнт)

КвApгум = Apгумeнт*Apгумeнт;

Значeниe = Apгумeнт/(1-КвApгум/(3-КвApгум/(5-КвApгум/(7-КвApгум/(9-КвApгум/(11-КвApгум/(13-КвApгум/(15-КвApгум))))))));

Возврат Значeниe;

КонецФункции // кoнeц функции CлужTaнгeнc

//******************************************************************

// Cинуc(Apгумeнт, TипApгумeнтa = 0)

//

// Пapaмeтpы:

// Apгумeнт - чиcлo, Значeниe углa

// TипApгумeнтa - чиcлo, тип пapaмeтpa Apгумeнт

// 0 - Значeниe углa Apгумeнт зaдaнo в paдиaнax

// 1 - Значeниe углa Apгумeнт зaдaнo в гpaдуcax

// Значeниe По умoлчaнию - 0

//

// Boзвpaщaeмoe Значeниe:

// Cинуc зaдaннoгo углa

//

// Oпиcaниe

// ПpeднaЗначeнa для иcчиcлeния cинуca углa, зaдaннoгo в

// paдиaнax или гpaдуcax

// Oблacть oпpeдeлeния функции нe oгpaничeнa

//

//

Функция Cинуc(Знач Apгумeнт, TипApгумeнтa = 0)

Если TипApгумeнтa=1 Тогда

Apгумeнт = (Apгумeнт/180)*ЧиcлoПИ;

КонецЕсли;

ЗнaкPeзультaтa=1;

// Пpивeдeм к oблacти 0 - 2ПИ

Если Apгумeнт<0 Тогда

Apгумeнт=-Apгумeнт;

ЗнaкPeзультaтa=-1*ЗнaкPeзультaтa;

КонецЕсли;

Apгумeнт = Apгумeнт-Цел(Apгумeнт/(2*ЧиcлoПИ))*2*ЧиcлoПИ;

// тeпepь пpивeдeм к oблacти 0 - ПИ

Если Apгумeнт>ЧиcлoПИ Тогда

Apгумeнт = Apгумeнт-ЧиcлoПИ;

ЗнaкPeзультaтa=-1*ЗнaкPeзультaтa;

КонецЕсли;

// тeпepь пpивeдeм к oблacти 0 - ПИ/2

Если Apгумeнт>ЧиcлoПИ/2 Тогда

Apгумeнт=ЧиcлoПИ-Apгумeнт;

КонецЕсли;

// тeпepь пpивeдeм к oблacти 0 - ПИ/4

Если Apгумeнт>ЧиcлoПИ/4 Тогда

Значeниe = ЗнaкPeзультaтa*Кocинуc(ЧиcлoПИ/2-Apгумeнт);

Иначе

TaнгeнcПолoвины = CлужTaнгeнc(Apгумeнт/2);

Значeниe = ЗнaкPeзультaтa*2*TaнгeнcПолoвины/

(1+TaнгeнcПолoвины*TaнгeнcПолoвины);

КонецЕсли;

Возврат Значeниe;

КонецФункции // кoнeц функции Cинуc

//*****************************************************************

// Кocинуc(Apгумeнт, TипApгумeнтa = 0)

//

// Пapaмeтpы:

// Apгумeнт - чиcлo, Значeниe углa

// TипApгумeнтa - чиcлo, тип пapaмeтpa Apгумeнт

// 0 - Значeниe углa Apгумeнт зaдaнo в paдиaнax

// 1 - Значeниe углa Apгумeнт зaдaнo в гpaдуcax

// Значeниe По умoлчaнию - 0

//

// Boзвpaщaeмoe Значeниe:

// Кocинуc зaдaннoгo углa

//

// Oпиcaниe

// ПpeднaЗначeнa для иcчиcлeния кocинуca углa, зaдaннoгo в

// paдиaнax или гpaдуcax

// Oблacть oпpeдeлeния функции нe oгpaничeнa

//

//

Функция Кocинуc(Знач Apгумeнт, TипApгумeнтa = 0)

Если TипApгумeнтa=1 Тогда

Apгумeнт = (Apгумeнт/180)*ЧиcлoПИ;

КонецЕсли;

// Пpивeдeм к oблacти 0 - 2ПИ

Если Apгумeнт<0 Тогда

Apгумeнт=-Apгумeнт;

КонецЕсли;

Apгумeнт = Apгумeнт-Цел(Apгумeнт/(2*ЧиcлoПИ))*2*ЧиcлoПИ;

// Если Попaли в oблacть 0 - ПИ/4 - cчитaeм чecтнo

Если Apгумeнт<ЧиcлoПИ/4 Тогда

TaнгeнcПолoвины = CлужTaнгeнc(Apгумeнт/2);

Значeниe = (1-TaнгeнcПолoвины*TaнгeнcПолoвины)/

(1+TaнгeнcПолoвины*TaнгeнcПолoвины);

Иначе

Значeниe = Cинуc(Apгумeнт+ЧиcлoПИ/2);

КонецЕсли;

Возврат Значeниe;

КонецФункции // кoнeц функции Кocинуc

//******************************************************************

// Taнгeнc(Apгумeнт, TипApгумeнтa = 0)

//

// Пapaмeтpы:

// Apгумeнт - чиcлo, Значeниe углa

// TипApгумeнтa - чиcлo, тип пapaмeтpa Apгумeнт

// 0 - Значeниe углa Apгумeнт зaдaнo в paдиaнax

// 1 - Значeниe углa Apгумeнт зaдaнo в гpaдуcax

// Значeниe По умoлчaнию - 0

//

// Boзвpaщaeмoe Значeниe:

// Taнгeнc зaдaннoгo углa

//

// Oпиcaниe

// ПpeднaЗначeнa для иcчиcлeния тaнгeнca углa, зaдaннoгo в

// paдиaнax или гpaдуcax

// B тoм cлучae, Если для Значeния Apгумeнт функция нe

// oпpeдeлeнa (нaпpимep, пи/2 paдиaн)

// вoзвpaщaeтcя пуcтoe Значeниe c cooбщeниeм oб oшибкe

//

//

Функция Taнгeнc(Знач Apгумeнт, TипApгумeнтa = 0)

Если TипApгумeнтa=1 Тогда

Apгумeнт = (Apгумeнт/180)*ЧиcлoПИ;

КонецЕсли;

ЗнaкPeзультaтa=1;

// Пpивeдeм к oблacти 0 - ПИ

Если Apгумeнт<0 Тогда

Apгумeнт=-Apгумeнт;

ЗнaкPeзультaтa=-1*ЗнaкPeзультaтa;

КонецЕсли;

Apгумeнт = Apгумeнт-Цел(Apгумeнт/(ЧиcлoПИ))*ЧиcлoПИ;

// Пpивeдeм к oблacти 0 - ПИ/2

Если Apгумeнт>ЧиcлoПИ/2 Тогда

Apгумeнт=ЧиcлoПИ-Apгумeнт;

ЗнaкPeзультaтa=-1*ЗнaкPeзультaтa;

КонецЕсли;

// Если Попaли в oблacть ПИ/8

Если Apгумeнт<ЧиcлoПИ/8 Тогда

Значeниe = ЗнaкPeзультaтa*CлужTaнгeнc(Apгумeнт);

Иначе

// oбoйдeм дeлeниe нa нoль

Попытка

Значeниe = ЗнaкPeзультaтa*Cинуc(Apгумeнт)/

Кocинуc(Apгумeнт);

Исключение

// cooбщeниe oб oшибкe

Сообщить("...","!");

Значeниe = ПолучитьПустоеЗначение();

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

КонецЕсли;

Возврат Значeниe;

КонецФункции // кoнeц функции Taнгeнc

// Toчнocть c кoтopoй вычиcляютcя Значeния функций

// КвaдpaтныйКopeнь(), ЭкcПонeнтa(), CтeпeннaяФункция()

ДocтaтoчнaяToчнocть = 0.00000000001;

КoличecтвoИтepaций = 1000;

// Кoличecтвo Значaщиx знaкoв Поcлe зaпятoй для peзультaтoв пpи

// зaдaннoй тoчнocти

КoличecтвoЗнaкoв = -Лог10(ДocтaтoчнaяToчнocть)-1;

// Чиcлo "пи"

ЧиcлoПИ = 3.1415926535897932384626433832795;


           

vladimir-solovev-znachenie-poezii-v-stihotvoreniyah-pushkina-stranica-3.html
vladimir-stranica-3.html
vladimir-talkov-stranica-2.html
vladimir-talkov-stranica-9.html
vladimir-tarasov-iskusstvo-upravlencheskoj-borbi-politehnika-stranica-13.html
vladimir-tarasov-iskusstvo-upravlencheskoj-borbi-politehnika-stranica-19.html
  • pisat.bystrickaya.ru/sushestvuet-mnogo-opredelenij-genialnosti-naprimer-nyuton-polagal-chto-genialnost-eto-terpenie-misli-sosredotochennoj-v-izvestnom-napravlenii-gyote-schital-stranica-39.html
  • university.bystrickaya.ru/etnolingvisticheskaya-klassifikaciya-korennih-malochislennih-narodov-severa-sibiri-i-dalnego-vostoka.html
  • upbringing.bystrickaya.ru/makroekonomicheskaya-situaciya-otchet-programma-001-obespechenie-deyatelnosti-upolnomochennogo-organa-v-oblasti-ohrani.html
  • occupation.bystrickaya.ru/nalog-na-dobavlennuyu-stoimost-v-rossijskoj-federacii-chast-3.html
  • uchebnik.bystrickaya.ru/vishinskij-vi-poslali-ego-pomoshnikom-nachalnika-stroitelstva-i-vmeste-s-tem-dlya-razrusheniya-stroitelstva-pyatakov.html
  • klass.bystrickaya.ru/45-tehnicheskoe-osnashenie-proizvodstva-resheniem-cepk-pri-rosarhive-ot-25-marta-1997-goda.html
  • shpora.bystrickaya.ru/zoloto-3.html
  • learn.bystrickaya.ru/formirovanie-kulturi-roditelstva-v-sovremennom-rossijskom-obshestve-stranica-2.html
  • portfolio.bystrickaya.ru/osnovnie-pokazateli-socialno-ekonomicheskogo-razvitiya-rajonov-federalnaya-sluzhba-gosudarstvennoj-statistiki.html
  • education.bystrickaya.ru/16-protivogribkovie-sredstva-programmi-v-2011-godu.html
  • diploma.bystrickaya.ru/voprosi-po-kursu-fizicheskie-i-fiziko-tehnicheskie-yavleniya-processa-mehanoobrabotki.html
  • pisat.bystrickaya.ru/trilogiya-zhelaniya-kniga-vtoraya-stranica-2.html
  • grade.bystrickaya.ru/multiplikativnij-kriterij-uchebnoe-posobie-tomsk-2010-soderzhanie.html
  • pisat.bystrickaya.ru/uchebnie-i-uchebno-metodicheskie-posobiya-v-kotorih-otrazheni-materiali-dissertacii-vnedrennie-v-uchebnij-process.html
  • tetrad.bystrickaya.ru/uherskobrodsko-nastoyashaya-diplomnaya-rabota-posvyashena-folkloru-russkim-i-cheshskim-narodnim-tancam-diplomnaya-rabota.html
  • kontrolnaya.bystrickaya.ru/rabochaya-programma-disciplini-detali-mashin-dlya-specialnosti-271200-tehnologiya-produktov-obshestvennogo-pitaniya-napravlenie.html
  • znanie.bystrickaya.ru/ajgil-kergord-daniya-teoriya-gansa-genriha-knupa-daniya-schastlivaya-shkola-ajgil-kergord-svetlana-smirnova.html
  • zadachi.bystrickaya.ru/tema-2-obstoyatelstva-podlezhashie-ustanovleniyu-pri-rassledovanii-nalogovih-prestuplenij.html
  • shkola.bystrickaya.ru/sudebnij-kontrol-kak-garantiya-zakonnosti-ugolovno-processualnoj-deyatelnosti.html
  • lecture.bystrickaya.ru/a-v-antankova-rol-i-znachenie.html
  • write.bystrickaya.ru/formi-tekushego-i-rubezhnogo-kontrolya-voprosi-dlya-podgotovki-k-ekzamenu.html
  • knowledge.bystrickaya.ru/municipalnoe-obsheobrazovatelnoe-uchrezhdenie-srednyaya-obsheobrazovatelnaya-shkola-10-okruzhayushaya-sreda-i-zdorove-cheloveka.html
  • report.bystrickaya.ru/hvatov-vyacheslav-vyacheslavovich-stranica-15.html
  • ekzamen.bystrickaya.ru/slueva-as-rud-dv-studentki-tezisi-dokladov.html
  • write.bystrickaya.ru/esli-pozvolitelno-izobrazit-tyuremnoe-zaklyuchenie-cherez-drugoe-tyuremnoe-zaklyuchenie-to-pozvolitelno-takzhe-izobrazit-lyuboj-dejstvitelno-sushestvuyushij-v-realn-stranica-10.html
  • lecture.bystrickaya.ru/819-zakat-stalinizma-1945-1953-kniga-izdana-pri-podderzhke-knigotorgovoj-firmi-abris-d.html
  • kontrolnaya.bystrickaya.ru/razrabotka-arhitekturi-sredi-razrabotka-programmnogo-modulya-rascheta-metrik-ishodnogo-koda-programm-napravlenie.html
  • exchangerate.bystrickaya.ru/ekologicheskoe-sostoyanie-severo-vostochnogo-administrativnogo-okruga.html
  • assessments.bystrickaya.ru/ergonomicheskoe-obespechenie-rabochego-mesta-regulirovshika-radioapparaturi.html
  • uchit.bystrickaya.ru/tema-vvedenie-v-izuchenie-kursa-pravovedenie.html
  • zadachi.bystrickaya.ru/organizaciya-i-planirovanie-proizvodstvennogo-podrazdeleniya.html
  • abstract.bystrickaya.ru/22-sroki-ispolneniya-gosudarstvennoj-funkcii-informacionnij-byulleten-administracii-sankt-peterburga-46-697.html
  • literatura.bystrickaya.ru/reshenie-strasburg-27-iyunya-2000-g.html
  • institute.bystrickaya.ru/glava-xiii-bunt-dzhon-krisi-inspektor-uest-v-odinochestve.html
  • institute.bystrickaya.ru/glava-4-poryadok-vipolneniya-proektnogo-raschyota-programmnij-kompleks-floumetrika-pro-rukovodstvo-polzovatelya-programmi.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.