Ошибка mchar control

Обновлено: 05.07.2024

Пришлось устанавливать 1С на Linux-сервер. Все свои действия аккуратно записал и заскриншотил:

Зачет. )
1. Для работы c rаr-архивами, есть утилита unrar.
Только там синтаксис для ключей - вендовый. Долго тупил. )
2. И в консоли, вместо 'su root' - лучше 'su -'.
Вот уже что-то есть - советую статью дополнить - чем больше описаний тем лучше.
Книга знаний: v8: Личный опыт установки сервера 1cv8.1 beta на Fedora Core 5
Спасибо, только вот я сомневаюсь, что разрешение подключаться всем со всех хостов есть истинно верное.
Спасибо, только вот я сомневаюсь, что разрешение подключаться всем со всех хостов есть истинно верное.

Как я понял, в конфигурационном файле PostgreSQL нужно разрешить только localhost?

И ещё, может кто знает: как сделать так, чтобы оснастка управления серверами 1С запрашивала пароль на любые действия по добавлению/удалению сервера кластера и БД? А то несекъюрно как-то.

(Конечный компьютер отверг запрос на подключение).
Ставил на ФС 6.0, все по инструкции. При подключении - ошибка.
Ничего думаю, посмотрю как на виднах.
Поставил PostgreSQL - то же самое:
Запускаю оснастку управления серверами предприятия из меню Пуск – 1С Предприятие 8.1 – Серверы 1С Предприятия. Создаю центральный сервер, при нажатии на плюсик 10061(0x0000274D).

В чем может быть причнина? Версия платформы 1С:Предприятия 8.1.7.30 (Тестовая)

(9) Выключен. Фпер - any to any
Говорю, поставил БД на вин2003 - та же самая ошибка.
11 - подробнее пожалуйста..дистр, как устанавливал .. скорее всего (предполагаю) локализация консоли. до установки "добра" :) export LANG=ru_RU.utf-8. на мандриве помогает ))
база там создается. но по запуску конфигуратора с попыткой загрузить базу выдается эта мессага
опиши подробнее, чтобы можно было воспроизвести ситуацию. (если не затруднит конечно).
первый запуск postgresql как делал ? версия postgresql ? версия сервера 1С предприятия ?
8.0.16.2, конф 1.5(1.5.14.4) файлсерверный вариант. postgres - апрельский ИТС.
создал копию базы. открыл базу с помощью 8.1. предложили конвертнуть. утвердительно согласился. после примерно 4 часов конвертирования выгрузил базу. загружаю базу уже как клиент-серверный вариант. ошибка.
8.0.16.2, конф 1.5(1.5.14.4) файлсерверный вариант. postgres - апрельский ИТС.
создал копию базы. открыл базу с помощью 8.1. предложили конвертнуть. утвердительно согласился. после примерно 4 часов конвертирования выгрузил базу. загружаю базу уже как клиент-серверный вариант. ошибка.
------------------------------------------------------------
постой! тут что-то не вяжется :).а сервер приложений ? 4 часа . а размер базы какой был?
как я понимаю(раз в этой ветке пост) - все сделано согласно постов 0 и 2 .
на машину с linux был установлен сервер 1С и(возможно) сам скуль. затем через клиентскую часть (или с помощью консоли) была создана база - на этом этапе проблем не было!(?). затем подключение с помощью клиентской части к серверу 1С - ошибка?!
сделано согласно http://life.screenshots.ru/the-code-inside/php-platform/linux-1c-setup
база создалась без проблем с помощью "Серверы 1С предприятия"
у "меня" давно уже больше гига, но конвертится на целике 2000 около 15 минут ))), ну да ладно - это дело десятое. давай думать %)
---------------------------------------------------------------------
(11)Серверы 1С предприятия -> Создание новой информационной базы
Порядок сортировки не поддерживается базой данных"
----------------------------------------------------------------------
(20)база создалась без проблем с помощью "Серверы 1С предприятия"
----------------------------------------------------------------------
я что-то не понял ?
изначально она создалась без проблем. в последствии пытались создавать новые, возникала такая ошибка и тут
щас найду апрельский диск попробую прямо с него установить на 1 комп всю эту байду ..(свои я выкачивал с 1С) . потом отпишусь .. к сожалению у меня инет не в рабочее время доступен не всегда :(
У меня как у чайника вопрос , сервер 1С ставится только в графической оболчке типа KDE или Gnome? а в консоли будет это все работать
пофиг..я графическую вообще не влючаю, что бы ресурсы не "жрало" :), а по надобности startx. Так что дело любительское - хочешь из кде-гнума ставь, хочешь так ;)
поставил..с апрельского (8.1.6.38). сервер+клиент+скуль . в качестве "испытуемого" был взят комп: asus p5b-e/cel 2.8/1024Mb/sata2x2=raid0/+fedora core 6 32 bits (пришлось с инета выкачать), ставил все на 1 комп :) - все заработало с 1 запуска и работает. Клиента тоже с этого диска поставил. конфа типовая бухгалтерия . 1.16. в ней ошибка при расчете аммортизации ОС.

Здравствуйте.
Установил сервер postgres
"Инициализируется база данных: mkdir: невозможно создать каталог '/var/lib/pgsql/data/pg_log': фаил существует" СБОЙ.

Помогите в чем может быть проблемма?!

Я сделал так: удалил 1с-овский постгрес, удалил каталог /val/lib/pgsql , поставил родной, запустил, он инициализировал базу, потом удалил его, но каталог /val/lib/pgsql оставил. Потом снова установил 1с-овский и все работает. Надо сказать, что LANG=ru_RU.utf-8 должен быть при этом системным, тогда не надо будет это набирать при запуске постгреса.
(29) а какая ОС?
"выдоет ошибку "Инициализация базы данных" - СБОЙ
"Запуск сервера postgres" - СБОЙ" - это потому, что часть скрипта отработала..то есть каталог /var/lib/pgsql/ создан.
(30)системным можно сделать сразу после установки ОС export LANG=ru_RU.utf-8
(31) Системным, на мой взгляд, надо делать при установке, а не после. Тогда можно будет забыть про экспорт.
(36) конечно можно и нужно :) кто же спорит ?! тем более, что utf8 - это будущее )))
Все делается от рута.
при выполнеии команды psql -h localhost postgres postgres
выдоет ошибку psql: FATAL: Ident authentication failed for user "postgres"

Ну или в последней строке свою сетку или хосты

(31) наблюдал то же самое, помогло следующее: удалил все пакеты постгреса, поставил только необходимые - поехало сразу, не забудь удалить '/var/lib/pgsql/data/pg_log'
при попытки подклюиться к потгрею выдоет Error connecting to the server: FATAL: password authentication failed for user "postgres".

Вот я всё сделал по инструкциям приведеным выше. вот что получилось:
сервер Fedora 6, версия сервера 1с 8.1.7.37, постгрес 8.1.5-12.1C.

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

"Ошибка соединения с сервером 1С:Предприятия 8.1:

(48) во первых, к серверу я подключился, я не могу просто создать базу. Во вторых поднят DNS
(49) , понятно, я написал как было у меня. Тоже подключился, вижу кластер, а создать , базу не могу. Там с именами что-то кривовато, а что непонятно. Ну вобщем если все прописано, тогда я пас.
(49)". "Ошибка соединения с сервером 1С:Предприятия 8.1. " - а в 49 ". во первых, к серверу я подключился. ". не совсем понятно ..то есть в консоли сервера приложений (1С) информационную базу создать удалось ? или нет ? ошибка при создании базы данных на скуле ?
Да, в дополнение. Советую, чтобы исключить постгрес, установить pgadmin и им тестировать соединение с постгресом. Кстати, очень удобен.
53 - значит проблема все-же с постгри . кстати, а SQL на том же компе, где и сервер приложений ? или на другом ?
Самба для оснастки нафиг не нужна, работает без нее.
В доках по установке НИГДЕ нет требований установить самбу.
Откуда автор это взял?
Возможно, будут работать без ключа и будущие версии
При установке пакета, все настраивается как положено, и процесс сервера сразу стартует

1C_Enterprise-ws…
1C_Enterprise-ws-nls…
Если веб-служб не используются, зачем лишние пакеты?

Важный момент настройки - если поднят windows-домен и есть службы DNS, то в DNS обязательно должна быть быть запись типа A (host), указывающая на ip сервера предприятия.
Для чего - сервер 1с предприятия должен иметь возможность разрешить свое имя через DNS, иначе не сможет подключиться к БД.
Вот бы 1с выпустила сборку - ставишь и сразу у тебя есть сервер 1с. - а то неохота столько времени тратить на линух.

