Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Планы обмена в 1с 7.7 (число прочтений - 9248 )
novichek
Экс-Участник


Планы обмена в 1с 7.7
20. Октября 2012 :: 04:18
Печать  
Я конечно понимаю что "велосипедостроение весьма занятная штука" Улыбка, но может кому-то интересно...
Началось с того что постоянно возникают задачи типа:
1. выгрузить на сайт измененные позиции номенклатуры, контрагентов, статусы заказов.
2. выгрузить изменения из упр. базы в бухгалтерию.
3. собирать и отправлять н.р. раз в неделю статистику по измененным данным объектов определенного вида.
и т.д. и т.п.

Но самое здесь неприятное - это наличие УРБД.

На текущий момент есть кое-какие мысли как это может функционировать + есть немного наработок в виде работающего прототипа.

Как это выглядит сейчас:
1. база на скл (требование обязательно)
2. в базе 2 справочника: Планы обмена и подчиненный ему Настройки планов обмена. По первому думаю понятно, а второй хранит идентификаторы объектов метаданных, по которым нужно фиксировать изменения для данного плана обмена. Например: создаем план обмена "сайт" и для него указываем что нужно фиксировать изменения элементов справочника Номенклатура и Контрагенты.
3. ПриНачалеРаботыСистемы
  а) проверяется наличие таблицы в которую фиксируются идентификаторы измененных объектов, если такая не существует - она создается.
  б) проверяется, и если нужно - создается хранимка которая в таблицу из а) пишет изменение объекта
  в)на ВСЕ таблицы, которые могут контролироваться вешаются триггеры, проверяющие, если данная таблица включена хотя бы в один из ДЕЙСТВУЮЩИХ (активных в данный момент) планов обмена, то вызывается хранимка б), для фиксации изменеий в а).
   
4) есть несколько методов для: получения идентификаторов измененных объектов (за период, с момента последнего обмена и т.п.),  пометки записей как отработанных (н.р. получили изменения за вчерашний день, выгрузили их на сайт, и у себя пометили что они уже отработанные, чтобы в следующий раз повторно их же не брать).

Все это кое-как оформлено в виде класса.

Так вот. Если у кого-то есть заинтересованность в подобном, есть идеи как сделать инструмент удобнее, можно будет довести до ума вы выложить в общее пользование.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Планы обмена в 1с 7.7
Ответ #1 - 21. Октября 2012 :: 03:58
Печать  
ну так может стоит выложить в общее пользование чтобы было на что посмотреть а не только идею почитать
  
Наверх
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Планы обмена в 1с 7.7
Ответ #2 - 22. Октября 2012 :: 03:26
Печать  
а потом какое-нить сохранение метаданных зашвырнет тебе весь справочник в выгрузку Подмигивание

Но идея не безнадежна.


Справочник-то ладно
А вот журнал документов - куда реальнее и куда страшнее.
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Планы обмена в 1с 7.7
Ответ #3 - 22. Октября 2012 :: 09:57
Печать  
Ну вот, уже отличная мысль Улыбка мне такое в голову как-то не пришло. Обязательно проверю как оно себя поведет. Ведь и правда при реструктуризации 1с может сделать Update всех записей.
Satans Claws: может заодно есть идея как при этом поступить?

Ведь может быть что в таких случаях действительно нужно перевыгружать все, н.р. этого будет требовать логика конкретного обмена.
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Планы обмена в 1с 7.7
Ответ #4 - 22. Октября 2012 :: 10:01
Печать  
leshik писал(а) 21. Октября 2012 :: 03:58:
ну так может стоит выложить в общее пользование чтобы было на что посмотреть а не только идею почитать


Да, так и сделаю. Хочу причесать немного, и отвязаться от справочников. Чтобы просто был класс, чей вызов нужно было бы вставить в "при начале работы".
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Планы обмена в 1с 7.7
Ответ #5 - 22. Октября 2012 :: 10:15
Печать  
Satans Claws писал(а) 22. Октября 2012 :: 03:26:
а потом какое-нить сохранение метаданных зашвырнет тебе весь справочник в выгрузку Подмигивание

Но идея не безнадежна.


Справочник-то ладно
А вот журнал документов - куда реальнее и куда страшнее.


