Ошибка sql несовместимые типы в выражении

I am trying to return an integer amount when the condition is false and a string when the condition is true.

SELECT 
    ENAME, 
    CASE WHEN COMM IS NULL THEN 'no commission' 
        ELSE COMM
    END AS COMMISSION 
FROM EMP

I am getting this error:

ORA-00932: inconsistent datatypes: expected CHAR got NUMBER

William Robertson's user avatar

asked Sep 8, 2018 at 9:56

kestrel's user avatar

4

You need to use CAST:

SELECT ENAME, CASE WHEN COMM IS NULL THEN 'no commission' 
                   ELSE CAST(COMM AS VARCHAR2(20)) END AS COMMISSION 
FROM EMP;

Or use COALESCE:

SELECT ENAME, COALESCE(CAST(COMM AS VARCHAR2(20)), 'no commision')
FROM EMP;

answered Sep 8, 2018 at 9:57

Lukasz Szozda's user avatar

Lukasz SzozdaLukasz Szozda

160k23 gold badges224 silver badges265 bronze badges

From the Oracle SQL Language Reference 18c:

For both simple and searched CASE expressions, all of the return_exprs must either have the same data type (CHAR, VARCHAR2, NCHAR, or NVARCHAR2, NUMBER, BINARY_FLOAT, or BINARY_DOUBLE) or must all have a numeric data type. If all return expressions have a numeric data type, then Oracle determines the argument with the highest numeric precedence, implicitly converts the remaining arguments to that data type, and returns that data type.

The datatype of of the string literal ‘no commission’ is VARCHAR2 and the column COMM seems to be a number data type, so an error is thrown.

You can convert the return value COMM in the else-clause to VARCHAR2, to avoid this error. I think the best way to do so is to use the TO_CHAR function because this lets you control the format of the numbers displayed.

answered Sep 8, 2018 at 11:52

miracle173's user avatar

miracle173miracle173

1,83116 silver badges33 bronze badges

All datatypes of all cases must match whatever comparison structure you use such as case..when, decode, nvl or nvl2. I suggest you to use nvl or nvl2 for your case, since they’re more direct for null value cases :

SELECT ENAME, 
       nvl(to_char(COMM),'no commission') AS COMMISSION,
       nvl2(COMM,to_char(COMM),'no commission') AS COMMISSION2     
  FROM EMP;

SQL Fiddle Demo

answered Sep 8, 2018 at 10:54

Barbaros Özhan's user avatar

Barbaros ÖzhanBarbaros Özhan

57.4k10 gold badges31 silver badges55 bronze badges

Согласно правилу sql другой «тип данных» нельзя использовать в «case» для «order by». Просто разделите «случай» в зависимости от типа данных.

 DECLARE @sortProperty VARCHAR(32) = 'name'
        ,@sortDirection VARCHAR(32) =  'asc'
        ,@start INTEGER = 5
        ,@limit INTEGER = 10;

    DROP TABLE IF EXISTS #Person;
    CREATE TABLE #Person(
         surname VARCHAR(256)
        ,name    VARCHAR(256)
        ,age     INTEGER
        ,birth   DATE
    ) WITH (DATA_COMPRESSION = PAGE)

    INSERT INTO #Person (
        surname, name, age, birth
    )
    VALUES 
        ('Ivanov', 'Petr', 19, '2001-01-01'),
        ('Ivanova', 'Anna', 20, '2000-01-02'),
        ('Petrov', 'Ivan', 20, '2001-01-03'),
        ('Markov', 'Andrey', 21, '1999-01-04'),
        ('Nesterov', 'Dmitry', 22, '1998-01-05'),
        ('Sidorova', 'Irina', 25, '1995-01-06'),
        ('Zvezdina', 'Olga', 30, '1990-01-07'),
        ('Litvinov', 'Alexey', 31, '1989-01-08'),
        ('Sokolov', 'Petr', 32, '1988-01-09')
    SELECT 
         prsn.surname
        ,prsn.name
        ,prsn.age
        ,prsn.birth
    FROM #Person AS prsn
    ORDER BY prsn.age


    SELECT @sortProperty
    SELECT @sortDirection


    SELECT 
     prsn.surname
    ,prsn.name
    ,prsn.age
    ,prsn.birth
    FROM #Person AS prsn
     order by 
         CASE 
           WHEN @sortDirection = 'ASC' and @sortProperty in ('surname','name')
            THEN
                CASE @sortProperty
                    WHEN 'surname' THEN prsn.surname
                    WHEN 'name' THEN prsn.[name]

                END            
         END ASC,
         (
          CASE 

            WHEN @sortDirection = 'ASC' and @sortProperty in ('birth')
            THEN
                CASE @sortProperty
                    WHEN 'birth' THEN prsn.birth
                END
           END ) ASC,
         (
          CASE 

            WHEN @sortDirection = 'ASC' and @sortProperty in ('age')
            THEN
                CASE @sortProperty
                     WHEN 'age' THEN prsn.age
                END
           END ) ASC,
           CASE 
           WHEN @sortDirection = 'DESC' and @sortProperty in ('surname','name')
            THEN
                CASE @sortProperty
                    WHEN 'surname' THEN prsn.surname
                    WHEN 'name' THEN prsn.[name]

                END            
         END desc,
         (
          CASE 

            WHEN @sortDirection = 'DESC' and @sortProperty in ('birth')
            THEN
                CASE @sortProperty
                    WHEN 'birth' THEN prsn.birth
                END
           END ) desc,
         (
          CASE 

            WHEN @sortDirection = 'DESC' and @sortProperty in ('age')
            THEN
                CASE @sortProperty
                     WHEN 'age' THEN prsn.age
                END
           END ) desc        

        OFFSET @start ROWS FETCH NEXT @limit ROWS ONLY;