всего 2 команды (или одна, если пакеты ставить сразу все за один заход).

настройку постгре можно пропустить, есть не заботишься о супербезопасности.

2Kraft
Наиболее вероятная причина - имя хоста сервера не разрешается по имени с твоей машины. Решение - настройка днс или правка руками файла hosts.

2Advan
". а то неохота столько времени тратить на линух." - лентяй!

на установку нужно:
1. около 30 мин - установка системы, время зависит от можности машины и набора устанавливаемого ПО.
2. 5-7 мин - установка пакетов сервера, постгре, инициализация БД
3. 15-20 мин на то, чтобы убедиться в работоспособности системы, настроить сеть и проч.
4. еще 30-40 мин на окончательную доводку и тестирование.

Итого сервер поднимается всего за час-полтора.
Это разве много?

еще замечание - при установке системы /var лучше создать отдельным разделом
в /var хранится часто меняющая инфа, в т.ч. логи, базы данных и т.п.

3. /home - домашние каталоги пользователей, а бы оставил гиг 10. Сервер 1С предприятия в своем каталоге (/home/usr1cv81) хранит инфу о настройках, не уверен, но может понадобиться достаточное количество места
4. /var - часто меняющаяся инфа, логи, бд и проч. Размер - скока считаете нужным. БД имеет свойство расти, место понадобится

Постгрес не рулит похоже - надо смотреть в сторону IBM DB2

2Advan
Прежде чем делать такие выводы, лучше почитать что за постгре пишут в интете.
постгре - достаточно давняя и устойчивая система, БЕСПЛАТНО РАСПРОСТРАНЯЕМАЯ.
Показатели производительности вполне на уровне.
Кстати - 40% пользователей interbase/firebird работают базами объемом от 2 до 40 Гб. До 40 Гб 1Сная база будет расти очень долго.

И еще - скажи своему диру скока нужно отвалить за IBM DB2 - и ты еще вчера работал на постгре.

(69)"До 40 Гб 1Сная база будет расти очень долго" - ты не прав - не так уж и долго - наша база уже к 30 гигам подползает.
А главное в работе 1с с постгрес - это бюлокирование таблиц.
для постгре базы регулярно нужно запускать vacuum.
Вполне может быть, что твоя база сильно похудеет.
Как заявила 1С в ближайшем будущем конфы будут выходить с учетом особенностей платформы 8.1, на 8.0 поставят крест и забудут.
А в 8.1 блокировками можно управлять из внутреннего языка, так что все будет упираться в качество кода конфигурации
(71) оно и сейчас туда упирается (и без контролируемых блокировок хватает)
согласен, модуль в 15000 строк сплошь пестрящий запросами не может работать супербыстро
(69)Она до определенного уровня бесплатна - как раз по нам - двухголовый сервер с 4 гигами оперативы

Сейчас при попытке подключения к серверу пишет:

и. кто может достоверно сказать нах самба нужна при работе трёх-звенки? ИМХО максимум для winbind, чтобы с доменные имена разешать.
кстати - вышла новая версия (пока для тестов) сервера 1С 8.1.7.39. -на сервере уже заменил - сейчас качаю клиента ..

Мля? без эксцессов не получается. В общем, загрузка базы уже подходила к концу и тут в конфигураторе вылетела ашыпка:

Попытка вставки неуникального значения в уникальный индекс.

Кто в курсе, что в постгресе надо подкрутить?

ИМХО лучшая ветка на мисте за последнее время, много по делу сказано
(80) Видимо, крутить надо в 1С, т.к. изучать, где что произошло и какое
значение принял какой счётчик - не самое интересное занятие.
Подскажите пожалуста. На Linux Open SUSE Поставил Сервер 1С. Поставил PostgreSQL. Все запускается прекрасно. На Винде поставил клиента 1С, успешно подключился к Серверу 1C, осталось создать БД, тут то и проблема - не выходит: При создании базы данных выдается ошибка - Is the server running on host and accepting TCP/IP connections on port 5432? может кто поможет?
кто скажет почему связка PGSQL+1c8.1 так тормозит? Разов в 7-8
(85) Конфиги постгреса копай.
Посмотри nmap-ом, открыт ли у тебя постгресовский порт.
открыт порт, конфиг весь поперелопатил, если у кого работает покажите содержимое, может я что то упустил.
(85) Покажи netstat -na |grep tcp
и содержимое pg_hba.conf
иначе сложно ответить

Но данный текст писался когда данных пакетов не было.

Я понимаю, что лучшее враг хорошего, но хочется самому делать выводы, что лучшее, и что хорошее. Поэтому принято решение самостоятельно собрать PostgreSQL с необходимыми патчами.

Серверные части 1С:Предприятия также написаны в расчете на некий среднеуниверсальный дистрибутив Linux, но тут хотя бы честно. Все ставится в /opt, конфигурационные файлы прописываются в /etc/init.d и домашней директории пользователя usr1cv82(1). Да и изменить мы ничего не можем - доступа к исходникам нет.

Итак. Собираем сам сервер. Корпус, материнская плата, процессор, планки памяти, два одинаковых жестких диска. Я собрал программный RAID1 (зеркало) для надежности хранения (все-таки собирается для «продакшн»), но это совершенно не обязательно. Что обязательно - установка 64-битной версии, объем оперативной памяти для любой СУБД критичен (а 32-битные версии ограничены 4 гигабайтами), благо это сейчас совершенно недорого. Я установил 8 гигабайт. В общем, выбирайте сами. Привод оптических дисков в сервер ставить смысла нет никакого, загрузку можно провести через USB flash, а на будущее выделенному серверу привод совершенно ни к чему - все необходимое докачивается из репозитариев или копируется через утилиту scp.

2. Пусть вас не смущает то, что патчи для версии 8.4.1 - они отлично становятся и на более старшие версии PostgreSQL (в рамках версии 8.4). Все минорные исправления не затрагивают того, что патчит фирма «1С».

На сервере в домашней папке пользователя-администратора создаем папку «1С». Копируем в нее любым удобным для нас способом (я использовал scp со своей рабочей станции, можно перекинуть через собственный ftp или через «флэшку») эти три патча. Переименовываем их, добавляя перед названием «20-», «21-» и «22-», т. е. приводим их к виду:

3. Переходим в папку «1С» и скачиваем туда исходники PostgreSQL:

apt-get source postgresql, после скачивания архивы автоматически распакуются, будут наложены специфичные для Ubuntu патчи (что очень хорошо, так как итоговая сборка будет «родной»).

1) Файл «changelog». Отвечает за правильное наименование пакетов после сборки. Добавляем туда следующие строки в начало файла любым текстовым редактором (например, через mc):

Версию устанавливаем как 18.4.4, чтобы в дальнейшем она самостоятельно не обновилась при апдейте системы. Если будут наши исправления, то всегда возможно скачать новые исходники и повторить с ними операцию, описанную в этой статье, увеличив номер сборки (например, 18.4.4-ailant-1ubuntu10.04).

2) Следующий файл «control». Необходимо добавить зависимость от библиотеки «libicu42» (требуется для патча от «1С»). В секции «Build-Depends» (в начале файла) в конце списка добавляем «, libicu-dev». Целиком строка будет выглядеть вот так:

bison, flex, docbook-utils, openjade, docbook, libicu-dev

И последний файл «postgresql-contrib-8.4.install». В него необходимо добавить строки с именами 1С-овских модулей: mchar, fulleq и fasttrun. После строк:

На этом операцию по адаптации можно считать законченной. У нас получился правильно «патченный», родной для операционной системы исходник. Аналогично можно подготовить версию для любой debian-совместимой ОС.

К сожалению, исправления трех файлов (кроме последнего) нельзя сделать через patch-файл в автоматическом режиме. Патчи применяются уже после того, как скачиваются зависимости и определяется имя пакета.

Немного дополню ваш вопрос, а потом расскажу решение речь идет про Linux сервер и бд Postgre о этом говорит порт: 5432 и это и есть корень вашей проблемы.

И ошибка ваша выглядит так:
Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?

РЕШЕНИЕ:
1. нужно проверить на сервере есть ли в открытых портах 5432 и сам postgresql

Должно быть примерно так, если у вас пусто или вот так:
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1439/postgres

Pезультат выполнения команды означает, что PostgreSQL принимает подключения по адресу 127.0.0.1 и порту 5432. Чтобы изменить настройки, понадобится отредактировать файл postgresql.conf

Найти местонахождение файла можно командой:

$ find / -name postgresql.conf 2> /dev/null

