|  25.08.2010, 14:56 | #1 | 
| Участник | 
			
			Здравствуйте! Есть задача: передать запись таблицы из одной компании в другую. Это действие желательно выполнить в момент сохранения записи. Поскольку запись передать нельзя, передаётся значение ключевого поля таблицы. И тут возникает проблема: если действие по синхронизации выполнять в триггере OnModify, то запись ещё не сохранена и в таблице хранятся старые значения полей. Можно, конечно, вызвать CHANGECOMPANY, но тогда надо делать CHANGECOMPANY для любой таблицы, для которой необходимо выполнять проверки полей (например, наличие глобального измерения в фирме-приёмнике). Поэтому передаётся значение ключевого поля в фирму-приёмник и там уже вызываются стандратные проверки. Можно ли каким-то образом принудительно сохранить передаваемую запись? (MODIFY на триггере ONModifyRecord формы и OnModify таблицы не дало ничего). Или есть какой-то способ имитировать работу триггера OnAfterModify? | 
|  | 
|  25.08.2010, 23:39 | #2 | 
| Участник | 
			
			Репликация?
		 | 
|  | 
|  26.08.2010, 09:16 | #3 | 
| Участник | 
			
			Как же быть со вставками и удалением записей? Боюсь в такой постановке задача нерешаемая. Возможно лучший вариант пересмотреть концепцию и валидэйтить записи в фирме-приемнике на триггере OnModify: ReceiverRecord.changecompany(ReceiverCompany); ReceiverRecord.transferfields(SenderRecord, true); ReceiverRecord.CheckRecord; if not ReceiverRecord.insert then ReceiverRecord.modify; | 
|  | 
|  26.08.2010, 10:38 | #4 | 
| Участник | 
			
			Кстати, может таблицу общефирменной сделать? )))
		 | 
|  | 
|  26.08.2010, 12:40 | #5 | 
| Участник | Цитата: 
		
			Сообщение от rmv
			   Как же быть со вставками и удалением записей? Боюсь в такой постановке задача нерешаемая. Возможно лучший вариант пересмотреть концепцию и валидэйтить записи в фирме-приемнике на триггере OnModify: ReceiverRecord.changecompany(ReceiverCompany); ReceiverRecord.transferfields(SenderRecord, true); ReceiverRecord.CheckRecord; if not ReceiverRecord.insert then ReceiverRecord.modify; Как инициировать процесс синхронизации в фирме-приёмнике если изменяется запись в фирме-источнике? Триггер OnModify сработает в фирме-источнике на той записи, которая была изменена. С удалением как раз всё просто. Перед удалением вызывать процедуру синхронизации и в фирме-приёмнике удалять запись по значению ключевого поля. А вставка аналогична изменению. Будет сделано изменение, аналогично можно будет и на вставку сделать. Не получится. В каждой из фирм могут быть как общие записи так и свои собственные независимые от другой фирмы записи. Пока что всё свелось к более простому варианту с использованием NAS. При изменении устанавливать флажок(в таблице, которая хранит значения первичного ключа таблицы и тип синхронизации=Вставка,Изменение,Удаление), что запись была изменена. И по таймеру запускать процедуру синхронизации. Досконально этот способ проверю чуть позже. | 
|  | 
|  26.08.2010, 13:50 | #6 | 
| Участник | 
			
			Если синхронизировать нужно немедленно после изменения записи  - процедуру инициализации синхронизацию нужно переложить с фирмы-приемника на источник. Физически запись в приемнике обновится раньше, чем в источнике. Если временной лаг допустим - вариантов множество: От ведения лога до анализа таймстампов в версии SQL. | 
|  | 
|  26.08.2010, 20:27 | #7 | 
| Administrator | 
			
			а можно совсем немножко про бизнес процессы... что за таблицы? к чему такая онлайн спешка? Рома правду говорит, некоторые справочники и общефирменными можно сделать, а некоторые документы по МФ функционалу лучше запускать | 
|  | 
|  26.08.2010, 21:01 | #8 | 
| Участник | 
			
			Кстати, помимо МФ функционала есть очень интересный функционал RIM. Я сейчас не на работе, диапазона объектов не помню, но что-то в районе 8000 с чем-то. Выгружает таблицу в xml, а потом в другой базе без проблем загружает. Остается только фильтры поставить и, если надо, счётчики.
		 | 
|  | 
|  27.08.2010, 08:46 | #9 | 
| Участник | 
			
			Форму 8627 посмотрите. А функционал Migration называется.
		 | 
