Недопустимое значение аргумента функции внутренняя ошибка

Недопустимое значение аргумента функции внутренняя ошибка

недопустимое значение аргумента функции

Проблема в платформе

Проблема в платформе

Платформа: 1С:Предприятие 8.3 (8.3.10.2466)
Конфигурация: Зарплата и управление персоналом, редакция 3.1 (3.1.3.136) ( http://v8.1c.ru/hrm/)
Copyright © ООО «1C-Софт», 2007-2017. Все права защищены
( http://www.1c.ru)
Режим: Серверный (сжатие: усиленное)
Приложение: Толстый клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский
Вариант интерфейса: Такси

Ошибка возникает, например в командировках, когда изменяешь дату начала и конца командировки. Обработчик при изменении в отладке отрабатывает без ошибок, но всеравно потом выходит эта ошибка.
Но если у пользователя полные права, то такой ошибки нет. И нет никаких сообщений какие права и на что нужны. В журнале регистрации тоже ничего нет.
Установка привилигированного режима во всех процедурах не помогает.
Но если перед изменением дат командировки отменить проведение документа, то такой ошибки нет даже при ограниченных правах.
Вот такая бесовщина.

(21) такая же ошибка для БЛ, даже если они не проведены при смене периода. Исчезает только когда даешь права «Добавление изменение начисленной зарплаты расширенная», но. тогда кадровики видят все расчеты.

Платформа: 1С:Предприятие 8.3 (8.3.10.2466)
Конфигурация: Зарплата и управление персоналом, редакция 3.1 (3.1.3.158) ( http://v8.1c.ru/hrm/)
Copyright © ООО «1C-Софт», 2007-2017. Все права защищены
( http://www.1c.ru)
Расширение конфигурации: Расширение
Режим: Файловый (без сжатия)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)
Вариант интерфейса: Такси

Ошибка возникает в коде тех обработчиков событий, где есть вызов обработчика ожидания и только для нового, НЕ записанного документа.

Так, если открыть форму нового увольнения и сразу сменить дату увольнения, то увидим то, что в (22).

Снимать документы с поддержки для вставки кода в модуль формы как в (25) — это плохое решение, я считаю.

Пока не обновили платформу с исправлением этой ошибки нужно просто сказать пользователям, чтобы при открытии нового документа они не меняли реквизиты сразу, а сначала нажали кнопку записать. У уже записанного документа эта ошибка не возникает.

Коды ошибок в LibreOffice Calc

В следующей таблице описываются коды ошибок для LibreOffice Calc. Если ошибка происходит в ячейке, содержащей курсор, сообщение об ошибке отображается в строке состояния.

Код ошибки Сообщение Объяснение
### Ширины ячейки не хватает для отображения содержимого.
501 Недопустимый символ Символ в формуле недействителен.
502 Недопустимый аргумент Функция имеет недопустимый аргумент, например отрицательное число для функции извлечения корня.
503

  1. NUM!
Недопустимая операция с плавающей запятой Вычисление приводит к переполнению определенного диапазона значений.
504 Ошибка в списке параметров Недопустимый параметр функции, например текст вместо числа или доменная ссылка вместо ссылки на ячейку.
508 Ошибка: нет пары Отсутствует скобка: например, есть закрывающие скобки, но нет открывающих скобок.
509 Отсутствует оператор Отсутствует оператор: например, в выражении «=2(3+4) * » нет оператора между символами «2» и «(«.
510 Отсутствует переменная Нет переменной, например, в случае, когда два оператора стоят рядом «=1+*2».
511 Отсутствует переменная Функция требует большего количества переменных, например AND() и OR().
512 Слишком длинная формула Компилятор: общее количество внутренних лексем (т.е. операторов, переменных и угловых скобок) в формуле превышает 512.
513 Слишком длинная строка Компилятор: идентификатор в формуле по размеру превышает 64 КБ. Интерпретатор: результат строковой операции по размеру превышает 64 КБ.
514 Внутреннее переполнение Операция сортировки, предпринятая на слишком большом количестве числовых данных (максимально 100000), или переполнение стека вычислений.
516 Внутренняя ошибка синтаксиса В стеке вычислений предполагается матрица, но она недоступна.
517 Внутренняя синтаксическая ошибка Неизвестный код: например, документ с новой функцией загружен в старую версию, не содержащую этой функции.
518 Внутренняя синтаксическая ошибка Переменная недоступна.
519

  1. VALUE
Нет результата (в ячейке отображается #ЗНАЧЕН! а не Ошибка:519) Формула возвращает значение, не соответствующее определению, или ячейка, на которую ссылается формула, содержит текст вместо числа.
520 Внутренняя синтаксическая ошибка Компилятор создал неизвестный код компиляции.
521 Внутренняя синтаксическая ошибка Нет результата.
522 Циклическая ссылка Формула прямым или косвенным образом ссылается на себя, и не настроен параметр Циклы в разделе Сервис — Параметры — LibreOffice Calc — Вычислить.
523 Процедура вычисления не сходится Функция потеряла подбираемое значение или циклические ссылки не доходят до минимальных изменений для заданного максимального числа шагов.
524

  1. REF

недопустимые ссылки (вместо Ошибка:524 в ячейке содержится #ССЫЛ!)

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

  1. NAME?

недопустимые имена (вместо Ошибка:525 ячейка содержит #ИМЯ?)

Оценка статьи:

2 звезды3 звезды4 звезды5 звезд5 звезд

Загрузка…

Похожие публикации

Adblock
detector

Кто-нибудь сталкивался с ошибкой: «Недопустимое значение аргумента функции. Внутреняя ошибка [mngcore — scrUObjects.cpp (1565)]? Возникла при создании прав пользователю на новый объект. Понятно, что на что-то не хватает прав. Но как такое отлаживать?

[Понятно, что на что-то не хватает прав] с чего бы это ?

с того, что под полными всё окей. И началось с добавлением новых прав. Ошибка при открытие обработки.

8.3.7.1860, WS 2012, Управление небольшой фирмой + CRM

#6
by ObjectRelationModel

народ смелый, работали бы уже на 8.4

для начала можно подключить технологический журнал а потом уже думать

нет, но под другим пользователем тоже самое

мы франч, это наша личная база. На чём же ещё тестировать:)

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

I want to select from a table where a column matches a given parameter. If the parameter is null, I want to select all records from the table. The relevant code below is what throws this error.

    private static string _dbJobCreate = 
"CREATE TABLE Job (jID int primary key identity(1,1), jAddress nvarchar(64) not null);";

    private static string _dbJobSelect = 
"SELECT jID FROM Job WHERE jAddress = @jAddress OR @jAddress IS NULL";

    public static DataTable GetJobs(string jAddress)
    {
        SqlCeParameter pjAddress = new SqlCeParameter();
        pjAddress.ParameterName = "@jAddress";

        if (!string.IsNullOrEmpty(jAddress))
        {
            pjAddress.Value = jAddress;
        }
        else
        {
            pjAddress.Value = DBNull.Value;
        }

        return ExecuteDataTable(_dbJobSelect, pjAddress);
    }

Exception: The specified argument value for the function is not valid. [ Argument # = 1,Name of function(if known) = isnull ]

How can I efficiently accomplish this without error in SQLCE?

asked Dec 30, 2012 at 10:59

Zeb Rawnsley's user avatar

Zeb RawnsleyZeb Rawnsley

2,1701 gold badge20 silver badges33 bronze badges

1

You can avoid this error by specifying the types of parameters which are passed to the query. So all you need to do is:

pjAddress.DbType = DbType.String;

answered Nov 20, 2013 at 15:51

Chris W.'s user avatar

1

My solution is to select all rows from the database, and filter down the rows in .NET if a parameter was passed in. This could become troublesome if there were a large number of jobs, although I suppose I’d move to a real database if that ever happens.

private static string _dbJobSelect = "SELECT jID, jAddress FROM Job";

public static DataTable GetJobs(string jAddress)
{
    DataTable dt = ExecuteDataTable(_dbJobSelect);

    if (!string.IsNullOrEmpty(jAddress))
    {
        DataView dv = dt.DefaultView;
        dv.RowFilter = string.Format("jAddress = '{0}'", jAddress);
        dt = dv.ToTable();
    }

    return dt;
}

answered Dec 30, 2012 at 11:30

Zeb Rawnsley's user avatar

Zeb RawnsleyZeb Rawnsley

2,1701 gold badge20 silver badges33 bronze badges

You can cast it to varchar

SELECT jID FROM Job WHERE jAddress = @jAddress 
    OR cast(@jAddress AS varchar(4000)) IS NULL

answered May 14, 2014 at 8:03

VahidN's user avatar

VahidNVahidN

18.3k8 gold badges73 silver badges117 bronze badges

I ran into this problem recently and discovered that I hadn’t actually added the query parameter to the IDbCommand. I’m not sure what your ExecuteDataTable method looks like, but my code was similar to the following (where db is an IDbConnection instance):

var sql = "SELECT jID FROM Job WHERE jAddress = @jAddress OR @jAddress IS NULL";
var cmd = db.CreateCommand();
cmd.CommandText = sql;
var param = cmd.CreateParameter();
param.DbType = DbType.String;
param.ParameterName = "@jAddress";
param.Value = string.IsNullOrEmpty(pjAddress) ? DBNull.Value : (object)pjAddress;
cmd.Parameters.Add(param);  // THIS WAS THE STEP I WAS MISSING!!!
// ... rest of the code to execute the query and load the results ...

After adding the cmd.Parameters.Add(param), the exception disappeared.

answered Oct 21, 2016 at 14:41

wablab's user avatar

wablabwablab

1,69312 silver badges15 bronze badges

Недопустимое значение аргумента функции внутренняя ошибка

недопустимое значение аргумента функции

Проблема в платформе

Проблема в платформе

Платформа: 1С:Предприятие 8.3 (8.3.10.2466)
Конфигурация: Зарплата и управление персоналом, редакция 3.1 (3.1.3.136) ( http://v8.1c.ru/hrm/)
Copyright © ООО «1C-Софт», 2007-2017. Все права защищены
( http://www.1c.ru)
Режим: Серверный (сжатие: усиленное)
Приложение: Толстый клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский
Вариант интерфейса: Такси

Ошибка возникает, например в командировках, когда изменяешь дату начала и конца командировки. Обработчик при изменении в отладке отрабатывает без ошибок, но всеравно потом выходит эта ошибка.
Но если у пользователя полные права, то такой ошибки нет. И нет никаких сообщений какие права и на что нужны. В журнале регистрации тоже ничего нет.
Установка привилигированного режима во всех процедурах не помогает.
Но если перед изменением дат командировки отменить проведение документа, то такой ошибки нет даже при ограниченных правах.
Вот такая бесовщина.

(21) такая же ошибка для БЛ, даже если они не проведены при смене периода. Исчезает только когда даешь права «Добавление изменение начисленной зарплаты расширенная», но. тогда кадровики видят все расчеты.

Платформа: 1С:Предприятие 8.3 (8.3.10.2466)
Конфигурация: Зарплата и управление персоналом, редакция 3.1 (3.1.3.158) ( http://v8.1c.ru/hrm/)
Copyright © ООО «1C-Софт», 2007-2017. Все права защищены
( http://www.1c.ru)
Расширение конфигурации: Расширение
Режим: Файловый (без сжатия)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)
Вариант интерфейса: Такси

Ошибка возникает в коде тех обработчиков событий, где есть вызов обработчика ожидания и только для нового, НЕ записанного документа.

Так, если открыть форму нового увольнения и сразу сменить дату увольнения, то увидим то, что в (22).

Снимать документы с поддержки для вставки кода в модуль формы как в (25) — это плохое решение, я считаю.

Пока не обновили платформу с исправлением этой ошибки нужно просто сказать пользователям, чтобы при открытии нового документа они не меняли реквизиты сразу, а сначала нажали кнопку записать. У уже записанного документа эта ошибка не возникает.

Недопустимое значение аргумента функции внутренняя ошибка

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

Когда запускаю базу через администратора выдает такую ошибку «Недопустимое значение, тип или число аргументов функции» и потом выкидывает. Помогите пожалуйста советом, что это может быть и как с этим бороться?

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

Попробуйте сделать ремонт

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

to man
Попробовал выдает ошибку о том, что ремонт базы невозможен.
«Структура БД отличается от описанной в администраторе. Возможны ошибки, искажение или потеря данных. Рекомендуем переустановить систему.»

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

to максим
жжесть! Описатели структур смотрите.

В форточках семь кто-нибудь работает? У меня при запуске администратора вылетает эта фигня с «типом или числом аргумента» и не заходит. Как победить чудо уважаемого Билли?

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

Всё работает нормально уже 4 месяца. Только DLL подложили и всё.

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

спасибо всем за помощь; базу отремонтировал

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

to KORUM
разберитесь с правами на папку паруса

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

to максим
Тоже самая ошибка, не могу войти в администратора. Как быть?

Зарегистрирован: 06.07.2011 04:57:42
Сообщений: 34
Оффлайн

to vaz
Такая ошибка выдается часто, когда удалена часть индексных файлов или они повреждены, или повреждены файлы *.dbf или *.fpt, а вы пытаетесь открыть базу. Но там бывает другое сообщение.
Индексные файлы создаются вновь при ремонте, базу открывать не надо, описатели структур, это Parus*.fxp в каталоге базы и Admin Net администратора должны быть идентичны по количеству, размеру, дате изменения, т.е. одного релиза. Количество файлов по списку с расширением *.dbf и *.fpt должно соответствовать описателям релиза, иначе ремонт не возможен, т.к. при ремонте будет выдаваться сообщение такая то таблица отсутствует и она будет пустая. Часть или даже все файлы *.cdx (индексы) могут отсутствовать.
Обязательно сделать копию базы средствами windows, если база не открывается администратором, т.е. делать Копировать значке каталога базы и Вставить на свободном месте от каталогов и файлов.

PROИТ

Office 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.

1C. «Недопустимое значение параметра» при вызове макета в расширении

Дано: 1С (в данном примере конфигурация 1С:Университет ПРОФ), платформа 8.3.10. Создано расширение, в котором к документу добавлен новый макет. В модуле менеджера документа есть процедура, формирующая печатную форму на базе макета. Необходимо было заменить данную процедуру (при помощи директивы расширения «&Вместо») и заменить вызов встроенного макета на наш, добавленный в расширение.
Проблема: при вызове добавленного макета в момент его печати в режиме «1С:Предприятие» возникала ошибка при получении макета:

<ЗаявлениеПоступающегоРасширение Документ.ЗаявлениеПоступающего.МодульМенеджера(176)>: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)

Код, вызывающий ошибку:

А затем из заменяемой процедуры вызвать эту функцию:

(как оказалось этот способ не нужен. Причину читайте ниже)

2. Другой вариант — перенести макеты в общие и следующей командой вызвать (получить) макет из «Общие макеты»:

——
Видимо это всё-таки какой-то глюк платформы (протестировано на 8.3.10.2252 и 8.3.10.2299), но если просто добавить пустой макет в общие макеты в расширении, то команда, ранее вызывавшая ошибку (ПолучитьМакет из макета документа без допфункций на сервере), начинает нормально работать. При удалении пустого общего макета, команда вызова макета из документа снова вызывает ошибку (даже если вынесена в функцию на сервере, как показано в способе 1).
Т.е. если всё-таки хочется сделать макеты нормально в документе (ожидая, что когда-нибудь этот глюк исправят), то нужно сделать макет-заглушку в общих макетах. Например:

Недопустимое значение аргумента функции внутренняя ошибка

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

• проверить формулу, если вычисляется число дней между двумя датами;

• если формула не содержит ошибок, необходимо изменить формат ячейки и перейти, например, с формата Дата и время на Общий или Числовой формат.

Ошибка: 501 — недопустимый символ. Формула содержит недопустимый символ, например =1Eр вместо =1E2.

Ошибка: 502 — недопустимый аргумент. Функция имеет недопустимый аргумент, например отрицательное число для функции извлечения корня.

Ошибка: 503 (#NUM! ) — недопустимая операция с плавающей запятой. Вычисление приводит к переполнению диапазона значений.

Ошибка: 504 — ошибка в списке параметров. Используется недопустимый параметр функции, например текст вместо числа или гиперссылка вместо ссылки на ячейку.

Ошибка: 508 — нет пары.

Отсутствует скобка (закрывающая или открывающая).

Ошибка: 509 — отсутствует оператор. В формуле отсутствует оператор (+, – и т. д.).

Ошибка: 510 — отсутствует переменная.

Отсутствует переменная (два оператора стоят рядом).

Ошибка: 511 — отсутствует переменная. В функции не хватает переменной.

Ошибка: 512 — слишком длинная формула.

Общее число внутренних маркеров (операторов, переменных, скобок) в формуле превышает 512 или общее число матриц, которые создает формула, превышает 150.

Ошибка: 513 — слишком длинная строка. Идентификатор в формуле превышает 64 Kб.

Ошибка: 514 — внутреннее переполнение.

Переполнен стек вычислений (например, операция сортировки предпринята на слишком большом количестве числовых данных — более 100 000).

Ошибка: 516 — внутренняя синтаксическая ошибка. В стеке вычислений недоступна необходимая матрица.

Ошибка: 517 — внутренняя синтаксическая ошибка. Документ с новой функцией открыт в старой версии программы.

Ошибка: 518 — внутренняя синтаксическая ошибка. Переменная недоступна.

Ошибка: 519 (#VALUE) — нет результата. Ячейка, на которую ссылается формула, содержит текст вместо числа. -В ячейке отображается #ЗНАЧЕН! , а не Ошибка: 519.

Ошибка: 520 — внутренняя синтаксическая ошибка. Компилятор создал неизвестный код компиляции.

Ошибка: 521 — внутренняя синтаксическая ошибка. Нет результата.

Ошибка: 522 — циклическая ссылка. Формула ссылается прямо или косвенно на саму себя, а параметр Итерации не настроен.

Ошибка: 523 — процедура вычисления не сходится. Функция потеряла подбираемое значение или циклические ссылки не доходят до минимальных изменений для заданного максимального числа шагов.

Ошибка: 524 (#REF) — недопустимые ссылки. В формуле отсутствует столбец, строка или лист с заданной ячейкой.

-В ячейке отображается #ССЫЛ!2, а не Ошибка: 524.

Ошибка: 525 (#NAME) — недопустимые имена. Нет допустимой ссылки, доменного имени, подписи столбца/строки, макроса, присутствует неправильный десятичный разделитель или не найдена надстройка.

-В ячейке отображается #ИМЯ, а не Ошибка: 525.

Ошибка: 526 — внутренняя синтаксическая ошибка. Ссылка устарела.

Ошибка: 527 — внутреннее переполнение. Слишком сложное вложение ссылок.

Ошибка: 532 (#DIV/0!) — деление на ноль. В формуле используется деление на ноль. Глава 8

Ошибки в функциях и аргументах;

Ошибки синтаксиса

Проверка ошибок при создании и редактировании формул

Проверка ошибок

Удаление имени

Применение имен

При создании формул короткие имена можно вводить с клавиатуры.

Во избежание возможных ошибок при использовании имен в процессе создания формулы следует в группе Определенные имена вкладки Формулы щелкнуть кнопку Использовать в формуле и выбрать нужное имя в списке имен (рис. 6.20).

Рис. 6.20. Вставка имени в формулу

Если нужное имя не отображается в списке, выберите команду Вставить имена (см. рис. 6.20), а затем в окне Вставка имени выберите вставляемое имя.

Имена ячеек являются абсолютными ссылками.

Ненужное или ошибочное имя можно удалить.

1. В группе Определенные имена вкладки Формулы нажмите кнопку Диспетчер имен.

2. В окне Диспетчер имен выделите имя и нажмите кнопку Удалить (рис. 6.21).

Рис. 6.21. Удаление имени

В процессе создания и/или редактирования формул Excel обнаруживает ошибки синтаксиса формулы и приостанавливает дальнейшую работу.

При обнаружении лишних символов операторов, лишних или недостающих скобок и т. п. выводится сообщение об ошибке в окне предупреждения. Например, при вводе формулы в ячейку D2 в таблице на рис. 6.22 ошибочно введено два оператора (умножение и деление). В сообщении предлагается возможный вариант исправления ошибки. Чтобы принять его следует нажать кнопку Да, для самостоятельного исправления ошибки следует нажать кнопку Нет.

Рис. 6.22. Сообщение об ошибке во введенной формуле

При вводе формул с использованием мастера функций или их редактировании Excel обнаруживает недостаток или избыток аргументов. В этом случае появляется соответствующее окно (рис. 6.23). Следует нажать кнопку ОК, а затем внести исправления в формулу с клавиатуры или нажать кнопку Вставить функцию в строке формул и изменить аргументы функции в окне Аргументы функции (см. рис. 6.4).

Рис. 6.23. Сообщение об ошибке в аргументах функции

Excel обнаруживает ошибки, связанные с циклическими ссылками. Циклической ссылкой называется последовательность ссылок, при которой формула ссылается (через другие ссылки или напрямую) сама на себя. Например, в диапазон аргументов формулы СУММ в ячейке В7 в таблице на рис. 6.24 включена ячейка В7. При обнаружении циклической ссылки выходит окно сообщения. Нажатие кнопки ОК не приведет к исправлению ошибки. Лучше нажать кнопку Отмена и внести исправления самостоятельно.

Рис. 6.24. Сообщение о циклической ошибке

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

При выделении ячейки с ошибкой рядом с ней появляется кнопка Источник ошибки. Если щелкнуть по кнопке, появится меню, в котором указан тип ошибки, а также команды действий для исправления ошибки (рис. 6.25).

Рис. 6.25. Кнопка и меню кнопки Источник ошибки

Основные ошибки и некоторые возможные причины их появления приведены в таблице.

У меня есть сценарий Python, который использует ReportLab для создания отчета, сценарий был протестирован и работает должным образом, однако иногда я получаю следующее сообщение об ошибке.

TraceBack info:

File "C:toolsLegionellaTool.py", line 605, in <module>

createReport(selectedCoolingTowers, Report_outputs_folder, dbo_COLGIS, openPDF)

Error Info:

..Objectsmoduleobject.c:50: bad argument to internal function

Строка 605 — это createReport(selectedCoolingTowers, Report_outputs_folder, dbo_COLGIS, openPDF)

createReport — это функция, которая … создает отчет. Я отладил код, и у меня не было никаких ошибок, что могло бы привести к появлению ошибки, ошибка возникает только в некоторых случаях, тогда как в других случаях отчет создается нормально.

РЕДАКТИРОВАТЬ ===== создатькод отчета

def createReport(myReportTable, myReportFolder, M3Table, OpenPDF):
    global Author
    global TimeStamp

##    myReportTable = gp.GetParameterAsText(0)
##    myReportFolder = gp.GetParameterAsText(1)
##    M3Table = gp.GetParameterAsText(2)
##    OpenPDF = gp.GetParameterAsText(3)

    Author = getpass.getuser() #gets OS user name
    TimeStamp = str(datetime.datetime.now().hour) + ':' + str(datetime.datetime.now().minute) + ' on the ' + str(datetime.date.today().day) + '/' + str(datetime.date.today().month) + '/' + str(datetime.date.today().year) 

    #add time stamp to file name
    myFile = myReportFolder + os.sep + 'CoolingTowersForInspection_' + str(datetime.datetime.now().hour) + '_' + str(datetime.datetime.now().minute) + '_' + str(datetime.date.today().day) + '_' + str(datetime.date.today().month) + '_' + str(datetime.date.today().year) + '.pdf'
    c = reportlab.pdfgen.canvas.Canvas(myFile)

    #creates sectors array
    sectors = []
    sectors.append('NW')
    sectors.append('NE')
    sectors.append('SW')
    sectors.append('SE')

    for sector in sectors:
        #sector header
        #framePage(c, 'Cooling Towers for Inspection - ' + sector + ' sector')
        title = 'Cooling Towers for Inspection - ' + sector + ' sector'
        c.setFont('Helvetica',20) #title font
        c.drawString(reportlab.lib.units.inch, 10.5 * reportlab.lib.units.inch, title) #creates title

        c.setFont('Helvetica',10) #header and footer font

        #creates header
        c.drawCentredString(4.135 * reportlab.lib.units.inch, 0.75 * reportlab.lib.units.inch,
                                 'Report generated by ' + Author + ' at ' + TimeStamp + ' - Page %d' % c.getPageNumber())

        #creates footer
        c.drawCentredString(4.135 * reportlab.lib.units.inch, 11.00 * reportlab.lib.units.inch,
                                'Environmental Services')

        #draw a border
        c.setStrokeColorRGB(1,0,0)
        c.setLineWidth(5)
        c.line(0.8 * reportlab.lib.units.inch, reportlab.lib.units.inch, 0.8 * reportlab.lib.units.inch, 10.75 * reportlab.lib.units.inch)

        #reset carefully afterwards
        c.setLineWidth(1)
        c.setStrokeColorRGB(0,0,0)

        c.setFont('Helvetica', 10)

        #gets towers in that sector
        myTowers = arcpy.SearchCursor(myReportTable,""SECTOR" = '" + sector + "'","","")
        selTower = myTowers.next()

        y = 730

        if selTower is not None:

            while selTower:
                #insert page break when close to the end of the page
                if y < 110:
                    c.showPage()
                    y = 730
                    framePage(c, 'Cooling Towers for Inspection - ' + sector + ' sector')

                if selTower.TOWER_NAME <> None:
                    c.drawString(100, y, string.strip(selTower.TOWER_NAME))
                else:
                    c.drawString(100, y, "na")
                y = y - 12

                if selTower.TOWER_ADDRESS <> None:
                    c.drawString(100, y, string.strip(selTower.TOWER_ADDRESS))
                else:
                    c.drawString(100, y, "na")
                y = y - 12

                c.drawString(100, y, "Number of towers: " + str(int(selTower.NUMBER_OF_TOWERS)) + " ;   M3 Code: " + selTower.UKEY + " ;   Distance band: " + str(int(selTower.distance)) + " meters")
                y = y - 12

                inspectString = ""
                if selTower.TOWER_RATING <> None:
                    inspectString = "Inspection rating: " + selTower.TOWER_RATING
                else:
                    inspectString = "Inspection rating: na;"

                if selTower.TOWER_LAST_INSPECTION <> None:
                    t = selTower.TOWER_LAST_INSPECTION
                    strLastInspection = t.strftime("%A, %d %b %Y")

                    inspectString = inspectString + "   Last inspection: " + strLastInspection
                    #inspectString = inspectString + "   Last inspection: " + selTower.TOWER_LAST_INSPECTION
                else:
                    inspectString = inspectString + "   Last inspection: na"

                c.drawString(100, y, inspectString)
                y = y - 12

                c.drawString(100, y, "Contacts:")
                y = y - 12

                myTowerUKEY = selTower.UKEY

                #gets contacts for that cooling tower            
                myTowerContacts = arcpy.SearchCursor(M3Table,""UKEY" = '" + myTowerUKEY + "'","","")

                selContact = myTowerContacts.next()

                while selContact:
                    if y < 110:
                        c.showPage()
                        y = 730
                        framePage(c, 'Cooling Towers for Inspection - ' + sector + ' sector')

                    contact = ""
                    if selContact.TITLE <> None:
                        if string.strip(selContact.TITLE) <> "":
                            contact = string.strip(selContact.TITLE) + " "
                    if selContact.FIRSTNAME <> None:
                        contact = contact + selContact.FIRSTNAME + " "
                    if selContact.FAMILYNAME <> None:
                        contact = contact + selContact.FAMILYNAME + " "
                    if selContact.JOBTITLE <> None:
                        contact = contact + "(" + selContact.JOBTITLE + ") "
                    if selContact.TELW <> None:
                        contact = contact + selContact.TELW + "(work) "
                    if selContact.MOBILE <> None:
                        if string.strip(selContact.MOBILE) <> "":
                            contact = contact + string.strip(selContact.MOBILE) + "(mobile) "
                    if selContact.TELH <> None:
                        if string.strip(selContact.TELH) <> "":
                            contact = contact + string.strip(selContact.TELH) + "(home)"

                    contact = string.strip(contact)

                    c.drawString(100, y, contact)
                    y = y - 12
                    selContact = myTowerContacts.next()                

                y = y - 12
                del myTowerContacts
                selTower = myTowers.next()
        else:
            c.drawString(100, y, "no cooling towers for inspection in this sector")

        c.showPage() #insert page break after each sector

    del myTowers

    c.save()

    if OpenPDF == "true":
        os.startfile(myFile)

#function that creates each page
def framePage(canvas, title):
    canvas.setFont('Helvetica',20) #title font
    canvas.drawString(reportlab.lib.units.inch, 10.5 * reportlab.lib.units.inch, title) #creates title

    canvas.setFont('Helvetica',10) #header and footer font

    #creates header
    canvas.drawCentredString(4.135 * reportlab.lib.units.inch, 0.75 * reportlab.lib.units.inch,
                             'Report generated by ' + Author + ' at ' + TimeStamp + ' - Page %d' % canvas.getPageNumber())

    #creates footer
    canvas.drawCentredString(4.135 * reportlab.lib.units.inch, 11.00 * reportlab.lib.units.inch,
                            'Environmental Services')

    #draw a border
    canvas.setStrokeColorRGB(1,0,0)
    canvas.setLineWidth(5)
    canvas.line(0.8 * reportlab.lib.units.inch, reportlab.lib.units.inch, 0.8 * reportlab.lib.units.inch, 10.75 * reportlab.lib.units.inch)

    #reset carefully afterwards
    canvas.setLineWidth(1)
    canvas.setStrokeColorRGB(0,0,0)

РЕДАКТИРОВАТЬ номер 2 *

Полная трассировка здесь

Traceback (most recent call last):
  File "C:toolsLegionellaTool.py", line 613, in <module>
    createReport(selectedCoolingTowers, Report_outputs_folder, dbo_COLGIS, openPDF)

  File "C:toolsLegionellaTool.py", line 120, in createReport

    c.drawString(reportlab.lib.units.inch, 10.5 * reportlab.lib.units.inch, title) #creates title

  File "c:python26arcgis10.0libsite-packagesreportlabpdfgencanvas.py", line 1481, in drawString

    t.textLine(text)

  File "c:python26arcgis10.0libsite-packagesreportlabpdfgentextobject.py", line 426, in textLine

    self._code.append('%s T*' % self._formatText(text))
  File "c:python26arcgis10.0libsite-packagesreportlabpdfgentextobject.py", line 393, in _formatText

    for f, t in pdfmetrics.unicode2T1(text,[font]+font.substitutionFonts):
SystemError: ..Objectsmoduleobject.c:50: bad argument to internal function

<type 'exceptions.SystemExit'>: 1

Спасибо

Содержание: 

1. Решение ошибки “Недопустимое состояние объекта” с помощью тестирования и исправления базы

2. Как исправить ошибку “Недопустимое состояние объекта” без возможности попасть в конфигуратор 1С

1.         Решение ошибки “Недопустимое состояние объекта” с помощью тестирования и исправления базы

Добрый день, уважаемые читатели. В этой статье мы разберем одну очень важную и зачастую сложно решаемую ошибку в 1С — недопустимое состояние объекта. Данная ошибка может проявляться в разных состояниях. Иногда этому способствует реструктуризация базы данных, добавленный объект, либо неверно выбранный режим совместимости конфигурации. Эта ошибка срывает за собой целый пул возможных вариаций ошибок и всегда следует внимательно смотреть на конкретный текст ошибки.

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

Рассмотрим файловый режим работы:

Первое, что требуется сделать перед любыми манипуляциями — сохранить бекап базы данных. Если нам не удается попасть в конфигуратор 1С — следует сделать копию файла 1cd и папки с базой.

Далее если мы не можем попасть в конфигуратор 1С переходим к следующему пункту статьи. Если же в конфигуратор заход есть — следует сделать тестирование и исправление базы. Для этого заходим в меню Администрирование 1С 8.3. Далее выбираем пункт «Тестирование и исправление базы». Выставляем следующие пункты:

●        Реиндексация таблиц информационной базы

●        Реструктуризация таблиц информационной базы

●        Проверка логической целостности информационной базы

Метод проверки выбираем «Тестирование и исправление базы» и нажимаем выполнить.

После тестирования и исправления пробуем зайти и выполнить действия, которые смогли бы воссоздать ошибку. 

2. Как исправить ошибку “Недопустимое состояние объекта” без возможности попасть в конфигуратор 1С

Если доступа в конфигурацию нет в режиме конфигуратора 1С, тогда мы заходим в папку с платформой, зачастую она находится на диске С в каталоге Program Files (x86), далее открываем подкаталог 1cv8 и видим одну или несколько папок с версиями платформы, лучше всего брать ту платформу, под которой обычно заходим в базу (по умолчанию берется крайняя). Заходим в папку bin и открываем файл chdbfl.exe. В него прописываем путь к файлу базы данных и проводим проверку.

Также следует перенести файл 1cd в отдельную папку и попробовать открыть базу там. Если все успешно — на этом можно завершить восстановление. Если нет — нужно попробовать удалить объекты, которые были добавлены последними в конфигурацию.

Отдельно хотелось бы остановится на ошибке недопустимое состояние объекта !m_usingOldSchema. При такой ошибке следует поднять в свойствах версию совместимости конфигурации.

Мы рассмотрели основные методы решения ошибок «Недопустимое состояние объекта».

   Специалист компании «Кодерлайн»

Кулажевский Сергей

Понравилась статья? Поделить с друзьями:
  • Недокументированная серьезная ошибка 1106 nod32
  • Невыученные сегодня уроки никем незамеченная ошибка
  • Невыделение абзацев какая ошибка
  • Невские весы ошибка ouer
  • Невские весы нвт 9 ошибка err 3