/etc/postgresql/10/main/postgresql.conf
Надо указать PostgreSQL, что необходимо принимать подключения по всем адресам:

listen_addresses = '*'
и перезагрузить СУБД:

service postgresql restart

Также можно прямо с сервера проверить подключение постгресскуэль
psql -U my_login -h 192.168.0.14 postgres

Если сервер доступен, то будет получен доступ к базе данных postgres:

psql
Type "help" for help.

Услуги Системного Администратора - Работаю только с Юр. Лицами по договору обслуживания.

ОЧЕНЬ ВАЖНО
Залезьте в лог постгре cat /var/log/postgresql/postgresql-10-main.log
И если у вас там: ВАЖНО: нет доступа к файлу "online_analyze": Нет такого файла или каталога

и до этого у вас все работало на вашей убунте и postgres и тут после рестарта все сломалось, предположу что вы обновили убунту.
libpq5/bionic-security,bionic-updates 10.6-0ubuntu0.18.04.1 amd64 [может быть обновлён с: 10.5-10.1C]
postgresql-10/bionic-security,bionic-updates 10.6-0ubuntu0.18.04.1 amd64 [может быть обновлён с: 10.5-10.1C]
postgresql-client-10/bionic-security,bionic-updates 10.6-0ubuntu0.18.04.1 amd64 [может быть обновлён с: 10.5-10.1C]

И вероятно починив порт 5432 и создав online_analyze
у вас будет ошибка: error could not access file $libdir/mchar no such file or directory

РЕШЕНИЕ:
1. Качайте дистрибутив с сайта 1С и переустанавливайте его.
2. И блокируйте обновления постгрес:
sudo apt-mark hold libpq5:amd64 postgresql-10 postgresql-client-10

В статье рассказывается про ручную сборку базы данных PostgreSQL для 1C под Gentoo Linux.
Не буду рассказывать о всех тупиковых ветвях нашего лабиринта сборки постгреса для 1С. Опишу только то, чего нигде в интернете нет — то, что мы раскурили методом научного тыка. Несмотря на обилие мануалов по установке постгреса для 1C, ни один из них не решил наших основных граблей, все они оказались поверхностными и ничего не объясняли. Поэтому мы посчитали своим долгом восполнить этот пробел :-)

Начну с того, что мы используем Gentoo, и никакие RPM пакеты у нас не ставятся. Пакет 1C в формате rpm для Gentoo установить не представлялось возможным (долго объяснять почему), поэтому скачать src.rpm и автоматически собрать его при помощи rpmbuild отпадало. Нам оставалась единственная возможность — перевести rpm2tgz из rpm формата в простой архив tar.gz и распаковать его, что мы и сделали. А далее приводится пошаговое руководство.

0. Готовим окружение: mkdir /tmp/t5 && cd /tmp/t5 (было 5 стартов с самого начала :-)

2. Выполняем: rpm2tar postgresql-8.4.1-1.1C.src.rpm && rm postgresql-8.4.1-1.1C.src.rpm

3. Распаковываем архив: tar xf postgresql-8.4.1-1.1C.src.tar. Все файлы распакуются в текущую директорию, поэтому лучше все же это делать в чистой папке. Также сразу распакуем postgresql-8.4.1.tar.bz2 и перейдем в эту папку:
tar xfj postgresql-8.4.1.tar.bz2 && cd cd postgresql-8.4.1

4.Открываем файл ../postgresql-8.4.1C.spec и очень долго его изучаем :-) В нем описано все то, что сделал бы rpmbuild (если бы все было так просто!). Находим секцию, где накладываются патчи, и в такой же очередности начинаем это делать (из папки с постгресом):

patch -p1 < ../rpm-pgsql.patch
patch -p1 < ../postgresql-logging.patch
patch -p1 < ../postgresql-perl-rpath.patch
patch -p1 < ../postgresql-prefer-ncurses.patch
patch -p0 < ../1c_FULL_84-0.19.2.patch (p0, не p1!)
patch -p1 < ../postgresql-1c-8.3.patch — пошли приколы, патч не накладывается! И это в официальной поставке. Мы так и не нашли, что меняет rpm spec, чтобы такой патч наложился. Благо, патч этот маленький и понятный, просто меняет опции конфига по умолчанию, поэтому мы потом после установки вернемся, и поправим конфиг ручками. А пока забили на это и идем дальше.
patch -p0 < ../applock-1c-8.4.0.patch