Хотя, стоп. тут другая "засада". При реструктуризации триггер скорее всего будет снесен. И апдейт в этом случае в обмен не попадет, да и фик с ним. Пичалька, если это все пришло с обменом УРБД, и после обновления и реструктуризации базы будут грузиться изменения элементов справочника, документов и т.п., а триггера-то и нету Печаль
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Планы обмена в 1с 7.7
Ответ #6 - 22. Октября 2012 :: 10:22
Печать  
Цитата:
Ну вот, уже отличная мысль Улыбка мне такое в голову как-то не пришло. Обязательно проверю как оно себя поведет. Ведь и правда при реструктуризации 1с может сделать Update всех записей.
Satans Claws: может заодно есть идея как при этом поступить?


Через задницу:
перевести БД в режим обновления
обновиться
перевести БД в рабочий режим


Хотя... если при входе юзера в систему регать в какую-то табличку его SPID
Плюс при регистрации изменении тоже записывать SPID изменщика.
Тогда потом можно игнорировать все изменения, выполненные со СПИДом, не зафиксированным за пользователем.
Только нет никакой гарантии, что конфигуратор не получит СПИД, равный одному из предыдущих сеансов пользователя (при том, что по выходу пользователя надо будет фиксировать выход, "освобождая" СПИД - но и это не даст гарантии, ибо 1Ска временами имеет обыкновение падать на ровном месте).
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Планы обмена в 1с 7.7
Ответ #7 - 23. Октября 2012 :: 03:19
Печать  
Да уж. Все равно как-то не так.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Планы обмена в 1с 7.7
Ответ #8 - 23. Октября 2012 :: 07:17
Печать  
(0) чем тригер плох ?

Точее надо сделать так.
ЦБ не для работы а только для обменов + тригер на ЦБ.
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Планы обмена в 1с 7.7
Ответ #9 - 23. Октября 2012 :: 07:35
Печать  
Z1 писал(а) 23. Октября 2012 :: 07:17:
(0) чем тригер плох ?

Точее надо сделать так.
ЦБ не для работы а только для обменов + тригер на ЦБ.


А кто говорит что "он плох"? Совсем даже наоборот  Подмигивание
  
Наверх
 
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Планы обмена в 1с 7.7
Ответ #10 - 23. Октября 2012 :: 08:43
Печать  
(5) "Хотя, стоп. тут другая "засада". При реструктуризации триггер скорее всего будет снесен" - кто мешает создавать триггер в глобальнике при начале работы системы, если такого триггера нет?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Планы обмена в 1с 7.7
Ответ #11 - 23. Октября 2012 :: 09:14
Печать  
val писал(а) 23. Октября 2012 :: 08:43:
(5) "Хотя, стоп. тут другая "засада". При реструктуризации триггер скорее всего будет снесен" - кто мешает создавать триггер в глобальнике при начале работы системы, если такого триггера нет?

Да не будет тригер снесен.
1с меняет только свои таблицы и хп
  
Наверх
 
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Планы обмена в 1с 7.7
Ответ #12 - 23. Октября 2012 :: 10:26
Печать  
(11) Навскидку несколько вариантов:
- новая база,
- выгрузить - загрузить данные.
Во всех таких случаях определение триггера в глобальнике автоматом решает такие проблемы.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Планы обмена в 1с 7.7
Ответ #13 - 23. Октября 2012 :: 11:47
Печать  
val писал(а) 23. Октября 2012 :: 10:26:
(11)
Во всех таких случаях определение триггера в глобальнике автоматом решает такие проблемы.

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

вся фишка в том что если в базе никто не работает
то "производительность" тригера никому не мешает.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Планы обмена в 1с 7.7
Ответ #14 - 24. Октября 2012 :: 02:31
Печать  
Z1 писал(а) 23. Октября 2012 :: 09:14:
val писал(а) 23. Октября 2012 :: 08:43:
(5) "Хотя, стоп. тут другая "засада". При реструктуризации триггер скорее всего будет снесен" - кто мешает создавать триггер в глобальнике при начале работы системы, если такого триггера нет?

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


Вот в случае _1СЖурн - что-то сомневаюсь. Ибо для нее точно создается таблица _1СЖурн_Нью и делается прочая хурма.
Создаются ли таблицы *_Нью для других объектов - просто не понмю. Скорее всего - да.

Лично я триггеры обновляю каждый раз при монопольном входе в систему + сделал так, чтоб после изменения конфигурации первый вход обязан был быть монопольным.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать