Rose debug info
---------------

iLoveCode.ru

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

На сервере размещен проект под управлением git. Были внесены изменения в файлы не через git, а напрямую (например, через sftp, ftp, ssh и т. п.). Далее инструкция, как эти изменения добавить под git, не потеряв их.

К примеру, при вводе команды

git status

вы видите, что один или несколько файлов модифицированы:


Создаем отдельную ветку и переходим на нее

Для этого выполняем команду:

git checkout -b <название ветки>

В результате мы должны получить сообщение о переходе на новую ветку:

Switched to a new branch '<название ветки>'


Добавляем измененные файлы под git

Для этого можно выполнить команду с перечислением файлов, которые нам нужно добавить (необходимо в случае, если есть еще какие-либо локальные файлы, которые не нужно добавлять под git. Это можно понять по команде «git status», например, на скриншоте выше лишних файлов нет). Команда:

git add <путь к файлу 1> <путь к файлу 1> <путь к файлу 3>

Путь к файлам определяется относительно корня репозитория. Его можно взять из первоначальной команды «git status».

Если же лишних локальных файлов нет, тогда выполняем команду:

git add -A

Добавятся все файлы, которые были перечислены в ходе вывода команды «git status».


Делаем commit и push изменений в удаленную ветку

Для commit выполняем команду:

git commit -m "<описание коммита>"

Мы должны получить сообщение об успешном commit. Примерный вид:

Проверяем, что все изменения теперь на ветке:

git status

Должны получить сообщение вида:

Выполняем команду для push:

git push origin <название ветки>

Мы должны получить сообщение вида:


Делаем merge ветки в master

Теперь переходим в ваш удаленный репозиторий. В моем случае это bitbucket.org. Создаем pull request из ветки, в которую вы делали push на предыдущем шаге (это необходимо, если у вас merge в master доступен только через pull request), проверяем. что все корректно и делаем merge.


Возвращаемся на ветку master на сервере

Для этого выполняем команду:

git checkout master

Мы должны получить сообщение о переходе на ветку master.

Выполняем команду, чтобы «стянуть» с удаленного master актуальные изменения:

git pull origin master

Получим сообщение об успешном «стягивании». Примерный вид:

После этого проверяем, что сейчас локальный репозиторий на сервере актуальный и смотрит на ветку master. Выполняем команду:

git status

Мы должны получить следующее сообщение.

Как отлаживать обмен заказами между 1С и сайтом на Битрикс?

Эта статья предназначена для тех, кто уже представляет себе механизм обмена заказами между 1С и Битрикс. Задача: отладить В ней вы найдете этапы отладки обмена заказов, а также в удобном формате приведены запросы, которые можно использовать при отладке, подставляя в них свои значения имени файла и sessid. Если вам необходимо подробное описание механизм обмена, то он есть в другой статье.

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

Проверка авторизации

Если 1С присылает запросы на сайт (для этого нужно посмотреть лог запросов), то этот этап можно пропустить.

Если запросов нет, то обычно причиной этого могут быть проблемы с авторизацией 1С на сайте.

В настройках обмена внутри 1С последовательно проверяем:

  1. адрес подключения к сайту. В большинстве случаев адрес будет вида:
https://<адрес_сайта>/bitrix/admin/1c_exchange.php
  1. логин и пароль пользователя битрикс, под которыми 1С подключается;
  2. правильность адреса прокси-сервера (если задан).

В настройках обмена внутри Битрикс проверяем:

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

Зачастую бывает, что внутри 1С указан пользователь, который является администратором сайта. Рекомендую завести отдельного пользователя и группу для выгрузки 1С, например, 1c_exchange. Во-первых, права группы «администраторы» избыточны для выгрузки. Во-вторых, при дальнейших отладках вы сразу будете видеть, что та или иная сущность (например, элемент инфоблока) была изменена пользователем, который отвечает за обмен. Это очень удобно.

Ошибка «failure Обновите модуль обмена»

Если на любой запрос, например, mode=checkauth, 1С получает ответ: «failure Обновите модуль обмена», то самыми распространенными причинами могут быть:

Старая 1С стучится по протоколу https

Самый простой вариант решения — выделить на сайте отдельный поддомен без https, на который и направить 1С. Что-то вроде подойдет:

https://1c.<адрес_сайта>/bitrix/admin/1c_exchange.php

В запросе от 1С указан неверный sessid или не указан вообще.

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

Блок запросов всегда начинается с mode=checkauth и заканчивается запросом перед следующим mode=checkauth.

Проверяем, что 1С присылает правильные запросы и что сайт их корректно обрабатывает

Чтобы проверить, какие запросы присылает 1С, нужно посмотреть лог запросов к сайту. Например, настроив access-логи на сервере. Для удобства можно 1С направить на отдельный поддомен, на который будет ходить только 1С. Так в файле логов будут только запросы от 1С. Далее открываем файл логов и смотрим. В нем должны быть запросы, которые приведены ниже. Порядок запросов также должен совпадать.

Для проверки корректности ответов на запросы нужно посмотреть лог выгрузки внутри 1С — там обычно собираются ответы. Либо, выполнить запросы вручную в браузере. Обычно это оказывается наиболее удобным способом. Ответы на любой запрос обычно будут содержать «success», «progress» или «failure» (кроме запроса mode=init — у него ответ выглядит примерно так: zip=yes file_limit=204800). Пустых ответов на запрос быть не должно.

Заказы из Битрикс в 1С

https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=<id_сессии_из_первого_запроса>
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=<id_сессии_из_первого_запроса>
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=success&sessid=<id_сессии_из_первого_запроса>

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

Заказы из 1С в Битрикс

https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=<id_сессии_из_первого_запроса>

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

https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=file&filename=<имя_файла>&sessid=<id_сессии>
https://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=import&filename=<имя_файла>&sessid=<id_сессии>

Запросы mode=file и mode=import могут повторятся несколько раз до получения ответа от сайта «success», либо до ошибки. Как только на запрос mode=import получен ответ «success», то на сайте должны обновиться заказы, которые были в xml. Это будет говорить о том, что обработка выгрузки заказа на сайте прошла успешно.

Проверяем, что XML корректный

Если все запросы корректные и проходят без ошибок, но при этом нужных обновлений в 1С или в Битриксе не происходит, то необходимо проверить xml на корректность и на присутствие в нем необходимых данных.

Механизм обмена заказами между 1С и сайтом на Битрикс

Стандартный обмен заказами между 1С и сайтом на Битрикс всегда инициируется запросами со стороны 1С. Для простоты можно представить, что 1С — это браузер, который делает запросы к сайту на сервере. Какие запросы браузер сделает — такие данные и получит. Когда 1С нужны, к примеру, заказы, 1С делает соответствующий запрос на сайт, а уже Битрикс в ответ отдает xml с заказами, которые обрабатывает модуль обмена на стороне 1С.

Выгрузку заказов можно распознать по «type=sale» в запросах. В зависимости от направления движения заказов обмен между 1С и сайтом на Битрикс делится на 2 фазы:
-загрузка заказов в 1С с сайта;
-выгрузка заказов из 1С на сайт.

Каждая фаза делится на несколько этапов. Разделение на этапы — исходя из «mode» в запросах, которые посылает 1С. Новый «mode» в запросе — новый этап. Первые 2 этапа (авторизация и инициализация) в обеих фазах дублируются.

Заказы из Битрикс в 1С

Этап 1: запрос авторизации (type=sale, mode=checkauth)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth

На этот запрос от сайта 1С получит ответ вида:

success PHPSESSID jZgq6XX8f4WtGWic7KyLsPzb7VBnUzqP sessid=7a0b69b4b3f10415e17a095cd8edabd8

Sessid — идентификатор сессии, с которым 1С будет делать все дальнейшие запросы. В ответе идентификатор привожу для примера (у вас будет другой).

Чтобы получить идентификатор сессий 1С должна быть авторизована под пользователем Битрикс, у которого есть права на обмен заказами (т. е. в модуле обмена внутри 1С заданы корректные логин и пароль пользователя Битрикс).


Этап 2: инициализация обмена (type=sale, mode=init)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=<id_сессии>

Битрикс удаляет все файлы из папки /upload/1c_exchange/, оставшийся после предыдущего обмена документами (не обязательно заказами). Сайт отдает ответ вида:

zip=yes file_limit=204800
  1. Zip — это параметр, который говорит, поддерживает ли сайт архивацию (yes — поддерживает, no — не поддерживает). В зависимости от этого 1С будут высылать файл с заказами в виде zip-архива или несжатую xml.
  1. File_limit — максимальный размер загружаемого файла в байтах. Если файл больше, то 1С разобьет его на более мелкие файлы.

Эти параметры настраиваются: Магазин -> Настройки -> Интеграция 1С -> Заказы. Галочка «Использовать сжатие zip, если доступно» и поле «Размер единовременно загружаемой части файла (в байтах)».


Этап 3: получение заказов из Битрикс (type=sale, mode=query)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=<id_сессии>

В ответ Битрикс генерирует xml, в которую попадают все заказы, которые создались / изменились после предыдущего обмена заказами (саму xml здесь не привожу, т. к. это лдинная простыня). После чего помечает заказы в БД как выгруженные.

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


Этап 4: завершение обмена (type=sale, mode=success)

Когда заказы успешно обработаны в 1С, то 1С посылает запрос:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=success&sessid=<id_сессии>

Сайт на это отвечает:

success

Загрузка заказов в 1С с сайта на Битрикс завершена.


Заказы из 1С в Битрикс

Этапы 1 и 2 совпадают с предыдущей фазой.

Этап 3: загрузка файла в Битрикс (type=sale, mode=file)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=file&filename=<имя_файла>&sessid=<id_сессии>

Он загружает в папку /upload/1c_exchange/ файл обмена, посылая содержимое файла в виде POST-запроса.

В ответ от сервера могут прийти следующие ответы:

progress — файл еще загружается;

1С на этот ответ пришлет еще один такой же запрос (или несколько), пока не получит другой ответ.

failure <текст ошибки> — ошибка обработки файла с краткой расшифровкой ошибки;
success — файл успешно загружен.

После ответа «success» 1С перейдет к этапу 5.


Этап 4: обработка файла на стороне Битрикс (type=sale, mode=import)

1C посылает запрос вида:

http://<адрес_сайта>/bitrix/admin/1c_exchange.php?type=sale&mode=import&filename=<имя_файла>&sessid=<id_сессии>

Этап на стороне сайта состоит из двух шагов (т. е. со стороны 1С будет минимум 2 одинаковых запроса).

В ответ на первый запрос должен прийти ответ:

progress Распаковка архива завершена — распаковка zip-архива завершена (этот ответ будет, даже, если файл передается в виде несжатого xml).

В ответ на второй запрос должен прийти ответ:

success — файл успешно загружен.

После получения этого ответа 1С переходит к завершающему этапу.

Помимо успешных, на этом этапе сайт может отдавать, к примеру, такой ответ:

failure <текст ошибки>

Например, зачастую встречается вот такая ошибка «failure Файл для импорта пуст» — это значит, что на предыдущем этапе загружен пустой файл или (что чаще) файл не был загружен.

Выгрузка заказов из 1С в Битрикс завершена.

Контакты

Если у вас есть вопросы или нужна консультация можете написать мне в telegram.

1 мес   контакты