5. Дальше изучаем секцию build rpm spec, и смотрим, с какими параметрами вызывается configure. Трудно верится, что 1С будет использовать perl, python или tcl (а базу мы поднимаем исключительно для 1С, не хочется держать в запиленной разработчиками 1С базе свои другие базы, пусть живут в нормальном оригинальном постгре), поэтому эти опции просто игнорируем. Итого, что мы использовали:
./configure --disable-rpath --enable-nls --disable-integer-datetimes --enable-thread-safety

6. make && make install. Корень постгреса скопируется в /usr/local/pgsql.

Далее надо установить дополнительные библиотеки из папки contrib. Помните, один патч не наложился? Он добавляет в contrib/Makefile 3 дополнительных либы от 1С: mchar, fulleq и fasttrun. Для сборки mchar потребуется дополнительный компонент ICU версии 3.8. Поэтому сделаем небольшое отступление и поставим его:

ICU поставится по отношению к /usr/local/icu. Но нам потребуется лишь подключаемая во время исполнения библиотека, поэтому после установки постргеса мы эту папку прибьем.

Вернемся к сборке contrib.
cd /tmp/t5/postgresql-8.4.1/

9. Соберем contrib:
make -C contrib && make -C contrib install

10. Ручками скопируем требуемые ICU библиотеки в папку с либами постре:
cp -a /usr/local/icu/lib/* /usr/local/pgsql/lib/
rm -rf /usr/local/icu

useradd -d /usr/local/pgsql/ -s /bin/bash pgmaster
mkdir /usr/local/pgsql/data
chown pgmaster /usr/local/pgsql/data && chmod 700 /usr/local/pgsql/data
cat >> /usr/local/pgsql/.bash_profile <<EOF
export LANG=ru_RU.UTF-8
export PGPORT=5434
export PATH=/usr/local/pgsql/bin:/usr/local/pgsql/sbin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
EOF

У нас на сервере уже работает один постргес, поэтому для 1С мы выбрали другой порт и системный эккаунт, создали баш профайл, выполняемый при su — pgmaster, таким образом устанавливаются все пути и переменные.

12. Инициализируем и запустим базу:

mkdir /usr/local/pgsql/log && chown pgmaster /usr/local/pgsql/log
su — pgmaster
initdb -D /usr/local/pgsql/data
postgres -h 0.0.0.0 -p 5434 -D /usr/local/pgsql/data

Сервер тихо запустился без потери управляющего терминала.
Сменим пароль суперюезру (screen рулит, хе-хе):

13. Файл data/pg_hba.conf, в нем надо trust поменять на md5, а также добавить запись, разрешающую заходить по сети:

local all all md5
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5

14. Файл data/postgresql.conf, в нем надо установить следующие опции (часть из не наложенного патча, часть для отладки):

15. Разделяемая память. Либо sysctl -w kernel.shmmax=256000000, либо отредактировать /etc/sysctl.conf, добавить туда kernel.shmmax = 256000000, и далее sysctl -p.

16. А теперь начинается самое интересное. Запускаем снова постргес (postgres -D data -p 5434). Подключаемся и создаем базу для 1C:

17. Далее надо в базе template1 создать язык plpgsql:

18. Далее надо залить в нее SQL-код из 3-х компонентов от 1С. Нигде в интернете про эту операцию не сказано. Мы изучили весь RPM spec, выполняли make check, test и тд. Но так и не нашли, каким образом в RPM пакетах в template1 попадает весь этот код. Поэтому мы делаем эту руками:

Если вдруг ругается на подгрузку mchar.so, которая в свою очередь не нашла libicu*, значит забыли про LD_LIBRARY_PATH или скопировать ICU либы в /usr/local/pgsql/lib, читайте сначала :-P

19. Но и это не все. Самая главная пробка, из-за которой не могли двигаться далее. Натравливаем на базу 1C, смотрим в логах:

LOG: statement: select 1 from pg_proc where proname in ('plpgsql_call_handler', 'datediff', 'mchar_in', 'mc_mv_icase_cmp', 'fasttruncate')

И после этого 1С говорит: «Плохая у вас база данных, не подходит».
Вводим этот запрос с консоли:

Четыре единички, а вроде должно быть пять! Методом исключения обнаруживаем, что отсутсвует datediff. Попытки отыскать ее в папке с postgresql и в патчах 1С к успеху не приводят:

Нашли в интернете какую-то функцию datediff. Догадались вообще зачем это нужно, и вообще зачем все эти патчи нужны. Вместо адаптации 1С к постргесу, разработчики решили адаптировать постгрес, чтобы SQL был похож на MSSQL! Вот и понапихивали туда функций и типов! Ну да ладно, datediff мы нашли.

На всякий случай вот ее код:

CREATE OR REPLACE FUNCTION datediff(character varying, timestamp without time zone, timestamp without time zone)
RETURNS integer AS
$BODY$
DECLARE
arg_mode alias for $1;
arg_d2 alias for $2;
arg_d1 alias for $3;
BEGIN
if arg_mode = 'SECOND' then
return date_part('epoch',arg_d1) — date_part('epoch',arg_d2);
elsif arg_mode = 'MINUTE' then
return ceil((date_part('epoch',arg_d1) — date_part('epoch',arg_d2)) / 60);
elsif arg_mode = 'HOUR' then
return ceil((date_part('epoch',arg_d1) — date_part('epoch',arg_d2)) /3600);
elsif arg_mode = 'DAY' then
return cast(arg_d1 as date) — cast(arg_d2 as date);
elsif arg_mode = 'WEEK' then
return ceil( ( cast(arg_d1 as date) — cast(arg_d2 as date) ) / 7.0);
elsif arg_mode = 'MONTH' then
return 12 * (date_part('year',arg_d1) — date_part('year',arg_d2))
+ date_part('month',arg_d1) — date_part('month',arg_d2);
elsif arg_mode = 'QUARTER' then
return 4 * (date_part('year',arg_d1) — date_part('year',arg_d2))
+ date_part('quarter',arg_d1) — date_part('quarter',arg_d2);
elsif arg_mode = 'YEAR' then
return (date_part('year',arg_d1) — date_part('year',arg_d2));
end if;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

Внимание! Форматирование текста на хабре заменяет знак минус на дефис. Скопируйте текст процедуры сперва в текстовый редактор, и там массово замените длинный дефис на короткий минус, иначе постгрес будет ругаться :-)

Посчитаем снова единички :-)

Типа ура! Но не тут-то было :-) По 10 раз пересчитываем функции, их пять. И у нас пять! А 1С при запуске все равно говорит, что база у нас плохая, и дальше не идет. Смотрим еще раз все (пару штук всего!) начальные запросы при конфигурировании 1С. Понимаем, что все, что она может, это посчитать еденицы! Но их же 5.
Этого результата мы добились часа через 3 после скачивания архива с сайта 1С. Далее начались пляски с бубном. Многочисленные пересборки, попытки качать разные версии, дистрибутивы от Этерсофта… Но на выходе результат один: пять функций, пять едениц. Хоть об стену головой.
И тут пришла в голову идея выполнить эту процедуру на рабочей конфигурации… Высылаем текст по почте товарищу, он скармливает его в базу, и высылает результат:

Далее, нам нужно убедиться, что процедурный язык PL/pgSQL доступен в созданной базе. Для этого выполните следующую команду:

select * from pg_language;
Если plpgsql в полученном результате отсутствует, то из командной оболочки вашей ОС выполните следующую команду:

$ createlang –U pgsql plpgsql eshop
Опция –U задает пользователя – администратора БД, от имени которого будет выполняться данная операция.

Поддержка языка может быть включена и из программы-клиента (например, psql) выполнением следующих двух команд:

create function plpgsql_call_handler()
returns language_handler
as ‘$libdir/plpgsql’, ‘plpgsql_call_handler’
language ‘c’;
create trusted procedural language ‘plpgsql’
handler plpgsql_call_handler;
Первая из них создает функцию-обработчик на базе библиотечной функции, вторая – собственно язык PL/pgSQL на основе созданного выше обработчика.

И тут осенило — создать такую же процедуру еще раз :-P
Заливаем процедуру в базу:

create function plpgsql_call_handler()
returns language_handler
as '$libdir/plpgsql', 'plpgsql_call_handler'
language 'c';

Вот они :-)
Проверим:

Финал — создаем базу из template1:

А теперь запускаем 1С и натравливаем на enterprise… О чудо! База данных создалась, и 1С залила всю структуру.

А теперь вопрос. Зачем программистам 1С в базе две одинаковых процедуры.
:-)))

Читайте также: