среда, 29 октября 2014 г.

1С:Предприятие. Ubuntu Server 14.04 . Ошибочный идентификатор часового пояса

Собственно сабж. После перехода на зимнее время и появлением дополнительных часовых поясов в России, 1С отказывается стартовать как в режиме "конфигуратора", так и в режиме "предприятия". Валится с ошибкой "Ошибочный идентификатор часового пояса 'W-SU' " (вместо 'W-SU' может быть любой, который установлен в системе по-умолчанию).

Как всегда оооочень информативно))

Лечится так:


1. Остановить сервер 1С
  • Для выньды: остановить службу "Агент сервера 1С:Предприятия 8.X"
  • Для Linux:
    #service srv1cv8X stop  
2. Удалить каталог snccntx
  •  Для выньды: C:\Program Files\1cv8X\srvinfo\reg_1541\snccntx.
  •  Для Linux: в /home/usr1cv8/.1cv8/1C/1cv8/reg_1541 удалить все каталоги по шаблону %snccntx%
3. Запустить сервер 1С
  •  Для выньды: запустить службу "Агент сервера 1С:Предприятия 8.X"
  • Для Linux:
    #service srv1cv8X start 

1С:Предприятие 8.3.5. Создание конфигураций поставки и обновлений поставщика с публикацией на web-ресурсе

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


Рабочие каталоги:

D:\WORK - каталог информационной базы;
D:\VERS - каталог для хранения версий файлов поставки и файлов обновления;
D:\DIST - каталог дистрибутивов;
/var/www/1csupport - каталог на гипотетическом ресурсе http://my1clinux.ru;
(об организации LAMP-сервера подробно описано в этой статье)

Переменные:

Старая версия нашей конфигурации = 1.1.0.1;
Новая версия нашей конфигурации = 1.1.0.2;
Название конфигурации = "УправлениеВетклиникой"
Версия 1С:Предприятие 8.3 = 8.3.5.1231



Порядок действий:

1. В "чистую" БД загружаем версию конфигурации 1.1.0.1.

2. Выбираем пункт меню "Конфигурация - Поставка конфигурации - Создать файлы поставки и обновления конфигурации ..."

3. Нажимаем кнопку "Каталог файлов поставки".

4. Указываем каталог D:\VERS

5. Убираем флажок "Создать файл обновления конфигурации".

6. Нажимаем кнопку "Выполнить".

7. Убеждаемся, что создался файл D:\VERS\1.1.0.1\1Cv8.cf

8. Загружаем версию 1.1.0.2 конфигурации с полной заменой версии 1.1.0.1

9. Выбираем пункт меню "Конфигурация - Поставка конфигурации - Создать файлы поставки и обновления конфигурации ..."

10. Убеждаемся, что оба флажка установлены и
Имя файла поставки "D:\VERS\1.1.0.2\1Cv8.cf"
Имя файла обновления "D:\VERS\1.1.0.2\1Cv8.cfu"

11. Нажимаем кнопку "Добавить из предыдущих версий".

12. Выбираем D:\VERS\1.1.0.1\1Cv8.cf и нажимаем кнопку "ОК".

13. Нажимаем кнопку "Выполнить".

14. Убеждаемся, что создались файлы D:\VERS\1.1.0.2\1Cv8.cf
D:\VERS\1.1.0.2\1Cv8.cfu

15. Выбираем пункт меню "Конфигурация - Поставка конфигурации - Комплект поставки ..."

16. Выбираем "Создать новое описание комплекта поставки" и нажимаем кнопку "ОК".

17. В диалоге "Создание описания комплекта поставки" нажимаем кнопку "Готово".

18. Выбираем ветку
"Шаблоны конфигураций\УправлениеВетклиникой(..., версия 1.1.0.2)" и нажимаем кнопку "Добавить".

19. Выбираем "Отдельный файл", указываем путь D:\VERS\1.1.0.2\1Cv8.cfu и нажимаем кнопку "ОК".

20. Выбираем ветку "Вариант поставки" и нажимаем кнопку "Добавить".

21. Переименуем "Вариант поставки 1" в "Поставка обновления".

22. Нажимаем ссылку "Редактировать"

23. В диалоге "Вариант построения" ставим флажок возле файла 1Cv8.cfu и нажимаем кнопку "ОК".

24. Нажимаем кнопку "Создать файлы комплекта".

25. В диалоге "Выбор варианта построения" выбираем "Поставка обновления" и нажимаем кнопку "ОК".

26. Выбираем каталог D:\DIST и нажимаем кнопку "Open".

27. Убеждаемся, что создались файлы D:\DIST\КаталогПоставщика\1Cv8.cfu и D:\DIST\КаталогПоставщика\1cv8.mft

28. Выбираем пункт меню "Конфигурация - Поддержка - Шаблоны конфигураций и обновлений..."

29. Указываем каталог D:\DIST и нажимаем кнопку "Open".

30. Убеждаемся, что видна ветка УправлениеВетклиникой, редакция 1.0  1.1.0.2(обновление).

31. Выбираем "Действия - Создать файл списка шаблонов".

32. Убеждаемся, что создался файл D:\DIST\v8cscdsc.lst

33. Копируем содержимое (с подкаталогами) D:\DIST\ в /var/www/1csupport, так, что бы v8cscdsc.lst был доступен по пути "http://my1clinux.ru/1csupport/v8cscdsc.lst"

34. Загружаем версию 1.1.0.1 конфигурации.

35. Выбираем пункт меню "Конфигурация - Поддержка - Обновить конфигурацию..."

36. Выбираем "Поиск доступных обновлений".

37. Убираем флажок "Искать в текущем каталоге ..."

38. Нажимаем кнопку добавить и в диалоге "Выбор каталога" указываем путь http://my1clinux.ru/1csupport" target="_blank">http://my1clinux.ru/1csupport

39. Нажимаем кнопку "Далее >"

40. Выбираем 1.1.0.2(обновление) и нажимаем кнопку "Готово" 



(c) Сергей Нуралиев (http://partners.v8.1c.ru/forums/) + от себя любимого ;)

Организация сервера хранилища конфигураций 1С на Ubuntu Server 14.04 LTS х86_64

В стандартных поставках от 1С сервер хранилища конфигурации для linux x86_64 систем не поставляется.
Ибо сервер хранилища конфигурации является 32-разрядным приложением.
Случилось так, что сервер уже поднят и достаточно прекрасно чухает себя на 64-битной платформе. А понадобилась возможность ведения "командной" разработки конфигурации...
Фирма 1С заявляет, что "одновременная работа 32-х-битного сервера хранилища вместе с 64-х битным сервером 1С:Предприятия возможна"!

Качаем i386 сборку необходимого нам дистрибутива (в моем случае это был 8.3.5.1231) и распаковываем, например, в /opt/1C/cr

Приступим:
#apt-get install libstdc++6:i386
#service srv1cv83 stop
#cp /etc/init.d/srv1cv83 ~/
#cd /opt/1C/cr && ls | while read p; do dpkg -X ${p} / ; done

Создаем скрипт автозапуска сервера хранилища
#mcedit /etc/init.d/crserver
такого содержания:
#!/bin/bash
### BEGIN INIT INFO
# Provides:          crserver
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: 1C 8.3 Confiration Storage Server
# Description:       1C 8.3 Confiration Storage Server
### END INIT INFO

SRV_PORT="1542"
STORAGES_DIR="/mnt/1c/ConfigurationStorage"
#
BINDIR="/opt/1C/v8.3/i386"
PATH="${BINDIR}:${PATH}"
DESC="1C 8.3 Confiration Storage Server"
NAME=crserver
DAEMON=${BINDIR}/$NAME
DAEMON_ARGS="-daemon -port ${SRV_PORT} -d ${STORAGES_DIR}"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# ======[start]====== 
 
# Seting FD limit (fix: error 24 too many open files)
ulimit -n 50000

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

do_start()
{
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running
    #   2 if daemon could not be started
    start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
    start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS || return 2
    # Add code here, if necessary, that waits for the process to be ready
    # to handle requests from services started subsequently which depend
    # on this one.  As a last resort, sleep for some time.
}

do_stop()
{
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    start-stop-daemon --stop --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently.  A last resort is to
    # sleep for some time.
    start-stop-daemon --stop --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
}

case "$1" in
  start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
       ;;
  restart)
    #
    log_daemon_msg "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;; # Old process is still running
            *) log_end_msg 1 ;; # Failed to start
        esac
        ;;
      *)
        # Failed to stop
        log_end_msg 1
        ;;
    esac
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
    exit 3
    ;;
esac

# ======[theend]====== 
ну, соответственно подставляем свои переменные.

И далее все просто:
#mv ~/srv1cv83 /etc/init.d/srv1cv83
#chmod a+x /etc/init.d/crserver && update-rc.d crserver defaults
#service srv1cv83 start
#service crserver start
#rm -R /opt/1C/cr

Сервер хранилища запущен.

Запускаем конфигуратор и создаем новое локальное хранилище с <Имя хранилища>. Копируем его в каталог STORAGES_DIR, указанный в настройках скрипта запуска сервера хранилища. Подключаем полученное хранилище к БД для разработок (tcp://<IP сервера>/<Имя хранилища>).

пятница, 10 октября 2014 г.

Включение отладки на сервере 1С 8.3.5 LINUX

Останавливаем сервер:
#service srv1cv83 stop

Правим скрипт запуска/остановки:
#mcedit /etc/init.d/srv1cv83

находим строку "SRV1CV8_DEBUG=" и устанавливаем в 1 (0 - для выключения отладки)

Запускаем сервер:
#service srv1cv83 start

Жопиздан! Теперь можно ставить точки останова в серверных модулях...