Ошибка СУБД

Я
   Nicholas

13.11.14 — 16:52

Платформа: 1С:Предприятие 8.3 (8.3.5.1248)

Конфигурация: Управление торговлей, редакция 11.1 (11.1.9.51) (http://v8.1c.ru/trade/)

Copyright © ООО «1C», 2003-2013. Все права защищены

(http://www.1c.ru)

Режим: Серверный (сжатие: усиленное)

Приложение: Тонкий клиент

Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)

Вариант интерфейса: Такси

СУБД: PostgreSQL 9.2.4-1.1C(x64)

Ошибки:

———————————————————————————

13.11.2014 19:15:55

Невосстановимая ошибка

Ошибка при выполнении запроса POST к ресурсу /e1cib/cmi/command/0:b30ab4da-73b4-49e5-ab62-cf53befafb52:

по причине:

Ошибка СУБД:

ERROR:  CASE/WHEN could not convert type mvarchar to bytea at character 1180

С чем может быть связана такая ошибка? Возникает при попытке запустить обмен с сайтом Битрикс.

   Господин ПЖ

1 — 13.11.14 — 16:53

написано же

could not convert type mvarchar to bytea at character 1180

   olegves

2 — 13.11.14 — 16:54

ТИИ что говорит?

   Господин ПЖ

3 — 13.11.14 — 16:59

>С чем может быть связана такая ошибка?

с тем что связка с PostgreSQL — это риск, ибо ошибок в описаниях релизов >> чем по MSSQL

   Nicholas

4 — 14.11.14 — 07:02

(1) Первое, что приходит в голову по этому поводу — это проблема с кодировкой. Но тут вроде все в порядке. Локаль UTF8, кодировка 1251. Символ с кодом 1180 — это какая-то закорючка. Сомневаюсь, что где-то он у меня используется в значениях реквизитов.

Пробовал при помощи технологического журнала получить текст запроса к базе, но безуспешно. В логах только описание ошибки как в (0), дамп пустой.

(2) ТИИ говорит, что все хорошо.

(3) Попробовать откатиться к предыдущему релизу платформы? Или вернуться на MSSQL? База изначально была скульная, но есть мысль перенести ее в облако, под линукс и соответственно постгри. Поэтому и начал экспериментировать. В общем-то все работает, за исключением обмена с сайтом.

   McSim78

5 — 14.11.14 — 14:43

(3) В данном случае виноват не PostgreSQL. На MS SQL2008 R2 SP3 такая же беда.

(4) Проблема кроется в запросе по адресу ОбщиеМодули.Б_МодульОбменаССайтомСервер.СформироватьВременныеТаблицыПоИнформацииОТоварахПакета()

В частности в местах, типа этого:

ВЫБОР КОГДА ВариантыКомплектацииНоменклатурыТовары.Характеристика ЕСТЬ NULL ТОГДА «» ИНАЧЕ ВариантыКомплектацииНоменклатурыТовары.Характеристика.ВерсияДанных КОНЕЦ КАК ВерсияДанныхХарактеристики,

Я написал в саппорт Битрикса, но у себя пока исправил (для настройки и тестов) вот так:

Это:

ВариантыКомплектацииНоменклатурыТовары.Характеристика ЕСТЬ NULL ТОГДА «»

заменил на это:

ВариантыКомплектацииНоменклатурыТовары.Характеристика ЕСТЬ NULL ТОГДА НЕОПРЕДЕЛЕНО

   McSim78

6 — 14.11.14 — 14:45

Скорее всего битриксы тестировали этот запрос на файловой версии. Там такие конструкции пролетают со свистом. В случае с СУБД — не проходят.

   Nicholas

7 — 16.11.14 — 11:23

В файловом варианте ошибка тоже есть:

Невосстановимая ошибка

Ошибка при выполнении запроса POST к ресурсу /e1cib/cmi/command/0:b30ab4da-73b4-49e5-ab62-cf53befafb52:

по причине:

Ошибка СУБД:

Ошибка SQL: Несовместимые типы в выражении

по причине:

Ошибка SQL: Несовместимые типы в выражении

  

Nicholas

8 — 16.11.14 — 11:34

Кстати, а почему в данном случае нельзя использовать конструкцию ТОГДА «»?

Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Содержание:

1.       Почему появляется эта ошибка 1с 8?

2.       Исправление ошибку POST  

1.    Почему появляется эта ошибка 1с 8?

В процессе работы с 1С порой появляется сообщение «Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm». Данное сообщение достаточно нередко связано с кодом 1С 8.3 в новых релизах 1С.

Рассмотрим, в чем же заключается «неправильность» выполнения запроса POST к ресурсу 1С, каковы первопричины ее образования и как с ней бороться.

В тексте сообщения обычно содержится растолкование источника появления проблемы – это ошибка 1С 8 либо на сервере, либо СУБД, либо какая-то другая.

«Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm» появляется неожиданно и чаще всего не обладает какой-либо логичностью.  

2.    Исправление ошибку POST

Чтобы исправить ошибку POST к ресурсу /e1cib/logForm можно попробовать сделать следующее:

· Провести типовое Тестирование и Исправлении базы 1С 8 (в конфигураторе в пункте меню «Администрирование» выберите Тестирование и исправление). Предварительно обязательно подготовьте архивную копию базы 1С 8!

· Установить последние актуальные обновления к базе 1С 8.

· Откатить программу 1С до предыдущей версии/релиза (восстановить копию базы 1С, сделанную до выполнения обновления).

· Работая с Windows, можно очистить сеансовые данные. Для этого потребуется остановить службу сервера базы 1С, после чего в папке C:Program Files1cv8srvinforeg_1541snccntx + *уникальный идентификатор* удалить все за исключением файлов, которые имеют расширение *.1, а затем обратно запустить «Сервер 1С».

· Перезапустить сам сервер 1С Предприятие.

· Обратиться на линию консультаций в официальную поддержку фирмы «1С». Кстати, Вы также можете обратиться и к нам по этому или любому другому вопросу. Мы всегда на связи и с радостью поможем решить Вашу проблему.

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

Иванова Ольга

При длительной работе с программой 1С пользователи быстро учатся устранять большинство ошибок, которые появляются в процессе. Однако с выходом новых, более усовершенствованных версий появляются и новые типы неполадок. В этой статье вы узнаете, как устранить «Ошибка при выполнении запроса GET к ресурсу e1cib/cmi/commands.»Ошибка при выполнении запроса GET

Содержание

  1. Причины ошибки в 1С
  2. Изменяем режим запуска для пользователей
  3. Устранение сбоя при выполнении запроса GET к ресурсу
  4. Запуск утилит для исправления ошибок 1С
  5. Добавление памяти для 1С

Причины ошибки в 1С

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

Есть и другой тип подобного сообщения — неспецифированная ошибка работы с ресурсом e1cib/logform. Все эти случаи мы рассмотрим далее в программе и определим, как их решить. Как и при появлении многих других сообщений о сбое, единой инструкции просто не существует. Связано это с тем, что пользователи или операторы могут работать не только с разными версиями ОС Windows, но и в разных версиях 1С.

Читайте также: ошибка при выполнении запроса POST к ресурсу /e1cib/logForm.

Изменяем режим запуска для пользователей

Часто ошибку можно решить довольно просто. Для этого вам необходимо войти с правами администратора и изменить настройки учетной записи пользователя. Нужно выбрать редактирование информационной базы и в поле «Основной режим запуска» поставить галочку на «Выбирать автоматически». Сохраните эти изменения, и ошибка должна пропасть.

Окно редактирования информационной базы

Устранение сбоя при выполнении запроса GET к ресурсу

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

  1. Чтобы очистить кэш, вам нужно в 1С найти к нему путь. Он находится в той же папке, что и программа;
  2. Выберите кнопку «Настройки»;
  3. Найдите путь в этом окне. Вы можете скопировать путь и вставить его в проводнике, чтобы быстро попасть в нужную папку;Конфигурация диалога запуска 1С
  4. В ней будут файлы с длинными случайными наборами символов в качестве имен. Их все нужно удалить. Это и есть кэш 1С.

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

  1. Запустить программу;
  2. Откройте настройки информационной базы;
  3. В строке «Дополнительные параметры…» введите в строку: «/ClearCache» и сохраните изменения.Настройки информационной базы 1С

Запуск утилит для исправления ошибок 1С

В программном комплексе 1С включены специальные утилиты, которые могут помочь пользователю решить проблемы при работе. Если вам еще не удалось устранить дисфункцию при выполнении запроса GET к ресурсу e1c/ibc/micommands:

  1. Откройте «Администрирование»;
  2. Найдите и выберите пункт «Тестирование и исправление»;Меню тестирования базы 1С
  3. Выберите нужные параметры галочкой и запустите утилиту.

Каждый из параметров позволяет выполнять дополнительные проверки над теми или иными данными программы:

  • Реиндексация таблиц — ревизия индексов таблиц. В ходе тестирования будет произведена реиндексация. Не убирайте с него галочку. Эта процедура пойдет программе на пользу;
  • Проверка целостности базы — база данных будет перепроверена. Если будут найдены неполадки, утилита исправит их. Также полезная функция, которая не будет лишней при запуске;
  • Проверка базы ссылок — будут найдены неверные указатели, ссылки и действия над ними передаются пользователю;
  • Реструктуризация таблиц — эта процедура занимает много времени. Поэтому применять нужно только в случае реальной необходимости. В результате её действия структура таблицы будет пересоздана;
  • Сжатие таблиц — также полезный параметр, в процессе удаляются элементы данных, в которых уже нет необходимости.

Узнайте, как исправить ошибку в 1С 7.7 «Порядок сортировки, установленный для базы данных, отличается от системного».

Добавление памяти для 1С

Ошибки в 1С Предприятие часто имеют дополнительный параметр «Недостаточно памяти». С ней встречались, наверное, все, кто долгое время работал с программой. Нехватка памяти появляется из-за обновления конфигурации, загрузки объемных баз данных, при создании отчетов и т.д.

Чтобы избавиться от ошибки с памятью:

  1. Откройте меню «Пуск». Запишите в пустой строке поиска «Командная строка»;
  2. Выберите её в результатах ПКМ и запустите от имени администратора;
  3. Введите команду: CMD и нажмите клавишу ввода;
  4. Курсор перейдет на другую строку, в ней запишите: bcdedit /set increaseuserva 3072 и нажмите ENTER. В цифрах выражается память в мегабайтах. Здесь вы можете указать свое значение, относительно установленной в компьютере оперативной памяти;
  5. В системных настройках можно узнать, сколько памяти есть в компьютере. Для этого нажмите вместе WIN+PAUSE.

После этих действий перезагрузите компьютер и проверьте, появляется ли ошибка при выполнении запроса GET к ресурсу e1cib/cmi/commands.

Опубликовано 28 марта 2019 Обновлено 05 октября 2020

При обмене данными клиент-сервер в программе «1С Бухгалтерия» (обычно версий 8.3.хххх) оператор локального ПК может внезапно столкнуться с сообщением «Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm». Данная проблема обычно имеет программную природу, и вызвана некорректно написанным обновлением к данной программе. Ниже я разберу, что это за ошибка запроса POST к ресурсу /e1cib/logForm, каковы факторы её возникновения, и как её исправить.

Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm
Сообщение о возникшей ошибке

Перевод и причины дисфункции

После текста сообщения об ошибке при обращении к /e1cib/logForm обычно следует описание причины её возникновения, которая может иметь различный характер (ошибка на сервере, ошибка СУБД и другие).

Проблема возникает на серверной версии программы, причём после установки очередного обновления к «1С». Проблемными стали версии программы 8.3.6, 8.3.8.хх, 8.3.9.ххх, на которых рассматриваемая мной дисфункция возникает наиболее часто.

«Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm» возникает довольно случайно, в большинстве случаев не имеет каких-либо закономерностей при своём появлении, чем раздражает довольно многих пользователей, заваливающих техподдержку 1С «письма счастья».

Разбираем причины возникшей дисфункции

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

Также вам может быть интересен наш материал о коде ошибки 0000000002, связанной с дисфункцией подаваемой декларации.

Чтобы избавиться от ошибки POST к ресурсу /e1cib/logForm рекомендую выполнить следующее:

  • Выполните стандартное «Тестирование и Исправлении» (ТиИ) вашей базы данных. Данная операция осуществляется переходом в «Конфигуратор», где во вкладке «Администрирование» необходимо выбрать опцию «Тестирование и Исправление». Операцию необходимо осуществлять в монопольном режиме, потому никого кроме вас в базе быть не должно. Перед выполнением указанной процедуры рекомендуется сделать страховочную копию ваших баз данных;
    Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm
    Выполните исправление вашей базы данных
  • Установите наиболее свежие обновления к вашей версии 1С. Поскольку пик появления данной ошибки пришёлся на 2016-2017 годы, то с тех пор разработчиками был выпущен ряд обновлений, позволяющих устранить данную ошибку. Установите свежие апдейты для вашей «1С», и если не помогло, то идём дальше;
  • Откатите программу до прежней версии. В некоторых случаях (когда у пользователей было установлены самые свежие обновления) помог откат программы до более ранней (и более стабильной) версии программы;
  • При доступе к серверу 1С рекомендуется почистить кэш. Остановите на сервере службу под названием «агент сервера 1с предприятие», в каталоге кэша сервера удалите всё кроме файлов, имеющих расширение *.1 Примерный путь к каталогу может быть:

Program Files1cv8srvinforeg_1541

После чего вновь запустите указанную службу;

  • Перезапустите сам сервер 1С Предприятие. У некоторых пользователей это помогло решить проблему запроса POST к ресурсу /e1cib/logForm;
  • Обратитесь в официальную поддержку 1С за консультацией и помощью. Также может помочь обращение по сети (к примеру, на е-мейл v8@1c.ru) или по телефону (495) 956-11-81 в техническую поддержку 1С. Поскольку рассматриваемая ошибка имеет массовый характер и наблюдается не первый год, то наверняка у специалистов техподдержки уже имеются работающие алгоритмы решения возникшей проблемы.
    Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm
    Обратитесь в техподдержку продуктов 1С

Также на нашем сайте мы разобрали ошибку 0400300003, связанную с нарушением условия обязательного присутствия элемента.

Заключение

Основным фактором возникновения ошибки запроса POST к ресурсу /e1cib/logForm является некорректно написанный разработчиками код обновления к программе «1С». Эффективным решением возникшей проблемы станет обновление вашей версии 1С до самой свежей версии, где рассматриваемая дисфункция уже исправлена, и появлений рассматриваемой ошибки более не наблюдается.

  1. 30.12.2022, 10:16

    #11

    Ymorozoff вне форума


    Гость форума


    По умолчанию Re: Замучила ошибка при выполнении запроса POST

    Будете смеяться: Делал для клиента пустую базу со справочниками. У меня все Ок. Принес к нему — не работает. Пишет:
    Непредвиденная ошибка Невосстановимая ошибка Ошибка при выполнении запроса POST к ресурсу /e1cib/modules/call: по причине: Ошибка SDBL: Таблица или поле DataSeparationUse21889 не содержится в разделе FROM
    Мучился три дня, перелазил весь инет, перепробовал все, уже отчаялся…. Потом заметил, что в папке нет файла DoNotCopy.txt. Вставил… ЗАРАБОТАЛО!!!
    Мож кому поможет.


  2. Пользователь сказал cпасибо:


  3. 30.12.2022, 12:14

    #12

    По умолчанию Re: Замучила ошибка при выполнении запроса POST

    Цитата Сообщение от Ymorozoff
    Посмотреть сообщение

    Будете смеяться: Делал для клиента пустую базу со справочниками. У меня все Ок. Принес к нему — не работает. Пишет:
    Непредвиденная ошибка Невосстановимая ошибка Ошибка при выполнении запроса POST к ресурсу /e1cib/modules/call: по причине: Ошибка SDBL: Таблица или поле DataSeparationUse21889 не содержится в разделе FROM
    Мучился три дня, перелазил весь инет, перепробовал все, уже отчаялся…. Потом заметил, что в папке нет файла DoNotCopy.txt. Вставил… ЗАРАБОТАЛО!!!
    Мож кому поможет.

    Желательно указывать релизы платформ и конфигураций и как переносили базу.


Похожие темы

  1. Ответов: 1

    Последнее сообщение: 28.06.2010, 09:56

Социальные закладки

Социальные закладки


Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
  • BB коды Вкл.
  • Смайлы Вкл.
  • [IMG] код Вкл.
  • [VIDEO] код Вкл.
  • HTML код Выкл.

Правила форума

Клиент поймал довольно странную ошибку при работе в 1С. При этом отследить её было проблематично. Она могла возникнуть в любой момент: при работе с документами или же просто в режиме ожидания.

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

Полный текст ошибки:
Неспецифицированная ошибка работы с ресурсом
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
Недостаточно свободной памяти для выполнения операции

Неспецифицированная ошибка работы с ресурсом

Конфигурация среды

Обычная локальная сеть с роутером и подключенными станциями по «проводу» (100 Мбит/сек). Файловая база 1С:УНФ опубликована через веб-сервер Apache. Основной ПК и клиенты на базе ОС Windows 10.

Подключение к ИБ с помощью тонкого клиента по протоколу http. Одновременных подключений к базе — до 3-х человек. Ошибка появляется на удаленных ПК, которые соединяются с Apache.

Как исправить ошибку

Что можно сделать в этом случае. Разберем несколько рекомендаций — они разные и могут показаться странными — но все-таки проверьте. Вдруг какая-то из них окажется полезной и закроет ошибку.

В ошибке указывается, что недостаточно свободной памяти. Если вы обладаете ресурсом, чтобы увеличить объем ОЗУ на сервере — сделайте это. Конечно, там свои тонкости и нюансы. Проверьте — не помешает.

Внимание; перед любыми изменениями обязательно сделайте контрольную точку системы (бэкап) и резервную копию ИБ для подстраховки.

Рекомендации

1. Перезапустите службу Apache на основном ПК.
В качестве быстрого решения в моменте.

2. Очистите локальный кэш на станциях.

3. Выполните проверку и переиндексацию БД (ТиС). Опционально — сократите журнал регистрации (ЖР).

4. Отключите ipv6 на ПК с опубликованной базой.

5. Увеличьте объем оперативной памяти, доступной пользователю.
Для Windows Vista, Windows 7, Windows Server 2008 выполните команду от имени администратора:

bcdedit /set increaseuserva 2560 //если у вас установлено 3 Гб ОЗУ
bcdedit /set increaseuserva 3072 //если у вас установлено 4 Гб ОЗУ

Чтобы вернуть параметры по умолчанию, для отмены вышеуказанных настроек выполните в консоли команду:

bcdedit /deletevalue increaseuserva
bcdedit /deletevalue {current} increaseuserva //если использовался параметр {current}

Для Windows XP, Windows Server 2003 настраивается через изменение файла boot.ini. Будьте осторожны. В конце каждой строки под заголовком [Operating Systems] после команды /fastdetect (или любой другой команды, которая идет последней) добавьте следующие параметры:

/3GB /userva=2560 //если у вас установлено 3 Гб ОЗУ
/3GB //если у вас установлено 4 Гб ОЗУ

Например,
multi(0)disk(0)rdisk(0)partition(1)WINDOWS=»Windows XP Professional» /fastdetect /3GB /userva=2560

6. Если допустимо — перейдите на x64-версии 1С.

7. Замените веб-сервер Apache на типовой Microsoft IIS.

8. Обновите платформу.
Фирма «1С» указала на то, что проблема наблюдается в релизах технологической платформы, начиная с 8.3.16.1791, 8.3.17.1823, 8.3.18.1201.

С информационного портала 1С:
«Ошибка исправлена в версиях платформы начиная с 8.3.17.2231 и 8.3.18.1483. Фирма «1С» приносит извинения пользователям, у которых проявилась указанная проблема. Для ее устранения предлагаем обновиться на указанные версии платформы или последующие», – говорится на официальном сайте.

✅ Успехов вам!

__________
Не получается? Зовите на помощь ИТ-специалиста или обратитесь с нашим джедаям техподдержки → +7-911-500-10-11

Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:

Невосстановимая ошибка. Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:

Выглядит данная ошибка вот так:

 

Сначала напишем список предположительных причин данной ошибки, которые Вы можете найти в интернете и которые являются ОШИБОЧНЫМИ:

  • Ошибка в релизе 1С
  • Ошибка в платформе 1С
  • Повреждение базы данных (требующее лечения с помощью «Тестирования и исправления»)
  • Ошибка кэша
  • Ошибка сервера 1С (предлагается перезапуск службы сервера 1С)

Нет, все перечисленное не имеет отношения к действительности. Иногда проделанные выше действия, кажется, что помогают с исправлением ошибки. Но просто совпадение с решением одновременно реальной причины.

Сложность разбора реальной причины данной проблемы заключается в том, что воспроизводится она непредсказуемым образом.

Замечено, что ошибка воспроизводится практически только при клиент-серверном режиме работы. И обычно при выполнении длительных операций.

«Ошибка при выполнении запроса POST» — есть информация, что ошибка возникает при выполнении длительных, нагруженных операций над базой данных в ситуациях, когда у процесса rphost заканчивается разрешенная оперативная память на процесс.

Нашей рекомендацией является – снять ограничение на количество оперативной памяти на рабочий процесс сервера 1С.

Также может помочь переход с х86 сервера 1С на х64.

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

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

Для снятия ограничений на потребление памяти нужно в консоли сервера 1С зайти в свойства рабочего сервера, как показано на скриншоте:

 

Если для настроек указать значения «-1», как на скриншоте, то данные ограничения для сеансов использоваться не будут. То есть не будет выполняться завершение сеансов, которые потребляют много оперативной памяти.

Используйте эту настройку под свою ответственность. Нужно понимать, что в большинство случаев при параллельной работе большого количества пользователей вы получите стабильную работу сервера 1С все-таки если не будете отключать данную настройку.

Мы рекомендуем устанавливать значения «-1» только на время выполнения задачи переноса данных 1С, либо другой нужной Вам ресурсоемкой задачи.

Ошибка СУБД

Я
   Nicholas

13.11.14 — 16:52

Платформа: 1С:Предприятие 8.3 (8.3.5.1248)

Конфигурация: Управление торговлей, редакция 11.1 (11.1.9.51) (http://v8.1c.ru/trade/)

Copyright © ООО «1C», 2003-2013. Все права защищены

(http://www.1c.ru)

Режим: Серверный (сжатие: усиленное)

Приложение: Тонкий клиент

Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)

Вариант интерфейса: Такси

СУБД: PostgreSQL 9.2.4-1.1C(x64)

Ошибки:

———————————————————————————

13.11.2014 19:15:55

Невосстановимая ошибка

Ошибка при выполнении запроса POST к ресурсу /e1cib/cmi/command/0:b30ab4da-73b4-49e5-ab62-cf53befafb52:

по причине:

Ошибка СУБД:

ERROR:  CASE/WHEN could not convert type mvarchar to bytea at character 1180

С чем может быть связана такая ошибка? Возникает при попытке запустить обмен с сайтом Битрикс.

   Господин ПЖ

1 — 13.11.14 — 16:53

написано же

could not convert type mvarchar to bytea at character 1180

   olegves

2 — 13.11.14 — 16:54

ТИИ что говорит?

   Господин ПЖ

3 — 13.11.14 — 16:59

>С чем может быть связана такая ошибка?

с тем что связка с PostgreSQL — это риск, ибо ошибок в описаниях релизов >> чем по MSSQL

   Nicholas

4 — 14.11.14 — 07:02

(1) Первое, что приходит в голову по этому поводу — это проблема с кодировкой. Но тут вроде все в порядке. Локаль UTF8, кодировка 1251. Символ с кодом 1180 — это какая-то закорючка. Сомневаюсь, что где-то он у меня используется в значениях реквизитов.

Пробовал при помощи технологического журнала получить текст запроса к базе, но безуспешно. В логах только описание ошибки как в (0), дамп пустой.

(2) ТИИ говорит, что все хорошо.

(3) Попробовать откатиться к предыдущему релизу платформы? Или вернуться на MSSQL? База изначально была скульная, но есть мысль перенести ее в облако, под линукс и соответственно постгри. Поэтому и начал экспериментировать. В общем-то все работает, за исключением обмена с сайтом.

   McSim78

5 — 14.11.14 — 14:43

(3) В данном случае виноват не PostgreSQL. На MS SQL2008 R2 SP3 такая же беда.

(4) Проблема кроется в запросе по адресу ОбщиеМодули.Б_МодульОбменаССайтомСервер.СформироватьВременныеТаблицыПоИнформацииОТоварахПакета()

В частности в местах, типа этого:

ВЫБОР КОГДА ВариантыКомплектацииНоменклатурыТовары.Характеристика ЕСТЬ NULL ТОГДА «» ИНАЧЕ ВариантыКомплектацииНоменклатурыТовары.Характеристика.ВерсияДанных КОНЕЦ КАК ВерсияДанныхХарактеристики,

Я написал в саппорт Битрикса, но у себя пока исправил (для настройки и тестов) вот так:

Это:

ВариантыКомплектацииНоменклатурыТовары.Характеристика ЕСТЬ NULL ТОГДА «»

заменил на это:

ВариантыКомплектацииНоменклатурыТовары.Характеристика ЕСТЬ NULL ТОГДА НЕОПРЕДЕЛЕНО

   McSim78

6 — 14.11.14 — 14:45

Скорее всего битриксы тестировали этот запрос на файловой версии. Там такие конструкции пролетают со свистом. В случае с СУБД — не проходят.

   Nicholas

7 — 16.11.14 — 11:23

В файловом варианте ошибка тоже есть:

Невосстановимая ошибка

Ошибка при выполнении запроса POST к ресурсу /e1cib/cmi/command/0:b30ab4da-73b4-49e5-ab62-cf53befafb52:

по причине:

Ошибка СУБД:

Ошибка SQL: Несовместимые типы в выражении

по причине:

Ошибка SQL: Несовместимые типы в выражении

  

Nicholas

8 — 16.11.14 — 11:34

Кстати, а почему в данном случае нельзя использовать конструкцию ТОГДА «»?

Я в одной книжке по программированию как то прочитал: «Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.»

Desh

147 / 147 / 41

Регистрация: 01.12.2009

Сообщений: 275

1

22.03.2012, 15:05. Показов 4929. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    Public con As OleDb.OleDbConnection 
    Public SqlCom As OleDb.OleDbCommand
    Public DT As New Data.DataTable
    Public DA As OleDb.OleDbDataAdapter
    Public DR As OleDb.OleDbDataReader
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim datStart = Format(DateTimePicker1.Value, "dd.MM.yyyy")
            Dim datEnd = Format(DateTimePicker2.Value, "dd.MM.yyyy")
            con = New OleDb.OleDbConnection("Provider=microsoft.jet.OLEDB.4.0; Data Source =c:db.mdb")             
            DT.Clear()
            SqlCom = New OleDb.OleDbCommand("SELECT * FROM [Таблица1] WHERE (Data BETWEEN '" & datStart & "' AND '" & datEnd & "')", con)
            con.Open()
            SqlCom.ExecuteNonQuery()
            DA = New OleDb.OleDbDataAdapter(SqlCom)
            DA.Fill(DT)
            Me.DataGridView1.DataSource = DT
            con.Close()
        Catch ex As Exception
            MsgBox(Err.Description)
        Finally
            con.Close()
        End Try
    End Sub

в строке

VB.NET
1
SqlCom.ExecuteNonQuery()

выдает «Несоответствие типов данных в выражении условия отбора.»

база создана в Access, Тип данных поля Data — «Дата/Время». Даты в таблице в формате 22.03.2012

Подскажите пжлста, что не так?



0



_

2363 / 1241 / 78

Регистрация: 28.10.2009

Сообщений: 4,331

22.03.2012, 15:29

2

Desh, функция Format возвращает строку, а не тип Date — в этом собственно и проблема



0



Desh

147 / 147 / 41

Регистрация: 01.12.2009

Сообщений: 275

22.03.2012, 15:46

 [ТС]

3

Изменил на:

VB.NET
1
2
Dim datStart = DateTimePicker1.Value
Dim datEnd = DateTimePicker2.Value

заполнял таблицу:

VB.NET
1
2
3
4
        SqlCom = New OleDb.OleDbCommand("INSERT INTO [Таблица1] ([Data],[nameInfo]) VALUES ('" & DateTimePicker1.Value & "','аывпып пыап kfkfksdkasdfadf')", con)
        con.Open()
        SqlCom.ExecuteNonQuery()
        con.Close()

Все равно ошибка в Button1_Click «Несоответствие типов данных в выражении условия отбора.»



0



XIST

1294 / 995 / 141

Регистрация: 01.10.2009

Сообщений: 3,177

Записей в блоге: 1

22.03.2012, 16:39

4

Цитата
Сообщение от Desh
Посмотреть сообщение

Изменил на:

VB.NET
1
2
Dim datStart = DateTimePicker1.Value
Dim datEnd = DateTimePicker2.Value

заполнял таблицу:

VB.NET
1
2
3
4
        SqlCom = New OleDb.OleDbCommand("INSERT INTO [Таблица1] ([Data],[nameInfo]) VALUES ('" & DateTimePicker1.Value & "','аывпып пыап kfkfksdkasdfadf')", con)
        con.Open()
        SqlCom.ExecuteNonQuery()
        con.Close()

Все равно ошибка в Button1_Click «Несоответствие типов данных в выражении условия отбора.»

Используй параметры

VB.NET
1
2
3
4
Dim cmd As New System.Data.OleDb.OleDbCommand ("INSERT INTO [Таблица1] ([Data],[nameInfo]) VALUES ('@dt','аывпып пыап kfkfksdkasdfadf')", con)
)
                   cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@dt", System.Data.OleDb.OleDbType.DBDate))
                   cmd.Parameters(0).Value = DateTimePicker1.Value

Сори за ошибки если есть…



0



coderxx

465 / 179 / 15

Регистрация: 25.02.2012

Сообщений: 416

Записей в блоге: 2

22.03.2012, 17:01

5

Нужно так:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
            Dim datStart As String = Format(DateTimePicker1.Value, "MM/dd/yyyy")
            Dim datEnd As String = Format(DateTimePicker2.Value, "MM/dd/yyyy")
            con = New OleDb.OleDbConnection("Provider=microsoft.jet.OLEDB.4.0; Data Source =c:db.mdb")             
            DT.Clear()
            SqlCom = New OleDb.OleDbCommand("SELECT * FROM [Таблица1] WHERE (Data BETWEEN #" & datStart & "# AND #" & datEnd & "#)", con)
            con.Open()
            SqlCom.ExecuteNonQuery()
            DA = New OleDb.OleDbDataAdapter(SqlCom)
            DA.Fill(DT)
            Me.DataGridView1.DataSource = DT
            con.Close()



4



147 / 147 / 41

Регистрация: 01.12.2009

Сообщений: 275

23.03.2012, 08:31

 [ТС]

6

Всем спасибо за участие! Заюзал приведение к формату coderxx‘a.



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

23.03.2012, 08:31

6

Понравилась статья? Поделить с друзьями:
  • Ошибка spn 3226 fmi 15 камаз как убрать
  • Ошибка sql state 23000 native 2627
  • Ошибка spn 3226 fmi 15 камаз cummins
  • Ошибка sql server права доступа
  • Ошибка sql server не существует или доступ запрещен