Имя: Пароль:
1C
1С v8
Универсальный обмен данными в формате XML
0 rudnitskij
 
31.07.18
20:21
Всем доброго времени суток.
Вопрос касается универсального обмена в формате XML. Правила прописаны, все документы, элементы справочников и прочее передаются как им положено. Хотел бы добиться следующего:
Движения документов передаются в базу-приемник набором записей. Где и что в правилах обмена добавить, чтобы движения документа, у которого дата раньше определенного момента, не передавались в базу-приемник, и документ при этом был проведен?
1 Zombi
 
31.07.18
22:15
"чтобы движения документа, у которого дата раньше определенного момента, не передавались в базу-приемник, и документ при этом был проведен" - Часть проведенных документов с движениями, часть проведенных же но без движений. Большей тупости сложно и придумать. Документ вообще должен без движений переноситься, а проводиться уже в приемнике. Иначе после обмена данные могут быть одни, а после того как пользователь откроет документ чтобы просто посмотреть и закроет его кнопкой "Ок", данные будут другие.
2 rudnitskij
 
31.07.18
22:31
(1) Большей тупости, чем обзывание тупостью требования ТЗ, сложно и придумать.
В базе делается отрез по определенную дату, остатки регистров переносятся. В этих остатках уже учтены движения документов, созданных и проведенных ранее этой даты, второй раз они не нужны. Заблокировать возможность проведения таких доков проблемой совсем не является.
Я бы такие документы вообще не переносил, но их тянет универсальный обмен. Например, если есть документ "акт сверки взаиморасчетов" - универсальный обмен потянет все доки, что входят в его состав. Зачем мне их движения, по некоторым 10 лет прошло уже...
3 RomanYS
 
31.07.18
22:34
(2) а зачем тянуть движения документов перегружаемых по ссылке?
4 rudnitskij
 
31.07.18
22:48
(3) чтоб не проводить их в базе-приемнике
5 RomanYS
 
31.07.18
22:50
(4) Зачем тянуть их по регистратору, разве нельзя отслеживать изменения набора записей?
6 rudnitskij
 
31.07.18
22:52
(5) нечего отслеживать, я тяну из старой распухшей базы документы в пустую новую. Мне нечего там отслеживать
7 RomanYS
 
31.07.18
22:54
(6) Каким образом Вы тянете движения, сами по себе они не переносятся. Или Вы не в курсе и "оно само"?
8 rudnitskij
 
31.07.18
23:02
(7) "Каким образом Вы тянете движения" - вместе с документом, с помощью правил обмена. Выгружаются набором записей
9 rudnitskij
 
31.07.18
23:18
(0) Есть возможность такое прописать в правилах обмена (речь идет о правилах обмена для универсального обмена в формате XML)?
10 Cyberhawk
 
31.07.18
23:23
В ПКГС Отказ = Истина
11 hhhh
 
31.07.18
23:24
(8) документы выгружаются отдельно, наборы записей отдельно. Это букварь. Чего вы нам тут втираете?
12 RomanYS
 
01.08.18
00:03
(11) +1
вроде чтобы переносить движения с документов нужно написать хоть чуть-чуть кода
13 Jofa
 
01.08.18
01:53
(11)+
(12)+
Зачем из переносить не понятно
14 Zombi
 
01.08.18
06:43
(2) Ты (1) Полностью прочитал или только до слова "тупость"?
15 rudnitskij
 
01.08.18
09:55
(12) не нужно, просто в конвертации при создании правил обмена поставить галочку "переносить движения набором записей".
ЗЫ. Тут чё, никто правил в конвертации не создавал? Все пишут "хоть чуть-чуть кода" ручками от начала до конца?
16 rudnitskij
 
01.08.18
09:57
(14) полностью. Поэтому у меня возник вопрос "ты (0) полностью прочитал?", но задавать его не стал. Какой смысл? Я ж не заставлю человека читать, если он не хочет (но очень хочет что-то написать на форуме) ...
17 rudnitskij
 
01.08.18
09:58
(13) "Зачем из переносить не понятно" - я же писал выше, чтоб не проводить доки после переноса. Их очень много, проводить все - большая трата времени
18 aleks_default
 
