|
Пара вопросов про планы обмена. | ☑ | ||
---|---|---|---|---|
0
1CSharp
26.02.19
✎
18:48
|
Есть база скуля, и туда нужно выгружать изменную номенклатуру с ценой. Номенклатура регистрируется автоматом.
1. В какой момент регистририровать номенклатуру при изменении цены? Подписка на проведение документа установки цен? 2. Как правильно выбрать все изменения, обработать их, и потом очистить? Правильно ли понимаю, что процесс такой: а. Заблокировать узел б. ВыбратьИзменения в. УдалитьРегистрацию г. Разблокировать узел? |
|||
1
palsergeich
26.02.19
✎
19:23
|
(0) а зачем узел блокировать?
Во вторых ВыбратьИзменерия (если платформенный метод) - на больших выборках лучше не использовать, а делать это запросом (где номерСообщения is null) |
|||
2
1CSharp
26.02.19
✎
19:44
|
(1) Вот тоже смотрю в сторону запроса.
Но не понял, как поменять номер сообщения. Пишет, что поле недоступно для записи |
|||
3
vde69
26.02.19
✎
19:46
|
кто мешает воспользоватся штатной обработкой?
|
|||
4
palsergeich
26.02.19
✎
19:52
|
(2) ВыбратьИзменения, но 3ий параметр - конкретная ссылка, тогда для этой ссылке на этом узле установится номер сообщения, заданный в 2м параметре.
Поссылочный вариант - лучше |
|||
5
1CSharp
26.02.19
✎
19:56
|
(2) Мой косяк был.
(4) Всё же не пойму оптимальный вариант. Выбираем запросом (#1), где NULL, обрабатываем, вызываем ВыбратьИзменения на эту ссылку (#2). Но что если между 1 и 2, это номенклатура ещё раз поменяется? |
|||
6
palsergeich
26.02.19
✎
19:59
|
(5) между 1 и концом 2 можно установить управляемую блокировку.
Но у тебя будет заблокировано только то что надо, а не вся таблица изменений. То есть те данные которые в обмене не участвуют - с ними можно будет работать |
|||
7
1CSharp
26.02.19
✎
20:01
|
(6) На каждую ссылку блокировку делать?
Вариант, конечно. Ну либо можно узел заблокировать) Ща попробую с управляемой блокировкой, смс за мысль |
|||
8
1CSharp
26.02.19
✎
20:03
|
Так, а что блокировать то? Таблицу изменений?
"Справочник.Проекты.Изменения"? |
|||
9
palsergeich
26.02.19
✎
20:03
|
(7) На узел не надо - смысла нет.
Ты получаешь массив измененных объектов и на него накладываешь блокировку, сразу скопом. См ИспользоватьИзИсточникаДанных. |
|||
10
palsergeich
26.02.19
✎
20:04
|
(8) На Сам справочник.
Те объекты, которые сейчас выгружаются их можно будет прочитать, но нельзя записать до конца транзакции. Те, которые не участвуют можно и читать и записывать |
|||
11
1CSharp
26.02.19
✎
20:05
|
(10) Так я же ещё цену выгружаю. Таблицу изменений можно заблокировать? Ща попробую
|
|||
12
1CSharp
26.02.19
✎
20:06
|
Если нет, то узел придётся
|
|||
13
palsergeich
26.02.19
✎
20:07
|
(12) Но цена это же регистр сведений цены чего то там.
Тебе в любом случае 2 таблицы блочить |
|||
14
palsergeich
26.02.19
✎
20:07
|
Или реальные или изменений
|
|||
15
palsergeich
26.02.19
✎
20:08
|
Но блокировка на реальные она будет меньше чем на изменения по узлу
|
|||
16
1CSharp
26.02.19
✎
20:08
|
(13) Так я при проведении установки цен буде регистрировать просто изменения номенклатуры. И если таблица измениний номенклатуры будет залочена, то всё будет гуд - цены не проведутся.
|
|||
17
1CSharp
26.02.19
✎
20:09
|
Ну либо дождутся окончания блокировки
|
|||
18
palsergeich
26.02.19
✎
20:10
|
(16) Я тебе в общем направление дал, дальше думай сам.
|
|||
19
1CSharp
26.02.19
✎
20:37
|
(18) Да, направление хорошее, спасибо.
Но есть проблемка) Да... Мне потребовалось минут двадцать, чтобы понять, что блокировки без транзакции не работают xD |
|||
20
palsergeich
26.02.19
✎
20:38
|
(19) Вот ты и немного прокачался.
|
|||
21
1CSharp
26.02.19
✎
20:39
|
(20) Ага, прям как три года назад, когда спеца по платформе сдал xD
Ща посмотрим, можно ли на таблицу изменений блокировку наложить... |
|||
22
1CSharp
26.02.19
✎
20:42
|
Похоже, можна. Круть
Побольше бы таких адекватных людей на форуме) Спасибо ещё раз! |
|||
23
palsergeich
26.02.19
✎
20:43
|
(21) Можно
|
|||
24
1CSharp
26.02.19
✎
21:18
|
Не, мой план не сработал :'(
Если блокировать таблице изменений
Регистрация проходит без проблем:
Таки, придётся кодить... |
|||
25
hhhh
26.02.19
✎
21:29
|
(24) номенклатуру грузите отдельно цены отдельно. Не надо при каждом чихе весь справочник номенклатуры фигачить. Один раз выгрузили и достаточно. Дальше только конкретные элементы, которые изменились. Изменился элемент, регистрируйте его при записи к обмену.
то есть при выгрузки цен выгружать номенклатуру не нужно. |
|||
26
palsergeich
26.02.19
✎
21:33
|
(24) У меня работает
|
|||
27
palsergeich
26.02.19
✎
21:38
|
(24) Я кажется понял в чем дело.
|
|||
28
palsergeich
26.02.19
✎
22:10
|
ЗарегестрироватьИзменения и УдалитьИзменения не вешают управляемую блокировку, а сразу идут в скуль
|
|||
29
palsergeich
26.02.19
✎
22:11
|
Если сделать так
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый); Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить(); ЭлементБлокировки.Область = "Справочник.номенклатура.Изменения"; Сообщить("Справочник.номенклатура.Изменения"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; Ссыль = Справочники.Номенклатура.НайтиПоКоду("00000073078"); Сообщить(строка(Ссыль)+" "+строка(ТекущаяДата())); ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссыль); Блокировка.Заблокировать(); Сообщить("Блок: "+ТекущаяДата()); ТекДата = ТекущаяДата(); Пока ТекущаяДата() - ТекДата < 30 Цикл Продолжить; КонецЦикла; Сообщить("Готово: "+ТекущаяДата()); И в это время записать справочник то видно что идет ожидание на блокировке и записть по повешенной упр блокировке в ТЖ по таблице изменений есть |
|||
30
palsergeich
26.02.19
✎
22:12
|
а эти 2 метода ЗарегестрироватьИзменения и УдалитьИзменения в ТЖ по упр блокировкам не оставляют следов.
|
|||
31
1CSharp
27.02.19
✎
17:57
|
(30) Ну тогда и цены буду блокировать
Спасибо за инфу! |
|||
32
breezee
28.02.19
✎
05:03
|
Во-первых прочитайте про конвертацию данных 2.
Во-вторых, зачем вам блокировка? В-третиьх, если есть уже какой-то обмен - посмотрите как он реализован ВЫ сейчас какой-то велосипед нагородите, а потом с ним кто-то будет ****ься |
|||
33
1CSharp
28.02.19
✎
12:01
|
(32)
При чем тут вообще конвертация? Во-вторых, чтобы не пропустить изменений, это должно быть очевидно. В-третьих, как раз таки нет. Лучше написать свой простенький велосипед, чем использовать чужой потрепанный движок V8. Велосипед получился максимально простым. |
|||
34
Serg_1960
28.02.19
✎
12:18
|
(33) Вы из своего детского самоката быстро вырастите. Пара/тройка обновлений - и у него круглые колеса быстро станут квадратными. Впрочем мне нет никого дела до ваших граблей - прыгайте :)
|
|||
35
rsv
28.02.19
✎
12:48
|
(0) можно этот огород не городить..при условии что 1с ка на скуле...( откуда едет номенклатура ). Из базы скуля приемника (я так понял не 1с) запрос на джобе на сравнение данных в двух базах и результат insert или update .
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |