четверг, 7 июля 2016 г.

Исходящий звонок через AJAM c сервера Asterisk

Эта вторая статья из цикла статей "1С и Asterisk без использования внешних компонент". В ней будет рассмотрена возможность осуществления исходящего телефонного звонка по средствам AJAM из 1С.

Итак, в первой статей уже был рассмотрен способ подключения к AMI aka AJAM. Теперь рассмотрим одно из его практических применений. Для этого понадобится еще немного настроить Asterisk и клиентское рабочее место.

Создадим расширение осуществления исходящего телефонного звонка в Asterisk. В конец конфига /etc/asterisk/extensions.conf добавим свою секцию:

[call2back]
exten => _.,1,Answer
exten => _.,1,Wait(1)
exten => _.,n,Dial(Local/${EXTEN}@from-internal,300,Tt)
exten => _.,n,Hangup()

Рассмотрим что она (секция) описывает. call2back - имя секции (контекст команды дозвона) и последовательность действий: ответить на звонок, подождать 1 секунду, начать дозвон к абоненту ${EXTEN} (параметр команды дозвона) и завершить звонок.

На клиентском рабочем месте устанавливаем SIP-клиент и настаиваем автоматический ответ с собственного внутреннего телефонного номера. Например, внутренний номер 0319, следовательно в SIP-клиенте должен быть настроен автоответ на номер 0319.

Теперь для осуществления исходящего звонка через AJAM достаточно выполнить следующую последовательность команд:

1. Авторизация

http://asterisk_ipadress:8088/asterisk/mxml?action=login&username=1cajam&secret=myajamuserpass

параметры username и secret соответственно подставить из своих настроек AMI

2. Дозвон

http://asterisk_ipadress:8088/asterisk/mxml?action=originate&channel=SIP/0319&callerid=0319&timeout=15000&context=call2back&exten=subscriber&priority=1&async=yes

где 0319 - это внутренний номер, call2back - созданное ранее расширение, subscriber - номер телефона того, кому звоним.




В 1С это все можно осуществить через несложный код:

Организация соединения:

Соединение = Новый HTTPСоединение(IP,Port,,,,Таймаут,);

Отправка и чтение запроса:

ТекстКоманды="/asterisk/mxml?action=login&username=1cajam&secret=myajamuserpass";

Куки = "";

Запрос=Новый HTTPЗапрос();
Запрос.АдресРесурса=ТекстКоманды;
Запрос.Заголовки.Вставить("Connection", "keep-alive");
Запрос.Заголовки.Вставить("Cookie", Куки);

Ответ=Соединение.Получить(Запрос);

Куки=Ответ.Заголовки.Получить("Set-Cookie");
Куки=?(Куки=Неопределено,"",Куки);

ТекстКоманды="/asterisk/mxml?action=originate&channel=SIP/0319&callerid=0319&timeout=15000&context=call2back&exten=subscriber&priority=1&async=yes";

Запрос.АдресРесурса=ТекстКоманды;
Запрос.Заголовки.Вставить("Connection", "keep-alive");
Запрос.Заголовки.Вставить("Cookie", Куки);

Ответ=Соединение.Получить(Запрос);

ВАЖНО!!! При последовательном выполнении команд из 1С НЕ ЗАБЫВАТЬ про Cookie и пердкаждой следующей командой их перечитывать.

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


Настройка управления сервером Asterisk через AMI (Asterisk Manager Interface)

Данная статья является первой в планируемом цикле статей "1С и Asterisk без использования внешних компонент". Цикл статей будет представлять собой развитие статьи с инфостарта.

AMI – это интерфейс управления Asterisk-ом. Существуют два основных способа подключения к AMI:

  1. AMI поверх TCP (обычно называют просто AMI). 
  2. AMI поверх HTTP, т.е. AJAM (Asynchronous Javascript Asterisk Manager). 
В терминах 1С - это толстый и тонкий (веб) клиент. В этой статье будет рассмотрен именно второй. В дальнейшем данные настройки понадобятся для взаимодействия с сервером Asterisc из 1С.

Итак, для подключения к AMI первым делом необходимо создать пользователя. Для этого поправить конфиг /etc/asterisk/manager.conf, следующим образом:


[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
allowmultiplelogin = yes
webenabled = yes
httptimeout = 60

[1cajam]
secret = myajamuserpass
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
read = call,cdr,user,config
write = call,originate,reporting,command,system


В секции [general] описаны правила, разрешающие подключение через AMI. Секция [1cajam] описывает пользователя и его привилегии. Имя секции (1cajam) - это имя пользователя AMI (создавать его в системе не нужно, достаточно описать в конфиге), secret - это его пароль. Опции deny и permit определяют IP-адреса, с которых возможно осуществлять подключение (в данном случае разрешено с любого IP). read, write - это привилегии чтения и записи таблиц Asterisk.

Далее, т.к. управление будет осуществляться через AJAM - необходимо опубликовать интерфейс. Правим конфиг /etc/asterisk/http.conf.

Для протокола HTTP на порту 8088:

[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk

Для протокола HTTPS на порту 4443:

[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk

enablestatic=yes
tlsenable=yes
tlsbindaddr=0.0.0.0:4443
tlscertfile=/etc/asterisk/ssl/ajam.pem
tlsprivatekey=/etc/asterisk/ssl/ajam.pem

Соответственно для протокола HTTPS необходимо сгенерировать сертификаты:

#cd /tmp
#openssl req -new -x509 -days 365 -nodes -out /tmp/foo.pem -keyout /tmp/foo.pem
#mkdir /etc/asterisk/ssl #mv /tmp/foo.pem /etc/asterisk/ssl/ajam.pem

Перечитываем настройки и проверяем настройки:


#service asterisk restart
#asterisk -rx "http show status"

В ответ должны получить что-то типа:

HTTP Server Status:
Prefix: /asterisk
Server Enabled and Bound to 0.0.0.0:8088

HTTPS Server Enabled and Bound to 0.0.0.0:4443

Enabled URI's:
/asterisk/httpstatus => Asterisk HTTP General Status
/asterisk/phoneprov/... => Asterisk HTTP Phone Provisioning Tool
/asterisk/amanager => HTML Manager Event Interface w/Digest authentication
/asterisk/arawman => Raw HTTP Manager Event Interface w/Digest authentication
/asterisk/manager => HTML Manager Event Interface
/asterisk/rawman => Raw HTTP Manager Event Interface
/asterisk/static/... => Asterisk HTTP Static Delivery
/asterisk/amxml => XML Manager Event Interface w/Digest authentication
/asterisk/mxml => XML Manager Event Interface
/asterisk/ws => Asterisk HTTP WebSocket

Enabled Redirects:
  None.

Т.е. наш сервер ждет подключение по http на порту 8088 и по https на порту 4443.

Также работоспособность можно проверить через браузер попыткой авторизации:

http://asterisk_ipadress:8088/asterisk/mxml?action=login&username=1cajam&secret=myajamuserpass

Собственно все! Дополнительные материалы можно посмотреть здесь.

вторник, 9 февраля 2016 г.

1С 8.3 Корректное отключение главного узла РИБ и создание самостоятельной БД, быстрое создание/восстановление узла РИБ без выгрузки начального образа для конфигураций на основе БСП.

Собственно сабж!

Для чего это нужно? Допустим необходимо создать тестовую БД для разработки с актуальными данными или необходимо быстро восстановить работоспособность РИБ при "падении" одного из узлов, или для "быстрого" создания нового узла РИБ .

Имеем: 1С:Предприятие 8.3 (8.3.6.2390), РИБ по следующей схеме:


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

!!!ВАЖНО!!! Перед созданием БД необходимо выполнить полную синхронизацию всех узлов РИБ с узлом, из которого планируется создавать новую БД, и на время создания в этом узле отключить синхронизацию данных!

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

Все действия выполняются в монопольном режиме (т.е. у целевой БД должны отсутствовать активные соединения)

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

ВАЖНО!!! В качестве "исходного узла" рекомендуется выбирать узел, которой в последствии станет главным узлом для вновь созданного/восстановленного узла. 

Это не обязательное условие. Для восстановления РИБ подойдет любой узел с максимально актуальными данными, но это более сложный процесс. Возможно он будет рассмотрен в будущем.

0. Создать новый узел РИБ.
Данное действие необходимо если создается новый узел, в противном случае необходимо перейти к п. 1.

1. Выгружаем базу данных из "исходного узла" в файл (*.dt).

2. Загружаем полученную в п. 1 выгрузку в "чистую" БД.

3. Запускаем полученную в п. 2 БД в режиме предприятия и отключаем все настроенные синхронизации данных.

4. Отключаем автоматическое обновление предопределенных данных.

Это необходимо потому, что в главном узле предопределенные данные обновляется автоматически, а в подчиненные узлы уже "приезжают" с обменами.

Если не выполнить это действие, то после отключения главного узла при следующей реструктуризации БД произойдет задвоение предопределенных данных.

Для отключения необходимо запустить командную строку от имени Администратора (root`a), выполнить запуск конфигуратора с параметрами и дождаться выполнения (сам конфигуратор на экране не появится, но он будет отображаться в дереве процессов системы, т.е. необходимо дождаться когда процесс конфигуратора пропадет из дерева процессов):

для Linux-клиента "файловый" вариант БД:
/opt/1C/v8.3/x86_64/1cv8 DESIGNER /F"PathToLocalDB" /N"AdminUser" /P"AdminUserPass" /SetPredefinedDataUpdate -DoNotUpdateAutomatically

для Linux-клиента "клиент-серверный" вариант БД:
/opt/1C/v8.3/x86_64/1cv8 DESIGNER /S"SRVname:port\BDname" /N"AdminUser" /P"AdminUserPass" /SetPredefinedDataUpdate -DoNotUpdateAutomatically

для Windows-клиента "файловый" вариант БД:
"C:\Program Files (x86)\1cv83\8.3.6.2390\bin\1cv8.exe" DESIGNER /F"PathToLocalDB" /N"AdminUser" /P"AdminUserPass" /SetPredefinedDataUpdate -DoNotUpdateAutomatically

для Windows-клиента "клиент-серверный" вариант БД:
"C:\Program Files (x86)\1cv83\8.3.6.2390\bin\1cv8.exe" DESIGNER /S"SRVname:port\DBname" /N"AdminUser" /P"AdminUserPass" /SetPredefinedDataUpdate -DoNotUpdateAutomatically

соответственно подставить свои путь к исполнительному файлу 1cv8 или 1cv8.exe и переменные, где:

PathToLocalDB - путь к файловой БД
AdminUser - администратор БД
AdminUserPass - пароль Администратора БД
SRVname - имя сервера БД (либо IP адрес)
port - порт агента сервера (по-умолчанию 1540)
BDname - имя БД в кластере серверов



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

для Linux-клиента "файловый" вариант БД:
/opt/1C/v8.3/x86_64/1cv8 DESIGNER /F"PathToLocalDB" /N"AdminUser" /P"AdminUserPass" /ResetMasterNode 

для Linux-клиента "клиент-серверный" вариант БД:
/opt/1C/v8.3/x86_64/1cv8 DESIGNER /S"SRVname:port\BDname" /N"AdminUser" /P"AdminUserPass" /ResetMasterNode 

для Windows-клиента "файловый" вариант БД:
"C:\Program Files (x86)\1cv83\8.3.6.2390\bin\1cv8.exe" DESIGNER /F"PathToLocalDB" /N"AdminUser" /P"AdminUserPass" /ResetMasterNode 

для Windows-клиента "клиент-серверный" вариант БД:
"C:\Program Files (x86)\1cv83\8.3.6.2390\bin\1cv8.exe" DESIGNER /S"SRVname:port\DBname" /N"AdminUser" /P"AdminUserPass" /ResetMasterNode 



6. Запускаем 1С в режиме предприятия и, и в появившемся предложении о восстановлении связи с "главным узлом обмена", подтвердить ОТКЛЮЧЕНИЕ.

7. Настраиваем узлы.

Если нам необходима БД для разработки - удаляем лишние узлы обмена и сценарии синхронизации. Все БД готова. Можно переходить к п. 8

Если создаем новый узел РИБ:

  • Удаляем лишние узлы обмена и сценарии синхронизации так, чтобы осталось 2 узла: узел, полученный в п. 0 (У0) и главный узел для полученного узла (ГУ). ГУ - будет "текущим" узлом, т.е. в форме списка возле него будет зеленая точка/кружок.
  • Меняем местами (переименовываем) кода и наименования У0 и ГУ так, чтобы У0 стал "текущим" узлом.
  • Восстанавливаем связь с главным узлом (для этого есть масса обработок на просторах интернета или можно нарисовать свою)
  • Включаем синхронизацию и настраиваем сценарии синхронизации.
  • Сбрасываем регистрацию изменений в У0 и ГУ
  • Устанавливаем номера сообщений отправки/получения в 0.
  • В настройках синхронизации данных изменяем свойство "Префикс этой информационной базы" на префикс У0.
  • Запускаем 1С в У0 в режиме предприятия и отказываемся от помощи мастера настройки синхронизации. 
  • Проверяем синхронизацию данных У0 с ГУ.
  • Восстанавливаем настройки и возможность входа пользователей.

Если восстанавливаем узел РИБ - действия такие же как и для создания нового узла, только в качестве У0 необходимо использовать восстанавливаемый узел.


8. Восстанавливаем автоматическое обновление предопределенных данных.

Как и в п. 4, для этого необходимо запустить конфигуратор из командной строки с параметрами и дождаться его выполнения:

для Linux-клиента "файловый" вариант БД:
/opt/1C/v8.3/x86_64/1cv8 DESIGNER /F"PathToLocalDB" /N"AdminUser" /P"AdminUserPass" /SetPredefinedDataUpdate -Auto

для Linux-клиента "клиент-серверный" вариант БД:
/opt/1C/v8.3/x86_64/1cv8 DESIGNER /S"SRVname:port\BDname" /N"AdminUser" /P"AdminUserPass" /SetPredefinedDataUpdate -Auto

для Windows-клиента "файловый" вариант БД:
"C:\Program Files (x86)\1cv83\8.3.6.2390\bin\1cv8.exe" DESIGNER /F"PathToLocalDB" /N"AdminUser" /P"AdminUserPass" /SetPredefinedDataUpdate -Auto

для Windows-клиента "клиент-серверный" вариант БД:
"C:\Program Files (x86)\1cv83\8.3.6.2390\bin\1cv8.exe" DESIGNER /S"SRVname:port\DBname" /N"AdminUser" /P"AdminUserPass" /SetPredefinedDataUpdate -Auto

ЗЫ

Проверялось на "Управление торговлей, редакция 11.1 (11.1.10.185)".

среда, 6 мая 2015 г.

Последовательность срабатываний событий в 1С

Последовательность событий при записи элемента справочника из формы элемента (записать и закрыть), а также при записи вида характеристики из формы элемента (записать и закрыть), при записи счета из формы счета (записать и закрыть), при записи вида расчета из формы вида расчета (записать и закрыть).
МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- (запись)- «При записи»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

Последовательность событий при записи узла плана обмена из формы узла (записать и закрыть).
МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- (запись узла плана обмена в базу данных)- «При записи»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

Последовательность событий при записи документа из формы документа.
МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- (запись)- «При записи»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи».

Последовательность событий при проведении документа из формы документа (провести и закрыть).
МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- (запись)- «При записи» — «Обработка проведения»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

Последовательность событий при отмене проведения документа из формы документа (провести и закрыть).
 МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- «Обработка удаления проведения» — (запись)- «При записи»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи».

Последовательность событий при сохранении данных из формы записи регистра сведений (записать и закрыть).
МОДУЛЬ ФОРМЫ ЗАПИСИ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ ЗАПИСИ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ ЗАПИСИ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Перед записью»- (запись набора записей в базу данных (количество=0)) — «При записи» — «ПередЗаписью» — (запись набора записей в базу данных (количество=1)) — «При записи» — МОДУЛЬ ФОРМЫ ЗАПИСИ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) —  «После записи на сервере» — МОДУЛЬ ФОРМЫ ЗАПИСИ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».
Особенность внутренней реализации объекта РегистрСведенийМенеджерЗаписи.<имя> таковы, что в случае сохранения существующей записи регистра сведений обработчики события ПередЗаписью() и ПриЗаписи() модуля набора записей будут вызваны дважды: сначала для старого набора записей (с количеством записей 0) и затем для нового (с количеством записей 1).


Последовательность событий при сохранении данных из формы набора записей регистра сведений (записать и закрыть), а также при сохранении набора записей регистра накопления из формы набора записей, при сохранении набора записей регистра бухгалтерии из формы и при сохранении набора записей регистра расчета из формы.
МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Перед записью»- (запись набора записей в базу данных) — «При записи» — МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

(c) http://itsphera.ru/1c/posledovatenosti-sobytij-v-1s.html

среда, 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 сервера>/<Имя хранилища>).