- RealSync — односторонняя синхронизация исходников в реальном времени для веб-разработчиков
- И зачем этот велосипед, когда есть Samba или Денвер или XAMPP?
- Использование удаленной папки для веб-разработки
- По большему счету RealSync — это решение проблемы скорости работы IDE
- А если мне нужна двусторонняя синхронизация?
- Установка RealSync и первый запуск
- Синхронизация данных между «1С: Розница» и «1С: Бухгалтерия»
RealSync — односторонняя синхронизация исходников в реальном времени для веб-разработчиков
RealSync — утилита для Windows, MacOS и Linux, позволяющая в реальном времени содержать на удаленном сервере точную копию файлов (например, скриптов на PHP, Python, Ruby и др.) из папки на вашем локальном компьютере, даже в условиях плохой связи, когда вы работаете из дома. Все изменения, производимые в локальной папке, попадают на сервер практически моментально (задержка около 0.2 с), независимо от того, сколько этих изменений и каким именно образом они были внесены (хоть через IDE, хоть через Блокнот или Far).
Главное отличие RealSync от аналогов — в том, что он крайне устойчив к нестабильности интернет-соединения, реконнектам и тайм-аутам. При этом используется SSH-соединение, доступ через которое конфигурируется автоматически при первом запуске утилиты (т.е. не нужно возиться с ключами — настройка производится в интерактивном режиме).
И зачем этот велосипед, когда есть Samba или Денвер или XAMPP?
Вообще говоря, существует несколько способов вести разработку веб-скриптов. Первый способ — использовать локальный веб-сервер. У данного метода есть как масса преимуществ (больший контроль, улучшение переносимости и кроссплатформенности и т.д.), так и масса недостатков, как то: потенциальное отличие конфигурации локального сервера от конфигурации дев- и продакшен-зон, необходимость либо следить за синхронностью локальной SQL-базы, либо ждать, пока тормозит доступ к единой дев-базе по интернету и т.д. Мы не будем в данной статье рассматривать этот метод, хотя он, безусловно, имеет право на жизнь (и, как минимум, применяется 1 миллионом зарегистрированных пользователей того же Денвера).
Второй способ — использовать веб-сервер, установленный в офисе компании (или на тестовой машине в датацентре), обслуживаемый штатными админами. На таком веб-сервере может быть несколько директорий, по одной для каждого разработчика. Каждый программист ведет работу в своей директории, чтобы не мешать другим, и смотрит результат на своем поддомене (или на своем номере порта). Вот этот способ мы и рассмотрим.
Использование удаленной папки для веб-разработки
Я знаю многих людей, которые для обхода неудобства (2) заходят по SSH на сервер и в консоли используют grep для поиска по файлам, причем сами работают в IDE. Мне это кажется верхом неудобства. Тем более что в phpStorm, например, поиск по всем локальным файлам даже очень большого проекта работает ощутимо быстрее grep-а и занимает 1-2 секунды (как они этого добились — для меня загадка; видимо, индексируют что-то заранее). Лично я постоянно и с комфортом пользуюсь поиском в phpStorm по локальным файлам — в среднем раз по 50 в день.
Есть еще, конечно, любители работать в VIM в SSH-консоли прямо на сервере; я их уважаю, но вряд ли когда примкну к их лагерю: все-таки удобства, предоставляемые хорошей графической IDE, для меня перевешивают.
По большему счету RealSync — это решение проблемы скорости работы IDE
Итак, чтобы решить проблему скорости поиска, нужно хранить исходники на локальном диске и искать уже по ним. И сразу же возникает вопрос, как исходники попадут на удаленный веб-сервер при нажатии Ctrl+S. Тут возможны несколько вариантов.
- Почти все IDE поддерживают передачу измененного файла (по FTP или SSH) на удаленный сервер при нажатии Ctrl+S. Но только здесь две проблемы. Во-первых, вы не сможете изменять файлы «мимо» IDE (например, сделать git pull из командной строки на локальной машине). Во-вторых, если вы на несколько дней исчезнете из
реальностиинтернета, а потом вернетесь с измененными файлами, IDE уже не сможет определить, какие файлы изменились (особенно если они еще случайно и на сервере поменялись почему-то независимо от вас), и в лучшем случае начнет полное копирование, что займет полчаса. - Запустить в вечном цикле RSYNC. Это более-менее работает, когда проект не очень большой, когда интернет хороший и когда вы сидите НЕ на Windows (в Windows RSYNC весьма медленный при запуске). Во всех остальных случаях будьте готовы к 2-3-секундным задержкам.
- Использовать специальную утилиту синхронизации, такую как RealSync, Unison, WinSCP и т.д.
RealSync задумывался как инструмент, обеспечивающий устойчивую работу в условиях плохой связи и не требующий внимания от программиста («запустил и забыл»). Именно таким он и получился, в отличие от многочисленных аналогов.
А если мне нужна двусторонняя синхронизация?
Это очень популярный вопрос, связанный с тем, что RealSync всегда затирает любые изменения, производимые напрямую в папке на сервере (если не сразу, так при очередном реконнекте точно). Только изменения в локальной папке имеют смысл и приоритет.
Но давайте задумаемся, зачем может понадобиться двусторонняя синхронизация?
- Вы хотите работать, например, с Git в консоли на сервере? Но зачем? Ведь можно поставить Git на свою машину и пользоваться всеми преимуществами локальной работы и разными GUI для Git.
- Ваши скрипты пишут в какую-то локальную папку в рамках директории документов? Добавьте эту папку в исключения RealSync (это делается легко, одной строчкой в конфиге или при самом первом запуске). К тому же делать директорию документов доступной для записи скриптами — это антипаттерн.
- Вы работаете на ноутбуке дома и на другом десктопе — на работе и хотите синхронизировать файлы через папку веб-сервера? Но ведь веб-сервер — это не средства синхронизации и контроля версий. Используйте лучше Dropbox или коммитьте в систему контроля версий.
- Вы активно используете симлинки в рабочей копии на сервере? Ну… а не пробовали перестать их использовать, это как минимум упростит поддержку и развертывание в будущем?
В целом нужно понимать, что RealSync — это не синхронизатор, это репликатор. Если перестать воспринимать папку на веб-сервере как нечто самостоятельное, а считать ее просто автоматическим «зеркалом» и перестать ходить в нее руками по SSH (действительно, зачем это делать?), все встает на свои места. И в большинстве случаев оказывается, что двусторонняя синхронизация просто не нужна (но если вы по-прежнему считаете иначе, пользуйтесь Unison-ом — если он у вас приживется, конечно.)
Установка RealSync и первый запуск
Все достаточно просто: сначала нужно скачать RealSync и скопировать его куда-нибудь, а затем где-то (в Автозагрузке или на Рабочем столе) разместить ярлык со следующей командной строкой:
При первом запуске вы получите примерно такое окно, в котором нужно будет в интерактивном режиме ввести адрес сервера, ваш SSH-логин и пароль на нем (пароль запрашивается исключительно процессом SSH и не сохраняется на локальной машине, см. ниже), имя папки на удаленном сервере и т.д.
Если вы уже имеете беспарольный доступ к серверу по SSH-ключу, пароль не будет запрашиваться вообще, даже в первый раз. Если еще не имеете — RealSync сам сгенерирует открытый+закрытый ключ, отрытый положится на сервер, а закрытый — в вашу домашнюю директорию на локальной машине (в специальную папку, которую воспринимает RealSync).
Остальные настройки конфигурации запишутся в файл ПолныйПутьДоВашейПапкиИсходников/.realsync, так что при следующем запуске уже никаких вопросов задано не будет, а просто запустится синхронизация, и программа свернется в трей (для Windows).
Теперь можно править любые исходники и убеждаться, что они моментально попадают на сервер. Если кликнуть на иконку запущенного RealSync в трее, то процесс работы можно наблюдать примерно вот в таком окне:
Дистрибутив RealSync для Windows является самодостаточным: он уже включает в себя RSYNC, SSH, мини-версию Perl и другие необходимые утилиты, так что вам достаточно будет просто запускать realsync.exe и ни о чем этом не думать. В MacOS и Linux же все эти утилиты, как правило, уже имеются в системе, поэтому они и используются.
Итак, RealSync висит в трее, вы его никогда не выключаете, поэтому у вас возникает полная иллюзия, что вы работаете на локальной машине с удаленной папкой. При этом вы имеете все преимущества производительности локального поиска и работы с IDE. Вот это и была цель разработки RealSync.
Буду рад, если утилита сделает еще чью-нибудь повседневную работу легче. Комментарии приветствуются. Проект на GitHub-e: dklab_realsync.
Источник
Синхронизация данных между «1С: Розница» и «1С: Бухгалтерия»
Чтобы автоматизировать и упростить в организациях ведение учёта средствами из линейки конфигураций 1С, можно укомплектовать рабочие места менеджера с кассиром стандартной конфигурацией по типу 1С Розница или 1С УТ, а на место бухгалтера установить одноименную конфигурацию 1С Бухгалтерия, которая бы выгружала все «проводки» из основной базы организации для их последующего бухгалтерского учёта. И сегодня я вам предлагаю пошагово узнать, как настроить синхронизацию данных между 1С: Розница и 1С: Бухгалтерия по локальной сети.
А исходные данные для синхронизации конфигураций у нас будут следующими:
- Рабочая база 1С: Розница 2.3, из которой мы будем делать выгрузку ;
- Чистая база 1С: Бухгалтерия 3.0, в которую мы будем делать загрузку ;
- Версии рабочей конфигурации и бухгалтерии должны быть «свежими» ;
- В 1С: Бухгалтерия должны быть заполнены реквизиты организации, склад и настроена учетная политика ;
- По условиям задачи рабочие места менеджера и бухгалтера располагаются на разных компьютерах, так что синхронизацию данных мы будем с вами настраивать через сетевой каталог по локальной сети.
Перед настройкой, обязательно сделайте резервные копии обеих баз данных.
Папка с общим доступом.
Для начала, нам необходимо создать отдельную папку на любом из рабочих мест и открыть к ней сразу общий доступ по локальной сети, чтобы использовать её в качестве того места, где у нас будет происходить обмен данными между базами 1С. Для открытия общего доступа к папке, соответственно, создаём её, нажимаем по ней правой кнопкой мышки и открываем Свойства.
На вкладке Доступ, нажимаем Общий доступ.
Выделяем пользовательскую строку, выбираем Все и нажимаем Добавить.
Затем, установим уровень разрешений Чтение и запись и нажмем Поделиться.
Итак, общий доступ к отдельной папке по локальной сети у нас с вами открыт.
Теперь можно приступать к основным настройкам синхронизации.
На компьютере с 1С: Розница.
Заходим в раздел Администрирование и открываем Синхронизация данных.
Отметим пункт Синхронизация данных, вводим префикс «РО» для данной базы и открываем Настройки синхронизации данных.
Нажимаем Новая синхронизация данных.
И выбираем из списка Бухгалтерия предприятия, ред. 3.0 (EnterpiseData).
Далее мы нажимаем Настроить параметры подключения.
Выбираем здесь вариант подключения Синхронизация данных через файл, без подключения к другой программе и нажимаем Далее.
В разделе Каталог, сразу нажимаем на троеточие.
Находим ранее созданную папку с общим доступом и нажимаем Выбор папки.
Внимательно перепроверяем выбранный путь к папке и нажимаем Далее.
В параметрах синхронизации данных, добавляем к бухгалтерии префикс «БП» и нажимаем Далее.
Итак, настройка подключения успешно завершена. Жмём Готово.
Если мы попробуем сейчас перейти к следующему этапу настроек подключения, тогда получим закономерную ошибку т.к. нам нужно получить дополнительные параметры с первоначальной выгрузкой данных из 1С: Бухгалтерия.
Так что, переходим к настройка синхронизации в Бухгалтерии.
На компьютере с 1С: Бухгалтерия.
Заходим в раздел Администрирование и открываем Синхронизация данных.
Отмечаем Синхронизация данных, вводим префикс «БП» для этой базы данных и открываем Настройки синхронизации данных.
Нажимаем Новая синхронизация данных.
Выберем из списка Другая программа т.к. мы не найдём тут Розницы версии 2.3.
И нажимаем Настроить параметры подключения.
Выберем пункт Синхронизация данных через файл, без подключения к другой программе, отмечаем Загрузить параметры подключения из файла и нажмём на троеточие.
Заходим в нашу папку с общим доступом, выделяем в ней файл Синхронизация данных через универсальный формат, который нами был сформирован ранее в настройках Розницы и нажимаем Открыть.
Перепроверяем путь к файлу с параметрами подключения и нажимаем Далее.
В следующем окне настроек каталог подставиться автоматически. Жмём Далее.
Параметры подключения будут также заполнены автоматически. Жмём Далее.
А после сохранения настроек подключения к ″Другая программа″, жмём Готово.
Далее мы переходим к Настройке правил отправки и получения данных.
Т.к. по условиям задачи нам нужно настроить одностороннюю выгрузку данных исключительно из Розницы в Бухгалтерию, здесь мы указываем Бухгалтерии на то, что данные необходимо Не отправлять и нажимаем Записать и закрыть.
А затем, нажимаем Выполнить начальную выгрузку данных.
В появившемся окне с предупреждением, нажимаем Далее.
И ожидаем окончания быстрой выгрузки данных для сопоставления.
После которой, просто нажимаем Готово.
Итак, все этапы настроек синхронизации на стороне Бухгалтерии пройдены.
Теперь, нам осталось покончить с настройками на стороне Розницы.
На компьютере с 1С: Розница.
Вернувшись к настройкам синхронизации, жмём Настроить правила отправки и получения данных.
И в правилах отправки данных, отметим Отправлять всю, выбираем начальную дату выгружаемых документов и нажимаем Записать и закрыть.
Затем, нажимаем Выполнить сопоставление и загрузку данных.
А после быстрой и, так сказать, «холостой» синхронизации т.к. никаких данных из Бухгалтерии мы не выгружали, нажимаем Готово.
И переходим к последнему этапу Выполнить начальную выгрузку данных.
В окне с уже знакомым предупреждением, нажимаем Далее.
А после окончания выгрузки данных для Бухгалтерии, нажимаем Готово.
Итак, все этапы настроек синхронизации на стороне Розницы также пройдены.
Теперь нам осталось принять выгруженные данные на стороне Бухгалтерии.
На компьютере с 1С: Бухгалтерия.
Заходим в раздел Администрирование > Синхронизация данных > Настройки синхронизации данных, выделим нашу настройку подключения к базе Розницы и нажимаем Синхронизировать.
Ожидаем завершения процесса синхронизации данных.
После которого у нас появится окно для сопоставления загруженных данных из Розницы с данными из Бухгалтерии, которые будут отмечены синим значком. И нас интересует тут среди прочего Склады (места хранения), который нам нужно сразу же сопоставить. Находим и открываем двойным кликом данный пункт.
Открываем двойным кликом склад из правой колонки (Розницы).
Выделяем склад из Бухгалтерии и нажимаем Выбрать.
Склады сопоставлены и мы нажимаем Записать и закрыть.
Остальные пункты можно оставить несопоставленными и просто нажать Далее.
А в окне с предупреждением, нажимаем Продолжить.
Ожидаем окончания загрузки выгруженных данных из Розницы в Бухгалтерию.
И после успешной синхронизации, нажимаем Готово.
После чего, зайдём в раздел Синхронизация данных и откроем Предупреждения при синхронизации данных.
Где можно проверить наличие документов, которые по тем или иным причинам не провелись. Например, реквизиты банковского счета были не заполнены при формировании документа в Рознице за ненадобностью, тогда как в Бухгалтерии они нужны для правильного ведения учёта. Так что, всё проверяем и дополняем.
А для проверки остальных данных, зайдём в раздел Операции и откроем Журнал операций.
Где у нас будут отображены все выгруженные «проводки» из Розницы.
Если у вас остались вопросы, оставляйте их в комментариях ниже. А пока… пока.
Источник