|  | 
|  27.08.2010, 12:44 | #10 | 
| Участник | Цитата: В общем задача стоит синхронизировать данные двух компаний (таблиц много: поставщики, основные средства, номенклатура, документы и т.д.). Общефирменными - это значит данные будут видны и той, и другой компании. А это как раз не нужно. Повторюсь: данные могут быть разные для двух компаний. Почему он-лайн спешка - руководству захотелось, чтоб всё было красиво.  До сих пор всё работало по периодическому заданию. И не одному. Спаибо большое за подсказку   Оказалось, что эту функциональность я в первый разу вижу. Но, пожалуй, эта функциональность не совсем подходит. Дело в том, что номерные серии, по которым генерируются значения первичного ключа таблицы - разные. То есть в одной компании в этом поле хранится одно значение(например, 001), в другой - другое(например, 005). Во второй компании в дополнительном поле необходимо сохранять значение первичного ключа из фирмы-источника(001). | 
|  | 
|  27.08.2010, 16:17 | #11 | 
| Administrator | 
			
			имхо, как-то помечаем строки источника, которые добавлены или изменены, которые надо перебрасывать (ведь не все же перебрасывать!) пишем или в источнике, или в приемнике (что лучше) задание, которое ченчкампанит, находит эти строки, импортирует к себе с валидейтами (поэтому лучше на приемнике писать). а дальше настраиваем через НАС, через Нав шедулер, не важно, расписание. каждые 5 минут оно работает и все хорошо. это не онлайн, зато работает. вот | 
|  | 
|  27.08.2010, 17:17 | #12 | 
| Участник | Цитата: 
		
			Сообщение от Sancho
			   имхо, как-то помечаем строки источника, которые добавлены или изменены, которые надо перебрасывать (ведь не все же перебрасывать!) пишем или в источнике, или в приемнике (что лучше) задание, которое ченчкампанит, находит эти строки, импортирует к себе с валидейтами (поэтому лучше на приемнике писать). а дальше настраиваем через НАС, через Нав шедулер, не важно, расписание. каждые 5 минут оно работает и все хорошо. это не онлайн, зато работает. вот | 
|  | 
|  27.08.2010, 18:39 | #13 | 
| Участник | 
			
			Sancho, примерно так сейчас и реализовала синхронизацию одного из справочников. Согласна с вами, romeo. Но кажется ваш аргумент руководство как раз и использовало как довод в пользу он-лайн. Например, при синхронизации документов прекращать учёт документа в фирме-источнике. Выдавать пользователю все ошибки сразу. Если например, не был отсинхронизирован справочник, а документ синхронизируется, то пользователю будет выдана ошибка синхронизации. Может затем, чтобы не было "забытых" заданий по исправлению ошибок синхронизации? | 
|  | 
|  30.08.2010, 09:47 | #14 | 
| Участник | 
			
			Кстати, фирма-источник одна, или записи должны гоняться в обе стороны? И какая необходимость (не сочтите за нескромность  ) учитывать документы несколько раз в разных фирмах? Коли аргумент romeo руководство использовало как дополнительный довод в пользу онлайн синхронизации - может стоит сместить акцент и вести речь о механизме параллельного учета документов в разных фирмах, онлайн синхронизация документов и справочников здесь только один из вариантов. | 
|  | 
|  31.08.2010, 03:49 | #15 | 
| Участник | |
|  | 
|  31.08.2010, 18:17 | #16 | 
| Участник | 
			
			Нужны validat'ы полей в фирме-приёмнике. Отработают ли они нормально в фирме-приёмнике? Для дополнительных проверок понадобится делать CHANGECOMPANY для каждой из проверяемых таблиц. (Например, проверка - наличие глобального измерения в фирме-приёмнике). | 
|  | 
|  31.08.2010, 18:22 | #17 | 
| Участник | Цитата: 
		
			Сообщение от rmv
			   Кстати, фирма-источник одна, или записи должны гоняться в обе стороны? И какая необходимость (не сочтите за нескромность  ) учитывать документы несколько раз в разных фирмах? Коли аргумент romeo руководство использовало как дополнительный довод в пользу онлайн синхронизации - может стоит сместить акцент и вести речь о механизме параллельного учета документов в разных фирмах, онлайн синхронизация документов и справочников здесь только один из вариантов. Синхронизация односторонняя. Вроде   в одной фирме документ содержит 5 строк, во второй - 3. И с другими аналитиками, например. С другим количеством. Это, конечно, слабая отговорка, но я могу не знать всех требований, поскольку не я контролирую этот процесс. | 
|  | 
|  31.08.2010, 21:39 | #18 | 
| Участник | Цитата: А Вам Кирен удачи в разгадывании ребусов, думаю Вы ошиблись форумом, похоже Вам сюда | 
|  | 
|  01.09.2010, 09:13 | #19 | 
| MCTS | Цитата: Но вот онлайн для этих целей не нужен. Раз в месяц синхронизировать периодическим заданием и нормально. Максимум раз в неделю. Довод "при учете пользователю должна вываливаться ошибка синхронизации, если справочник не был передан в фирму приемник" - вообще считаю доводом против онлайна. Уже вижу продажника или кладовщика, у которых клиент/машина стоит, а они учесть документ не могут. При таком раскладе "устранитель ошибок синхронизации" должен быть на работе тоже всегда, т.е. онлайн. | 
|  | 
|  01.09.2010, 11:33 | #20 | 
| Участник | Цитата: 
		
			Сообщение от rmv
			   А Вам Кирен удачи в разгадывании ребусов, думаю Вы ошиблись форумом, похоже Вам сюда  - спасибо. Юмор оценила.   | 
|  |