Добрый день! Перестала работаь синхронизация 1с - Creatio, которая была настроена через веб сервис. Интеграция работала в 1 сторону, данные с Creatio передавались в 1с. Пробовал получать доступ к сервису через Postman, все работает корректно, как на скринах 1 и 2, то есть аутентификация и последующий запрос дают результат

Когда те же действия происходят со стороны 1с, после попытки синхронизации данных появляется ошибка 401 - Unauthorized: Access is denied due to invalid credentials

 

При этом во время аутентификации ошибок нет, приходит статус 200 ок, пишет что подключение установлено, возвращает корректные значения типа (скрин 3):

 

{

    "Code": 0,

    "Message": "",

    "Exception": null,

    "PasswordChangeUrl": null,

    "RedirectUrl": null

}

 

но при попытке загрузить данные в 1с падет ошибка, "Непередбачений символ при читанні json" (скрин 4)

Если смотреть детальнее в чем причина, предоставлен xml

http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> http://www.w3.org/1999/xhtml"> 401 - Unauthorized: Access is denied due to invalid credentials. Server Error

401 - Unauthorized: Access is denied due to invalid credentials.

You do not have permission to view this directory or page using the credentials that you supplied.

Пользователи под которыми осуществляется вход, внесены в настройку "Не учитывать проверку доступа по IP-адресу"

 

Кто то может подсказать почему так происходит и как это исправить? 

 

Прикрепленные файлы

Нравится

2 комментария

Добрый день, Илья!

 

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

И дополнительно проверьте корректность заполнения Headers по примеру из статьи:

https://academy.creatio.com/docs/developer/integrations_and_api/data_se…

Kalymbet Anastasia,

сначала тоже думал что права доступа, но ту же ошибку получал и с под акаунта Supervisor. На сколько я понял, проблема оказалась в регистре заголовков колонок на стороне 1с, когда сменили регистр все заработало в штатном режиме

Показать все комментарии

Итак, ситуация с синхронизацией 1С и Террасофт.
Есть настроенная синхронизация, очень простая. Из проектов Террасофт заполняется справочник в 1С.
Записи в справочнике создаются, всякие цифры, даты, строковые поля - нормально заполняются.
Ненормально заполняются поля с ссылками на другие таблицы.
Так например при наличии абсолютно одинаковых ФИО в разделе Контакты и справочнике Физические лица, все же создается в 1С дубль. С каким-то невменяемым кодом из цифр и букв (но это даже не ID записи в Террасофт). Если поставить галочку при синхронизации "не создавать записи в справочнике", то тогда в синхонизируемых полях будет просто пусто.
Что делать, чтобы исправить?

Нравится

8 комментариев

Виктория, абсолютно одинаковые ФИО могут быть у 2-х и более совершенно разных людей. Поэтому все записи "маппятся" по UID1C(ID записи в 1с) и Object1C (сущность в 1с).
Рекомендую Вам создать отдельную настройку по всем "ссылочным" полям интегрируемого Вами справочника и в настройках снять галочку "добавлять новые записи", но заполнить поле "Экспорт по правилу".

Т.е. если в справочнике "Проекты" в 1с есть два ссылочных поля ФизЛицо (ссылка на справочник ФизЛица) и ЮрЛицо (ссылка на справочник "ЮрЛица"), то у вас должны быть две доп. настройки экспорта: из контактов в физ лица, и из контрагентов в юр лица. Эти настройки должны быть указаны в поле "экспорт по правилу" в исходной настройке по экспорту проектов.

Добрый день.
Начала со ссылочного поля Физлица. Сделала отдельную настройку Контакты, она на картинках.
В Проектах указала для соответствующего поля экспорт в 1С по правилу , и запретила добавление.
Результат стал немного лучше, а именно: в справочник Физлица все также добавляются дубли, но хотя бы с нормальными кодами , в порядке увеличения.

Виктория, при экспорте система смотрит на поле UID1C - если это поле пустое - система создаст новую запись в 1с, после чего заполнит это поле ID-шником созданной в 1с записи. У Вас сейчас во всех контактах это поле пустое - поэтому в 1с первый раз будет создаваться новая запись, а затем всегда будет обновляться. Поэтому нужно сначала импортнуть всех контактов с 1с в ТС. Затем слить дубли (если таковы будут) но обязательно оставить поле UID1C и Object1C заполненным. А затем можно уже пользвоаться этими контактами для эксопрта будучи уверенным что новые записи в справочнике "Контакты" будут созданы только в том члучае, если контакта действительно нет в 1с (он был создан в тс после первичного импорта контактов).

Я так же попробовала в настройке Контакты оставить только одно поле для синхронизации - Наименование, убрав все, что связано с кодами.
Но и так в 1С создаются дубли.

P.S. не видела Вашего комментария. Буду пробовать

А можно ли как-то из 1С получить список фио физлиц и его ID , а потом заполнить поля UID1C в ТС (допустим через запросы sql или импортом)?

Я создала запрос в 1С, который выводит ФИО и его идентификатор.

Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ ФизическиеЛица.Ссылка,ФизическиеЛица.Представление,ФизическиеЛица.Наименование ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица";
Результат=Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
уи=Выборка.Ссылка.УникальныйИдентификатор();
Сообщить(Выборка.Наименование + " код " + уи);
КонецЦикла;

А потом в SQL заполняю
Update tbl_Contact
set UID1C='{ec123797-e580-11e3-9b31-003048626081}' where Name = 'фио'

И заполненные таким образом идентификаторы позволяют нормально синхронизироваться и не создавать дубли!
Но это все же громоздко теперь так заполнять ((

Виктория, ну так а что делать... Каким то же образом нужно "смапить" те контакты, которые уже есть в ТС (создавались в ТС) и те, которые уже есть в 1С (создавались в 1с).
Обычно мы делаем так: вручную мапим указанным вами способом те контакты, которые являются пользователями системы. Остальные контакты либо удаляем, и потом загружаем с 1с, либо загружаем из 1с, а потом сливаем дубли штатными средствами, либо напрямую UPDATE/DELETE запросами на уровне СУБД.
Опять таки, для новых контактов (которых нет в 1с) дублей не будет и всё будет работать хорошо.

Хотя, в принципе, при желании, вы можете составить список тех контактов, которые есть в ТС и которые есть в 1с по условию ТС.ФИО = 1с. ФИО. Затем обработкой для этих контактов отобразить их UID1C, выгрузить в текстовый документ, затем загрузить в темповую таблицу в базу ТС (с двумя колонками- ФИО и UID1C) и массово выполнить UPDATE в базе Террасофт:

update tbl_Contact set UID1C = a.UID1C
from #Temp as a
where a.Name = tbl_Contact.Name
Показать все комментарии
Сейчас при экспорте в табличную часть документа/справочника в 1С всегда происходит добавление новой строки, а не ее поиск и обновление текущими данными из Террасофт. Таким образом, если не очищать каждый раз табличную часть, то в нее происходит добавление N строк, где N - количество строк в соответствующем датасете (например, детали) в Террасофт.Предлагаю реализовать возможность обновления строк в табличной части документа/справочника в 1С. В качестве ключевого поля использовать НомерСтроки. Конечно, со стороны Террасофт тоже должно быть аналогичное поле, которое хранит номер строки (ранее я озвучил идею добавления нумерации строк для детали "Продукты"). Для чего это нужно? В ситуации, когда в табличной части 1С храниться важная информация, которую нельзя просто так удалять/затирать, пригодиться эта возможность именно обновления данных в строке, а нее удаления и нового добавления. Алгоритм следующий. Для примера возьмем деталь "Продукты" и табличную часть документа. В детали "Продукты" заранее было добавлено поле "Номер", которое автоматически ставиться больше на 1 для каждой новой записи. При настройке синхронизации детали сопоставляем поле "Номер" в Террасофт с полем "НомерСтроки" в 1С. Снимаем галочку с поля "Не экспортировать", что будет в дальнейшем сигналом для обновления строк в табличной части, а не для их добавления. Если в настройках синхронизации табличной части не стоит "Очищать табличную часть", сопоставлено поле "НомерСтроки" с полем в Террасофт, не стоит галочка "Не экспортировать", то происходит обновление строки табличной части, а не добавление. Если при экспорте такого номера строки не находит, то происходит добавление строки. Пример как это сейчас сделано у меня. В функции ExportFields, чтобы избежать попытки записи в поле НомерСтроки, добавляем пропуск этого поля: // Kosh. 11.01.14. Modified: added skip LineNumber change if ((!IsAppend && !ObjectField.IsEdit) || IsEmptyValue(ObjectField.Name1C) || (Param.IsTabularSection && ObjectField.Name1C == 'НомерСтроки')) { // * Kosh         continue; } В функции ExportObject изменить код, где мы получаем Select1C строки табличной части: if (Param.IsTabularSection) {         Param.IsAppend = true;         if (Param.Version != 'V77') {                 // Kosh. 11.01.14. Modified: possibility to change line in tabular section                 var LineNumberObj = GetLineNumberObj(ObjectFields, Dataset);                 if (Param.DeleteData || !LineNumberObj.UseLineNumber) {                         Select1C = Param.Select1C[Param.TabularSectionName].Add();                 } else {                         Param.IsAppend = false;                         try {                                 Select1C = Param.Select1C[Param.TabularSectionName].                                         Get(LineNumberObj.LineNumber - 1);                         } catch(e) {                                 if (e.message.indexOf('Значение индекса выходит за границы диапазона') != -1 ) {                                         Param.IsAppend = true;                                         Select1C = Param.Select1C[Param.TabularSectionName].Add();                                 } else {                                         throw e.message;                                 }                         }                 }                 // * Kosh         } else { Используется функция: function GetLineNumberObj(ObjectFields, Dataset) {         var Result = {};         Result.UseLineNumber = false;         Result.LineNumber = 0;         for (var i = 0; i ObjectFields.length; i++) {                 if (ObjectFields[i].Name1C == 'НомерСтроки') {                         var ObjectField = ObjectFields[i];                         if (!ObjectField.DoNot && !IsEmptyValue(ObjectField.NameTS)) {                                 var TSLineNumber = Dataset(ObjectField.NameTS);                                 if (TSLineNumber) {                                         Result.LineNumber = TSLineNumber;                                         Result.UseLineNumber = true;                                 }                         }                         break;                 }         }         return Result; } Пример сделан для конфигурации 8.0-8.2.
1 комментарий

Добрый день!

Идея передана в проектный департамент на рассмотрение.
Как только будет решение, мы обязательно сообщим.

Показать все комментарии

Время от времени возникает ситуация, когда дата документа (ДатаДок) в 1С изменяется, но не выходит за рамки того же года (например, с 12.02.2011 на 14.02.2011). То есть номер документа является уникальным в разрезе одного года, но не уникальным в разрезе всего реестра документов. В таком случае, если использовать стандартную связку по ключевым полям (НомерДок, ДатаДок и объект 1С), такая связка с 1С теряется. Есть ли возможность в текущей утилите синхронизации задавать связку по году, а не по конкретной дате?

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

Нравится

2 комментария

Здравствуйте, Андрей.

Доработка утилиты интеграции подобным образом является очень трудоемокой.

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

В частности, добавить в конфигурацию 1С поле TSID, передавать в него при синхронизации соответствующий идентификатор записи в Terrasoft.

"Alimova Anna" написал:В частности, добавить в конфигурацию 1С поле TSID, передавать в него при синхронизации соответствующий идентификатор записи в Terrasoft.

Спасибо, тоже вариант.

Показать все комментарии

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

Нравится

2 комментария

В случае если Вы используете тилиту синхронизации из каталога расширений:
http://www.community.terrasoft.ru/catalog/3796

В данноей утилите есть возможность выбора сопоставления Uuid(со стороны 1-C) и UuiD-1C(Terrasoft).
Установите данные поля как уникальные.

Спасибо :twisted:

Показать все комментарии

Добрый день.

Возник вопрос, как при экспорте товара указать, что бы он был в определенной группе в 1С?

Нравится

4 комментария

Необходимо создать подчиненную запись при синхронизации, и установить соответствие [Продукт в группе].[Название] (Террасофт) - [Номенклатура].[Номенклатурная группа] (1C)

Анна, а можно скриншот, пожалуйста?
У меня почему-то так не получилось.

Здравствуйте, Алена!

Вам необходимо добавить подчиненную запись при интеграции продуктов (номенклатуры) и указать для нее в объекте интеграции Номернклатурные группы.

111

222

О, спасибо большое!

Показать все комментарии

В настройках синхронизации с 1С при добавлении объекта синхронизации типа "Документ" автоматически добавляются ключевые поля для связки документа в ТС с документом в 1С:
- ДатаДок
- НомерДок
- Объект1С (название объекта 1С)

В 1С бывает возникает ситуация, когда дата документа корректируется и изменяется, например, с даты 01.08.11 на 05.08.11. В таком случае при следующем импорте документа в Террасофт из 1С фильтрация по дате 05.08.11, номеру документа и объекту 1С выдаст пустой результат, и создастся новый документ в Террасофте. Но это не правильно, потому что на самом деле этот документ уже есть в Террасофте. Допустим, номер документа является уникальным в 1С в диапазоне 1 года. Каким образом нужно настроить импорт документов из 1С так, чтобы находились документы не по полной дате, а по году, то есть накладывался фильтр по 2011 году? Учитывается ли в утилите синхронизации такая особенность? и как это сделать?

Нравится

3 комментария

В базовой версии интеграции нет фильтрации исключительно по году.

В случае, если номер документа является уникальным - необходимо установить данное поле [Номер] как Ключевое (а у даты - снять данную галочку).
Нумерацию же документов можно проводить с учетом года (указывая в номере документа год). Или проводить фильтрацию: "дата создания документа больше чем 31.12.2010"(в этом случае номер в рамках года будет уникальным).

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

Дело в том, что каждый элемент в 1С имеет тоже уникальный идентификатор. Вот к нему можно и попытаться привязаться, но уже из скрипта
Вот пример получения уникального кода в 1С

 ГУИДССЫЛКИ	= СсылкаНаОбъект.УникальныйИдентификатор();
// или
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоКоду("00013");
Если НЕ НоменклатураСсылка.Пустая() Тогда
   Сообщить("GUID = " + НоменклатураСсылка.УникальныйИдентификатор());
КонецЕсли; 
 

Я эту проблему у себя решал тем, что создавал фильтр типа like и накладывал это фильтр там, где шла фильтрация по полю Date1C (ДатаДок):

function AddDate1CYearFilter(SelectQuery) {
    for (var i = 0; i < SelectQuery.Count; i++){
        var Select = SelectQuery.Items(i);
        var Filters = Select.Filters;
		AddLikeFieldFilter(Select, 'Date1CYear', 'Date1C', ltEqual);
    }
}
 
function ApplyDate1CYearFilter(Dataset, DocDate) {
	var FilterName = 'Date1CYear';
	var SelectQuery = Dataset.SelectQuery;
	var DateObj = new Date(DocDate);
	var FilterPattern = '[0-3][0-9].[0-1][0-9].'+DateObj.getYear();
	var FilterCodes = new Array(FilterName);
	EnableSelectQueryFilters(SelectQuery, true, FilterCodes);	
	SetParameterValue(SelectQuery.Parameters, FilterName, FilterPattern);
}

Вызов этих функций в разных местах:

AddDate1CYearFilter(Dataset.SelectQuery);
 
ApplyDate1CYearFilter(Dataset, DocDate);

Может и есть какое-то лучшее решение, но пока сделал так :smile:

Показать все комментарии

Подскажите можно ли как-то из самого запущенного 1С 7.7 запустить объект Террасофт и передать в него самого себя как COM-объект в Террасофт, чтобы Террасофт уже со своей стороны с помощью разработанной компанией Террасофт утилиты синхронизации использовал его для синхронизации.

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

Может кто сталкивался с этим, как можно сделать так, чтобы не запускать 2 клиента 1С на компьютере?

Нравится

6 комментариев

- Пока вижу только 1 теоретический реальный способ: написать на 1С 7.7 скрипт ert. В нем получаем сервис скрипта terrasoft, того скрипта, в котором содержатся собственно функции синхронизаци. Во все функции terrasoft, которые участвуют в синхронизации и создают в себе 1С объекты, добавить парамеры, через которые эти объекты передать. Из ert вызвать функцию синронизации terrasoft скрипта. Единственно, перед реализацие, нужно проверить, будут ли доступны свойства\методы нужных 1С-объектов в скриптах terrasft, которе передались из 1С.
Тоесть, синхронизации будет инициироваться с клиента 1С, а не с terrasoft.
- в версии 8.* такой проблемы нет.
- возможности получения доступа к объектам уже запущенного процесса 1С поидее не должно быть, с этим нужно отдельно разбираться

Не совсем понятно для каких целей необходимо запускать 1С под разными пользователями? И почему нельзя инициализировать обмен напрямую из Террасофт?

Чтобы из terrasoft делать синхронизацию, используются COM-объекты 1C. Из этих объектов к 1С-ке нужно так же подключаться, как и обычные пользователи подключаются через 1С клиент.
1С именно 7.7 версии не позволяет подключиться одновременно под одним пользователем дважды.
В 1с 8.* судя по всему это убрали.
Поэтому для 7ми нужно придумывать всякие ухищрения.
- или синхронизация происходит вконце какого-то промежутка времени (конец дня например) под одним пользователем.
- если все-таки необходимо чаще выполнять синхронизацию, и еще под разными пользователями, То здесь пока придумали только дублирование пользователей. Можно и под одним, но тогда 1С клиент нужно закрывать, пока происходит синхронизация в terrasoft.
- можно пробовать способ описаный мною выше. Но для этого нужно проверить - возможна ли передача 1С объектов в функции terrasoft (тоесть инициирует синхронизацию 1С, а не terrasoft), и если получится - сделать ряд програмных доработок.

Спасибо Алексей за хорошие советы, в дальнейшем планируется запускать синхронизацию периодически, проверяя наличие сделанных изменений после последней синхронизации (проверяться будет спецальная таблица в Террасофт и 1С, в которую будут заноситься записи об произошедших изменениях в различных таблицах, которые нужно синхронизировать).

На данный момент синхронизация работает таким образом, что на каждом компьютере пользователя должна стоять и 1С и Террасофт. Грубо говоря, при сохранении записи в Террасофт сразу же происходит обновление этой записи в 1С путем запуска экспорта. Аналогично, при добавлении/изменении записи в 1С происходит вызов функции импорта через запуск Террасофт, который в свою очередь запускает 1С. Для того, чтобы внесенные в 1С изменения из Террасофт заносились под конкретным пользователем, скорее всего нужно продублировать каждого пользователя, работающего в 1С. Таким образом можно на одном компьютере запустить две 1С под основным пользователем и продублированным, который служит для синхронизации ТС и 1С.

Думается мне что дублирование пользователей не очень правильная вещь: 1. Пользователи начнут путаться под каким им нужно запускать 1С а под каким запускается синхронизация с Террасофт 2. Каждая дополнительная 1С в семерке приведет к более "медленной" работе самой конфигурации 1С.
Что мешает сделать всего одного пользователя и под ним постоянно работающую 1С? Объекты созданные в террасофте будут переносится в 1С но автором прописываться будет пользователь 1С - сопоставленный пользователю создавшему объект в Террасофт.

"vpetunin" написал:Что мешает сделать всего одного пользователя и под ним постоянно работающую 1С?

Можно и так. Можно даже автоматизировать запуск синхронизации под этим пользователем. Для этого нужно решить по какому условию будет определяться необходимость запуска синхронизации (например по дате изменения записи). Выполнять эту проверку по таймеру, например каждые 1-5 минут. И если появились записи, для которых условие сработало (например: дата изменения записи выше даты последней синхронизации) - запустить синхронизацию. Это можно реализовать в виде отдельной утилиты, которая будет запускаться 1 раз:
tsclient /wnd=wnd_1CAutoSynchro
А еще лучше использовать TSJobManagerService.

Единственно что каждая измененная запись не сразу будет появляться в 1С. Тогда можно реализовать какой-то способ передачи сообщений между пользователем (котором нужно синхронизовать только что созданную запись) и утилитой синхронизации. А эта утилита, как и в предыдущем случае, где-то в единственном экземпляре запущенна и подключена к 1С под одним пользователем. Утилита, при получении сообщения от пользователя (в сообщении можно уточнить что конкретно пользователь хочет синхронизировать) выполняет нужную синхронизацию.
На счет авторства записей как обстоят дела, сейчас сказать не могу, нужно разбираться.

Показать все комментарии

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

Хочется обратить внимание на синхронизацию данных (например между TS и 1C) при сохранении записи в одной из систем.
Клиент часто на этапе синхронизации сам не очень хорошо представляет, при каких условиях и какие именно данные должны передаваться из одной системы в другую. 
Первый вариант – синхронизация происходит в момент сохранения данных. При нажатии на кнопку ОК запускается утилита синхронизации.
Второй вариант – когда создается дополнительная кнопка «Синхронизировать» и сохранение данных происходит только при нажатии на эту кнопку. 
Оба варианта имеют право на внедрение. При этом необходимо помнить, что при первом варианте в обеих системах записи будут идентичны (При условии первичной синхронизации всех данных в обеих системах). Во втором варианте необходимо помнить, что записи будут отличаться. Для второго варианта предпочтительно сделать дополнительное поле (реквизит), «Признак синхронизации». Тогда можно будет визуально определять, какие из записей синхронизированы, а какие нет. 

Нравится

Поделиться

6 комментариев

Здравствуйте.
Мне не раз приходилось объединять Terrasoft и 1С и вопрос синхронизации был основным. Дело в том, что в описанных вам двух вариантах есть одно основное условие - это обязательное наличие клиента 1С на рабочем месте Terrasoft(хотя у одного заказчика это тоже приходилось обходить). Это не всегда удобно, поэтому, я всегда делаю автоматический план сонхронизации, т.е. предположим счета синхронизируются каждые 2 мин., накладные каждые 10 мин и т.д. Конечно-же это синхронизация новых, измененных и удаленых, а раз в сутки (где-то ночью) происходит полная синхронизация данных (максимальная давность актуальных данных для синхронизации указывается в настройках)

Евгений, а как Вы обходите такие ситуации?
1. За две минуты группа менеджеров создала порядка 50 счетов. Началась синхронизация, которой для полного цикла необходимо время больше, чем две минуты. В это время создаются ещё некоторое количество счетов. Что произойдет в следующие две минуты? Как утилита синхронизации справляется с такой задачей? Ставится очередь?
2. Что присходит при "полной" синхронизации? Утилита проверяет есть ли не синхронизированные записи? Т.е. бывают ситуации, когда во время автоматической синхронизации не все записи успевают синхронизироваться?
Заранее спасибо за ответ ;)

Мы сейчас работаем над таким вариантом:

Синхронизацию предполагается проводить на стороне сервера . Что-то вроде сервиса, который с некоторой периодичностью проверяет специально созданную для этого таблицу. В этой таблице храниться информация об объектах которые нужно синхронизировать, она же служит своеобразным протоколом процесса синхронизации.
Предполагается два способа внесения записей в таблицу синхронизации: первый - по событиям вставки, удаления, редактирования; второй - на основе полной проверки всех объектов на соотношение дат создания/редактирования и даты последней синхронизации этого объекта.
Это как раз два способа синхронизации: текущий и полный.

Следовательно, на стороне достаточно установить только Террасофт. 1С нужна только на сервере.

По поводу вопросов:
1) Если я верно предполагаю, то при работе сервиса синхронизации не будет выполняться обновление датасета, следовательно, сервис добежит до конца первой группы операций (которые уже были загружены на момент старта), затем снова будет запущен, так как прошло больше двух минут, обнаружит, что были добавлены новые записи и станет обрабатывать их.
2) При полной синхронизации предполагается делать выборку из всех нужных таблиц тех записией, у которых дата последней синхронизации меньше, чем дата создания или модификации записи.

"Милова Марина" написал:Т.е. бывают ситуации, когда во время автоматической синхронизации не все записи успевают синхронизироваться

Такое теоретически возможно, так что лучше лишний раз перестраховаться.

Марина, скажите, пожалуйста, а что входит в полный цикл синхронизации, которая проходит каждые 2 минуты?
Как сказал Александр, целесообразно реализовать, чтобы эти действия происходили на стороне сервера, таким образом время на вставку или обновление пусть даже нескольких десятков записей, которые успели создать менеджеры за 2 минуты, измеряется секундами, поэтому мне кажется маловероятным то, что записи не успеют перенестись. Кроме того, можно определить, что информация из карточки счета и детали "Продукты", например, обязательно должны актуализироваться каждые 2 минуты, а задачи по счету достаточно чтобы были перенесены раз в сутки, таким образом можно уменьшить количество операций.
Например, в одном проекте у нас было реализовано обновление данных по клиенту из полей карточки при нажатие на кнопку "ОК", а обновление счетов этого клиента только при переходе на деталь "Счета".

Стоп-стоп-стоп.
Я рассказал пример синхронизации.
2 мин. это пример. При разработке срнхронизации с заказчиком составляется ТЗ в котором описыюатся такие моменты:
1. Что сонхронизируем (сущности, поля,констатнты, бизнес-процессы.)
2.Обязательно описывается "Где информация зарождается" и "какая система ответственна за актуальность". Это очень важный пункт
3.Частота "ленивых" сонхронизаций
4. Часттота полных синхронизаций.
Как было прапвильно замеченоЂ выше (я тоже об этом говорил в пред. посте) что синхронизация должна быть на сервере (или на одной отдельной машине).

И еще. По моему опыту, "ленивые" синхронизации (созданные и измененные сегодня) выполняются не более 20 сек. Для этого они и есть "ленивые" :)

Ольга.
Цель этого поста - обменяться информацией по возможным решениям при синхронизации. У каждого конкретного случая - свои "заморочки". И приятно, когда обладаешь какими-то знаниями. Ещё приятней, когда кто-то подсказал какое-то решение. Благодарю Евгения и Алексея, за то что они откликнулись.
Ольга Вам тоже огромная благодарность, за то что не остались равнодушной :)))

По вопросу "полной" синхронизации сама не очень поняла. Думаю, что просто в ночь включается "проверка", всё ли синхронизировано? нет ли записей, которые должны были синхронизироваться, но по каким-то причинам снхронизация не произошла. Например - была разорвана связь TS - 1C. Запись в одной из систем создалась, но не синхронизировалась.

Показать все комментарии