Перенос периодических реквизитов справочников

   cry_san

11.11.13 — 04:38

Здравствуйте!

Бьюсь уже 2й день, перебрал кучу обработок, но все впустую. Остались только вы.

Вопрос в том как из одной базы перенести в другую справочник так, чтобы перенеслись все периодические реквизиты (их около 20 штук) в полном объеме? В основном реквизиты в справочнике формируются документами. В день может быть до 10 документов. Если переносить обработками или вручную, то берется последний реквизит за день, остальные предыдущие теряются.

Дошел до того, что забил для примера в файл все реквизиты за 1 день. При записи их в новую базу — получаем последний. Стандартная обработка ЗначенияПериодическихРеквизитов показывает только одно значение да данный день, а нужны все.

Условие таково, что нельзя переносить документы, сформировавшие значения периодических реквизитов. Только сами реквизиты.

Надеюсь все правильно объяснил.

Прошу вашей помощи.

  

Партнерская программа EFSOL Oblako

   ДенисЧ

1 — 11.11.13 — 05:05

«реквизиты в справочнике формируются документами»

«нельзя переносить документы, сформировавшие значения периодических реквизитов»

Не взлетит.

   wertyu

2 — 11.11.13 — 05:10

я думаю КД

   cry_san

3 — 11.11.13 — 05:15

(2) Можно расшифровать?

   cry_san

4 — 11.11.13 — 05:15

Нашел еще такую вещь: http://kb.mista.ru/article.php?id=89 только пока не знаю, как она может помочь.

   wertyu

5 — 11.11.13 — 05:16

конвертация данных

   wertyu

6 — 11.11.13 — 05:17

+(5) забыл сказать, что фиктивные аналоги исходных документов должны быть

   cry_san

7 — 11.11.13 — 05:19

То есть решение таково, что придется создать документ без проводок, который только запишет периодический реквизит? Пусть так (чехарда побери), но как обойти в цикле всю периодику справочника включая те, что создали документы?

   ДенисЧ

8 — 11.11.13 — 05:29

(7) объект Периодический тебя спасёт

   cry_san

9 — 11.11.13 — 05:43

(8) Не спасет, вот выгрузка в файл

НачальнаяДата = Дата(«01.01.1960»);

КонечнаяДата = Дата(«01.01.2013»);

Справочник=СоздатьОбъект(«Справочник.ЛицевыеСчета»);

Справочник.НайтиПоНаименованию(Наименование);

Подразделение = Справочник.ТекущийЭлемент();

Справочник.ИспользоватьРодителя(«Подразделение»);

Справочник.ВыбратьЭлементы();

Пока Справочник.ПолучитьЭлемент()=1 Цикл

Если (Справочник.ПометкаУдаления()=0) Тогда

Периодический = СоздатьОбъект(«Периодический»);

Периодический.ИспользоватьОбъект(«», Справочник);

Периодический.ВыбратьЗначения(НачальнаяДата, КонечнаяДата);

Текст = СоздатьОбъект(«Текст»);

Пока Периодический.ПолучитьЗначение() = 1 Цикл

Стр = Строка(Периодический.ДатаЗнач) +»|»+ Строка(Периодический.ТекущийРеквизит()) +»|»+ Строка(Периодический.Значение);

Текст.ДобавитьСтроку(Стр);

КонецЦикла;

Текст.Записать(«d:»+Код+ «.txt»);

КонецЕсли;

КонецЦикла;

выбирает не все реквизиты, толь последний за день

   Rie

10 — 11.11.13 — 05:51

(9) А нескромный вопрос — что в базе-то хранится? 1SCONST (ну, или _1SCONST, ежели SQL) — пробовал непосредственно поглядеть? Может, там и нет никаких «нескольких за день»?

   Rie

11 — 11.11.13 — 05:55

+(10) Для периодических реквизитов время хранится только в том случае, когда значение установлено документом. Поскольку реквизиты устанавливаются документами «в основном», а не «всегда», то картинка может получиться весьма интересной.

   cry_san

12 — 11.11.13 — 05:58

   Rie

13 — 11.11.13 — 06:00

(12) И что тут изображено? Как были получены все эти цифры (и что они означают)?

   big

14 — 11.11.13 — 06:00

(9) не указано имя реквизита в методе ИспользоватьОбъект()

ериодический = СоздатьОбъект(«Периодический»);

Периодический.ИспользоватьОбъект(«АВотТутДолжноБытьИмяРеквизита», Справочник);

Периодический.ВыбратьЗначения(НачальнаяДата, КонечнаяДата);

(10) и чего там увидит ТС? Какие-то непанятные буквы и цифры? ))

   big

15 — 11.11.13 — 06:03

(14) + вдогонку

чтобы выгрузить всё автоматом, надо ещё пройтись по метаданным, чтобы составить перечень перидоческих реквизитов справочника.

   cry_san

16 — 11.11.13 — 06:05

(13) Как были получены? Слева после даты — названия документов. И не все ли равно что они означают — сейчас главное — цифры

   Rie

17 — 11.11.13 — 06:05

(14) Структура 1SCONST — не секрет. Убедится хотя бы в том, что на одну дату у него действительно есть несколько записей (или что только одна запись).

К тому же пока непонятно, как он устаналивает из документа значения этого реквизита. Там ведь тоже варианты возможны.

(9) Кстати, желательно бы выводить ещё и ТекущийДокумент().

   Rie

18 — 11.11.13 — 06:06

(16) Так и какая цифра — периодический реквизит? Или все?

Названия документов — откуда взяты? В (9) ТекущийДокумент() никто не спрашивал ведь.

   big

19 — 11.11.13 — 06:08

(17) 1. О чем ты говоришь? о какой структуре?? ТС не может в трех соснах разобраться, а ты его в ещё дальше в лес загоняешь :)

2. ну, это предмет дальнейших разбирательств

   wertyu

20 — 11.11.13 — 06:09

а куда хоть перенести то надо?

   Rie

21 — 11.11.13 — 06:10

У меня почему-то возникает подозрение, что (раз разрешено ручное изменение периодических реквизитов) после того, как документ установил реквизит — кто-то заходит в справочник и, не задумываясь особо, переустанавает его руками.

   cry_san

22 — 11.11.13 — 06:10

(14) Попробовал, получилось выгрузить. Спасибо за новодку!

   big

23 — 11.11.13 — 06:13

(22) теперь дорабаьыва как указано в (15), используй метод ТекущийДокумент(), узнавай дату номер дока и выгружай. В другой базе будешь документы-пустышки создавать

   wertyu

24 — 11.11.13 — 06:13

(23) а если там не v7?

   cry_san

25 — 11.11.13 — 06:14

(20) В чистую базу.

Вообще такая проблема. Есть основная база, есть база со всеми справочниками, но без документов (но с нужными бух итогами). Нужно в новой базе в справочники занести все данные по реквизитам (включая периодические.)

Аналог: при скрутке базы удаляются документы, и соответственно теряются значения реквизитов — вот этого и нужно избежать

   cry_san

26 — 11.11.13 — 06:16

(24) 1С предприятие 7.7 (7.70.026)

Бухгалтерский учет, редакция 4.2 (7.70.422)

   wertyu

27 — 11.11.13 — 06:19

(25) не удаляются

   big

28 — 11.11.13 — 06:20

тролишь по-тихоньку? :)

(25) Вашпе проблем не вижу. Я надеюсь, что у нужные справочников коды одинаковые? Т.е. по ним можно будет синхронизироваться?

   cry_san

29 — 11.11.13 — 06:24

(28) Я надеюсь, что у нужные справочников коды одинаковые? Да, один в один.

Т.е. по ним можно будет синхронизироваться? Да

   big

30 — 11.11.13 — 06:31

(29) ессно!!

   cry_san

31 — 11.11.13 — 06:34

(30) Вашпе проблем не вижу. — а можете мне раскрыть глаза? В чем именно не видите?

   wertyu

32 — 11.11.13 — 06:40

(31) свёртку делай

   cry_san

33 — 11.11.13 — 06:44

(32) Я ведь говорю. Делается свертка. Все нормально, кроме того, что теряется история периодических реквизитов — она нужна в разрезе (т.е. как было по каждому дню)!

   wertyu

34 — 11.11.13 — 06:45

(33) так сделай исключения в свёртке

   cry_san

35 — 11.11.13 — 06:50

(34) Чхорт. Обработка WRAP.ERT. Где там делать исключение?

   wertyu

36 — 11.11.13 — 06:52

(35) найди где доки удаляются и если они связаны с периодикой просто помечай их на удаление и очищай ТЧ

   wertyu

37 — 11.11.13 — 06:56

+(36) может где ещё и периодика очищается, это тоже несложно найти

   big

38 — 11.11.13 — 08:12

(31) Есть 2 варианта.

1. Используешь УЖЕ имеющуюиеся базы. Т.е. через текстовый файл выгружаешь данные из одной и загружаешь в другую.

2. Ищешь в обработке свертки код, который удаляет историю периодических элементов именно в нужном тебе справочнике и «отключаешь» эту возможность.

ИМХО 2-й способ хуже, т.к. будут переноситься документы, а они будут не пустые. А чтобы была история изменений приодики, надо будет документы провести. А т.к. они непустые, то будут проблемы с остатками и чего там ещё я не знаю. Уж лучше сделать документы-пустышки из первого варианта, чем продумывать логику нейтрализации движений (проводок) ненужных документов.

   wertyu

39 — 11.11.13 — 08:24

(38) в бухии 7.7 движения только по бухучёту, они остатками перенесутся, доки, которые связаны с НДС, ОСами и т.п. остаются, надо только эти добавленные (иначе бы всё свернулось без потерь) исключить

   cry_san

40 — 11.11.13 — 08:27

(38) (39) Спасибо! Буду пробовать.

   1dvd

41 — 11.11.13 — 08:32

Так ли нужна эта периодика? Период же свернут

   cry_san

42 — 11.11.13 — 08:35

(41) Там хранится история оплаты клиента. И на этой периодике завязано много расчетов и отчетов.

   Морозов Александр

43 — 11.11.13 — 08:38

какой ужас… хранить историю платежей в пер. реквизите.

   1dvd

44 — 11.11.13 — 08:40

(43) +1

В общем, сами себе злобные буратины. Периодические реквизиты без привязки к документу хранятся с точностью до Даты (без времени). С привязкой к документу — с точностью до позиции документа

   КонецЦикла

45 — 11.11.13 — 08:40

(43) Могли бы вообще в строке неогр. ддины хранить

   wertyu

46 — 11.11.13 — 08:42

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

   cry_san

47 — 11.11.13 — 09:07

(46) Программировал не я. Если менять способ хранения, то проще создать новую конфигурацию, т.к. на этих реквизитах завязано почти все.

   big

48 — 11.11.13 — 12:20

(42) Акуеть как феерично! )))))

   Classic

49 — 11.11.13 — 12:27

(47)

Жесть

   Ёпрст

50 — 11.11.13 — 12:28

Какие наивные советы..

   Ёпрст

51 — 11.11.13 — 12:28

в части пометки дока на удаление о оставлениия периодики.

   Ёпрст

52 — 11.11.13 — 12:31

аутор, если база в дбф, просто сохрани 1sconst до свёртки и потом его подмени в рабочую после свёртки.

Вся периодика останется (даже с битыми ссылками на доки, если ты их не метишь на удаление, а непосредственно выкашиваешь)

   Classic

53 — 11.11.13 — 12:32

(52)

Апасно

   Ёпрст

54 — 11.11.13 — 12:33

чем ?

Ну можно вообще всю периодику от доков «перевесить» на левый документ.

   1dvd

55 — 11.11.13 — 12:41

(52) А после Выгрузить/Загрузить оно останется?

   1dvd

56 — 11.11.13 — 12:43

(54) +1 Если бы мне было лень разбираться (что скорее всего), то я поступил бы точно также

   Classic

57 — 11.11.13 — 12:45

(55)

Выгрузить/загрузить — то не опасно.

Вот если новая база будет сделана объединением пустой с существующим мдшником — то тогда могут глюки полезть

   Ёпрст

58 — 11.11.13 — 12:56

(55) останется..

   Torquader

59 — 11.11.13 — 21:28

Смотрим в синтаксис-помощнике объект «Периодический» до посинения, пока не станет понятно, как хранятся несколько реквизитов за день, и что это возможно только при наличии ссылки на документ — конечно — если документы переносить не хочется, то сделайте новый документ, который только и будет устанавливать значение периодического реквизита и просто пропишите созданные документы на временной оси.

Вариант 2 — переписать периодический реквизит на подчинённый справочник — тогда можно будет задать не только дату, но и время смены значения причём независимо от других периодических реквизитов.

   Torquader

60 — 11.11.13 — 21:30

P.P.S. можно создавать ссылки на документы (с помощью ЗначениеИзСтрокиВнтур) без создания самого документа.

  

Torquader

61 — 11.11.13 — 21:30

Хранение истории платежей в периодическом реквизите оправдано, только если там хранится текущий долг клиента (так как обычно интересно только последнее значение).

16.05.2017

Видеопример демонстрирует сквозной пример переноса периодических реквизитов справочника 1С 7.7 в периодический регистр сведений 1С 8.2 с использованием конфигурации «Конвертация данных 2». В видеопримере показана последовательность действий по настройке конвертации.

Видеопример демонстрирует сквозной пример переноса периодических реквизитов справочника 1С 7.7 в периодический регистр сведений 1С 8.2 с использование конфигурации «Конвертация данных 2».

В видеопримере показана последовательность действий по настройке конвертации, перечислены некоторые подводные камни (с которыми встретился при переносе лично я).

Записать видеопример меня сподвиг тот факт, что для написания и отладки механизма переноса данных с минимумом знаний использования «КД» у меня ушло немногим более 4 часов, что я считаю очень затратным мероприятием (если честно, то в момент написания и отладки этого механизма у меня неоднократно возникало желание бросить использование механизма с использованием конфигурации КД и написать конвертер для выгрузки данных в промежуточный файл и последующей загрузки из него в конфигурацию-приемник вручную).

Прошу высказывать конструктивные предложения, так как это мой первый опыт создания видеопрезентации и, как мне кажется, «блин близок к кому».

Прошу помощи. Создаю правила для переноса периодического реквизита в регистр сведений. Регистр сведений периодический в пределах секунды, независимый. Измерения: Автомобиль, ВидЗначения. Сделала так: Для каждого ПКС периодического объекта справочника в обработчике ПередВыгрузкой задаю Значение, например для Автомобиля: Значение = Источник.ТекущийЭлемент; ПКС для периода: Если ПустоеЗначение(Источник.Хозяин)<>0 Тогда При загрузке запись регистра затирается последующей записью. Что-то я делаю не так. Подскажите, или может есть пример выгрузки в периодический регистр сведений.

Вставь уже куда-нибудь «ВыгрузитьПоПравилу»

В ПКО Справочника Автомобили — ХарактеристикаАвтомобили — это как раз правило для записи регистра сведений. А куда нужно?

Вам надо выгрузить все изменения периодического реквизита? По вашему коду сейчас получается только одна запись по периоду.

Да, вы правы, выгружается только одна запись. Если бы я сообразила — как сделать все, это было бы прекрасно, но у меня даже одна не хочет по человечески выгружаться. Хозяин автомобиля затирается контрагентом из следующей записи.

В регистре сведений в приемнике помимо измерений, как я подозреваю, есть ресурс, в котором храним значение характеристики автомобиля, так? В данном случае хозяина автомобиля. ПКС по выгрузке ресурса покажите.

1 ВыгрузитьПоПравилу = 1 запись в регистре. Дальше сама

В ПередВызрузкой ПКС ресурса источник пустой, Значение = Источник.Хозяин;

Это я просто по одному ПКС привела пример. Полностью обработчик После выгрузки у справочника Автомобили такой : Или я не так поняла?

Т.е. сейчас значение периода для записи регистра вы подбираете, создавая объект «Периодический» по периодическому реквизиту «Владельцы», и ищете в нем первую запись, но при этом само значение ресурса вы берете из реквизита «Хозяин» (уж не знаю, периодический он или нет). Так и должно быть?

Еще раз: 1 ВыгрузитьПоПравилу = 1 запись. Записей надо несколько. Что же делать, что же делать…

Они дублируются Владельцы-Периодический, А последний владелец записывается в непериодический реквизит Хозяин.Обратный порядок я забыла.Я бы поняла, что в этом косяк,но у меня все остальные измерения тоже затираются. 1 запись, несмотря на то , что измерения разные и реквизиты разные?  Ядумаю, правда, только что -то не получается. Может еще подсказочку, пожалуйста.

вот это вот нужно перетащить в После выгрузки у Справочника Автомобили а затем ?

Что — то совсем запуталась

Если хотите выгрузить все записи по периодическому реквизиту, то: 1) В «После выгрузки» ПКО «Автомобили» создаете объект «Периодический» 2) В цикле по значениям периодического реквизита создаете список значений. В список значений устанавливаете автомобиль, вид значения, период, значение ресурса. Период и значение ресурса соответственно берете из объекта «Периодический». Представления значений СЗ должны соответствовать именам свойств в регистре сведений в приемнике 3) После заполнения СЗ выгружаете его по ВыгрузитьПоПравилу. Т.е. список значений у вас будет источник. 4) В правиле для записи регистра сведений убираете код из «перед выгрузкой» в ПКС, у вас уже все значения подготовлены

Спасибо, убежала пробовать

Не помогло ((( Все равно значение владельца затирается следующим контрагентом.все точно также, только значений несколько. вот код в ПКОАвтомобили После выгрузки Периодический=СоздатьОбъект(«Периодический»); Периодический.ИспользоватьОбъект(«Владельцы»,Источник);

фух, получилось, еще раз огромное спасибо!

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Периодический реквизит справочника

Автор EvgenOrel, 20 фев 2013, 15:26

0 Пользователей и 1 гость просматривают эту тему.

Извиняюсь на вопрос новичка, но никак не могу разобраться. 
Есть список предметов с определенными реквизитами, Логично, что их все можно было бы записать в справочник,если бы не однин регистр которое должно быть периодическим.
В 8-ке, как понял, периодичными могут быть только регистры сведений.
Не могу понять как все это связать между собой — записывать все в регистры? Или как то можно связать  поле справочника с регистром? Или есть какой то другой путь?


Период
Измерение — Ссылка на справочник
Ресурс — значение реквизита

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


В 8 нет периодических реквизитов. Создайте регистр, в нем измерением будет ссылка на ваш справочник, а ресурсом – значение. Периодичность настройте в зависимости от того, как частно значение может меняться.
Далее при записи элемента справочника в форме кодом добавляйте записи в регистр при необходимости.
Как-то так примерно.


Спасибо. В принципе все понятно. Хочу еще немного уточнить. В справочнике так же нужно создавать такой реквизит, причем хранить он будет последнюю запись? А больше интересует вот что — это же вроде стандартная ситуация — какие-то зачения хранить по периоду.  Н-р цены, оклады и тд и тп,как тогда это реализуется правильно? И может я тоже зря все загнал в справочник и есть какой либо другой путь? Хотя бы общие названия для поиска.


Цитата: EvgenOrel от 21 фев 2013, 10:08может я тоже зря все загнал в справочник? Хотя бы общие названия для поиска.

Очень-очень зря. В справочник помещают редко меняющиеся данные. Например — номенклатура, сотрудники, клиенты и т. п.

Цитата: EvgenOrel от 21 фев 2013, 10:08есть какой либо другой путь? Хотя бы общие названия для поиска.

Периодический регистр сведений. Его механизм очень удобен для хранения периодически меняющихся данных — цен, окладов, статусов и т.д.


Понравилась статья? Поделить с друзьями:
  • Планетарий часы работы в новогодние праздники
  • Перенос реквизитов в дополнительные реквизиты
  • Плановый фонд времени работы оборудования это
  • Переоформление вкс с одной компании на другую
  • Пластиковые крылья на газель бизнес установка