Имя: Пароль:
1C
1С v8
КД - режим записи.
0 RomaH
 
naïve
05.04.13
14:20
Синхронизация документов между двумя базами
если режим проведения не устанавливать - документы копируют только состояние
вроде не вру?

для проведения пишу - перед выгрузкой
если Проведен тогда РежимЗаписи = "Проведение"

Допустим в источнике документ 1 проведен.
Его перенесли - в приемнике он после загрузки тоже проводится

потом в осточнике отменили проведение.
если Проведен тогда РежимЗаписи = "Проведение"
Иначе РежимЗаписи = "ОтменаПроведения"

и тут все ок - в приемнике документ будет найден, реквизиты заполнены и будет произведена отмена проведения.

но наткнулся на такой момент - если в источнике документ создали и не провели
в приемник он попадат новым объектом, и с режимом записи отмена проведения.

соотвественно получаю ошибку на движениях - регистратор не установлен

как должно быть?
1 RomaH
 
naïve
05.04.13
14:26
если перефразировать вопрос
как в КД сделать правила, что бы проведенный документ проводился в приемнике, а не проведенный - не проводился, или если был до этого проведен - отменял проведение
2 Alex S D
 
05.04.13
14:32
у меня это прописано в Послезагрузки
3 Aleksey
 
05.04.13
14:33
(1) что мешает после загрузки это всё делать?
4 Зойч
 
05.04.13
14:35
так вроде непроведенный и сам отменится
5 Alex S D
 
05.04.13
14:38
(4) хрен там, у меня вот движения остаются например а документ  помечен как не проведенный
6 RomaH
 
naïve
05.04.13
14:42
(3) т.е. второй раз записывать в базу?
7 Alex S D
 
05.04.13
14:42
(6) получается так... но может есть и другие пути хз)
8 RomaH
 
naïve
05.04.13
14:42
т.е. правила записали объект в базу приемник
потом после загрузки проверяем флаг "Проведен" и пишем объект еще раз с установленым режимом записи?
9 Alex S D
 
05.04.13
14:44
(8) я делал только для отмены, насчет проведения не уверен
10 RomaH
 
naïve
05.04.13
14:44
Если Не Объект.Проведен Тогда
Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения); //Контрольный
КонецЕсли;

ну и с установкой режима записи только для проведенных в "ПередВыгрузкой"
11 PCcomCat
 
05.04.13
14:47
А еще можно до записи посмотреть найден ли этот объект в базе, а уж после этого анализировать, что с ним делать: проводить, отменять проведение или просто записать.
12 RomaH
 
naïve
05.04.13
14:55
(11) как бы там все до записи
13 PCcomCat
 
05.04.13
14:57
(12) Ну?
14 PCcomCat
 
05.04.13
14:58
А ещё часто бывает ситуация, когда бух подправил нумерацию ПКО или РКО, например, и на загрузке при попытке записать документ вываливается ошибка записи.
15 SunFox
 
05.04.13
15:11
Если не Отказ Тогда
   Объект.ОтражатьВБухгалтерскомУчете  = Ложь;
   Объект.ОтражатьВНалоговомУчете  = Ложь;
   Если (не Объект.Проведен) и Объект.Ссылка.Проведен  Тогда
       ОбщегоНазначения.УдалитьДвиженияРегистратора(Объект, Ложь);
   ИначеЕсли Объект.Проведен Тогда
       Объект.Записать(РежимЗаписиДокумента.Проведение);
       //ПолныеПрава.РегистрацияОтложенногоПроведения(Объект.Ссылка, Объект.Организация);
   КонецЕсли;
КонецЕсли;
16 SunFox
 
05.04.13
15:12
+15 УПП - ПослеЗагрузки
17 RomaH
 
naïve
05.04.13
15:20
(13) специально проверил
в ПослеЗагрузки ПКО
ЗначниеЗаполнено(Объект.Ссылка) = Ложь;

(15)
Объект.Ссылка надо бы заменить на просто Ссылка

   ИначеЕсли Объект.Проведен Тогда
       Объект.Записать(РежимЗаписиДокумента.Проведение);

заменить на ПередВыгрузкой - РежимЗаписи установить для проведенных - избавитесь от лишней записи
18 PCcomCat
 
05.04.13
15:23
(17) Что и требовалось доказать! Для такого объекта отмена проведения не требуется!!!
19 RomaH
 
naïve
05.04.13
15:27
остановился на таком:
Если ОбъектНайден и Не Объект.Проведен Тогда
Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
ОбъектМодифицированн = Ложь;
Конецесли;
// по сути можно еще проверить Ссылка.Проведен - и если не проведена, то не делать ничего и вынести удаление движений в отдельную процедуру в конфигурации или в алгоритм КД, а не целиком записывать объект в базу
20 RomaH
 
naïve
05.04.13
15:29
(18) и как до записи проанализировать и дать команду системе отменить проведение или нет?
где видел режимЗаписи везде еще нет найденного в базе объекта - не понятно что делать
а где есть найденный - там нет установки режимаЗаписи
21 PCcomCat
 
05.04.13
15:51
(19) Вы с со своими руками в разных часовых поясах находитесь? ;) Написал же уже!