01.08.18
10:04
А нельзя было это реализовать простейшим типовым механизмом даты запрета редактирования?
19 rudnitskij
 
01.08.18
10:15
(18) а кому запрещать редактирование?
20 hhhh
 
01.08.18
10:16
(17) ну прооведение у вас забито в правилах. Смотрите события. Найдите эту строчку и закомментируйте. И всего делов.
21 ам794123
 
01.08.18
10:19
(0) Смотри обработчики событий ПередВыгрузкой и ПослеЗагрузки, там и прописывай свои условия
22 rudnitskij
 
01.08.18
10:23
(21) Пробовал и после загрузки, и при загрузке, и перед загрузкой вот такое:
<code>
    Для Каждого Движ Из Объект.Движения Цикл
        ИмяРег = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Строка(Движ),".")[1];
        СтрокаКоманды = "Объект.Движения." + ИмяРег + ".Записывать = (Объект.Дата >= '20170901000000');";
        Выполнить(СтрокаКоманды);
    КонецЦикла;    
</code>
Движения один хрен переносятся. Может по другому как-то прописать нужно?
23 hhhh
 
01.08.18
10:27
(22) после загрузки данных - пробовал?
24 rudnitskij
 
01.08.18
10:31
(23) да, пробовал. Сейчас еще попробую после загрузки их удалять, надеюсь, хоть удаление сработает...
25 Zombi
 
01.08.18
10:33
(16) Я процитировал из (0) конец сообщения, но у тебя возник вопрос, полностью ли я прочитал этот пост. Это проблемы с логикой.
26 rudnitskij
 
01.08.18
10:35
(25) нет, это у вас проблемы с желанием поговорить и отсутствием собеседников. Если вам нечего сказать по вопросу, кроме "это тупость" - пройдите мимо, сделайте одолжение всем участникам разговора
27 ам794123
 
01.08.18
10:35
(22) Обычно пишут Отказ = Истина при выполнении некоторых условий (например Период > ДатаДедлайна в обработчике события Перед выгрузкой или при выгрузке самого регистра
28 rudnitskij
 
01.08.18
10:45
(27) по существующим правилам обмена, движения документа выгружаются наборами записей вместе с его реквизитами и табличными частями
вот https://ibb.co/fd4dTz
29 scanduta
 
01.08.18
10:48
(1) Документ вообще должен без движений переноситься, а проводиться уже в приемнике.



Такой подход в некоторых ситуациях вообще неприемлем. Так что утверждение неверное.
30 Ботаник Гарден Меран
 
01.08.18
10:51
В (10) уже ответ написан, но ведь продолжают.
31 ам794123
 
01.08.18
10:54
(28) в ТЧ и наборах тоже есть события при выгрузке и после загрузки
32 rudnitskij
 
01.08.18
11:03
(24) "Сейчас еще попробую после загрузки их удалять, надеюсь, хоть удаление сработает..." - удаление движений после загрузки тоже не сработало.
Буду пробовать отказ перед выгрузкой из источника
33 aleks_default
 
01.08.18
11:07
(28)Выгружаются вместе, но это разные объекты данных, и загружаются они не одновременно. И в момент загрузки объекта Документ набор записей его движений может быть как уже загружен, так и еще нет, в зависимости от того в каком порядке они располагаются в файле обмена.
34 hhhh
 
01.08.18
11:07
(32) так ты очисти всё перед тем как тестируешь. А то у тебя результаты старых загрузок наслаиваются на результаты новых.
35 rudnitskij
 
01.08.18
11:08
(33) это многое объясняет, благодарю
36 rudnitskij
 
01.08.18
11:08
(34) очищаю, конечно
37 hhhh
 
01.08.18
11:08
(33) в обработчике ПослеЗагрузкиДанных уже всё загружено.
38 rudnitskij
 
01.08.18
13:50
Всё решилось, надо было просто эти наборы движений не выгружать. В отдельном обработчике ПередВыгрузкой у каждого набора записей прописал:
Отказ = (Источник.Дата < '20170901000000');
И всё заверте...
39 rudnitskij
 
01.08.18
13:50
Отдельное спасибо товарищам (10) и (28), они натолкнули на решение
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший