11.11.13 — 04:38
Здравствуйте!
Бьюсь уже 2й день, перебрал кучу обработок, но все впустую. Остались только вы.
Вопрос в том как из одной базы перенести в другую справочник так, чтобы перенеслись все периодические реквизиты (их около 20 штук) в полном объеме? В основном реквизиты в справочнике формируются документами. В день может быть до 10 документов. Если переносить обработками или вручную, то берется последний реквизит за день, остальные предыдущие теряются.
Дошел до того, что забил для примера в файл все реквизиты за 1 день. При записи их в новую базу — получаем последний. Стандартная обработка ЗначенияПериодическихРеквизитов показывает только одно значение да данный день, а нужны все.
Условие таково, что нельзя переносить документы, сформировавшие значения периодических реквизитов. Только сами реквизиты.
Надеюсь все правильно объяснил.
Прошу вашей помощи.
1 — 11.11.13 — 05:05
«реквизиты в справочнике формируются документами»
«нельзя переносить документы, сформировавшие значения периодических реквизитов»
Не взлетит.
2 — 11.11.13 — 05:10
я думаю КД
3 — 11.11.13 — 05:15
(2) Можно расшифровать?
4 — 11.11.13 — 05:15
Нашел еще такую вещь: http://kb.mista.ru/article.php?id=89 только пока не знаю, как она может помочь.
5 — 11.11.13 — 05:16
конвертация данных
6 — 11.11.13 — 05:17
+(5) забыл сказать, что фиктивные аналоги исходных документов должны быть
7 — 11.11.13 — 05:19
То есть решение таково, что придется создать документ без проводок, который только запишет периодический реквизит? Пусть так (чехарда побери), но как обойти в цикле всю периодику справочника включая те, что создали документы?
8 — 11.11.13 — 05:29
(7) объект Периодический тебя спасёт
9 — 11.11.13 — 05:43
(8) Не спасет, вот выгрузка в файл
НачальнаяДата = Дата(«01.01.1960»);
КонечнаяДата = Дата(«01.01.2013»);
Справочник=СоздатьОбъект(«Справочник.ЛицевыеСчета»);
Справочник.НайтиПоНаименованию(Наименование);
Подразделение = Справочник.ТекущийЭлемент();
Справочник.ИспользоватьРодителя(«Подразделение»);
Справочник.ВыбратьЭлементы();
Пока Справочник.ПолучитьЭлемент()=1 Цикл
Если (Справочник.ПометкаУдаления()=0) Тогда
Периодический = СоздатьОбъект(«Периодический»);
Периодический.ИспользоватьОбъект(«», Справочник);
Периодический.ВыбратьЗначения(НачальнаяДата, КонечнаяДата);
Текст = СоздатьОбъект(«Текст»);
Пока Периодический.ПолучитьЗначение() = 1 Цикл
Стр = Строка(Периодический.ДатаЗнач) +»|»+ Строка(Периодический.ТекущийРеквизит()) +»|»+ Строка(Периодический.Значение);
Текст.ДобавитьСтроку(Стр);
КонецЦикла;
Текст.Записать(«d:»+Код+ «.txt»);
КонецЕсли;
КонецЦикла;
выбирает не все реквизиты, толь последний за день
10 — 11.11.13 — 05:51
(9) А нескромный вопрос — что в базе-то хранится? 1SCONST (ну, или _1SCONST, ежели SQL) — пробовал непосредственно поглядеть? Может, там и нет никаких «нескольких за день»?
11 — 11.11.13 — 05:55
+(10) Для периодических реквизитов время хранится только в том случае, когда значение установлено документом. Поскольку реквизиты устанавливаются документами «в основном», а не «всегда», то картинка может получиться весьма интересной.
12 — 11.11.13 — 05:58
13 — 11.11.13 — 06:00
(12) И что тут изображено? Как были получены все эти цифры (и что они означают)?
14 — 11.11.13 — 06:00
(9) не указано имя реквизита в методе ИспользоватьОбъект()
ериодический = СоздатьОбъект(«Периодический»);
Периодический.ИспользоватьОбъект(«АВотТутДолжноБытьИмяРеквизита», Справочник);
Периодический.ВыбратьЗначения(НачальнаяДата, КонечнаяДата);
(10) и чего там увидит ТС? Какие-то непанятные буквы и цифры? ))
15 — 11.11.13 — 06:03
(14) + вдогонку
чтобы выгрузить всё автоматом, надо ещё пройтись по метаданным, чтобы составить перечень перидоческих реквизитов справочника.
16 — 11.11.13 — 06:05
(13) Как были получены? Слева после даты — названия документов. И не все ли равно что они означают — сейчас главное — цифры
17 — 11.11.13 — 06:05
(14) Структура 1SCONST — не секрет. Убедится хотя бы в том, что на одну дату у него действительно есть несколько записей (или что только одна запись).
К тому же пока непонятно, как он устаналивает из документа значения этого реквизита. Там ведь тоже варианты возможны.
(9) Кстати, желательно бы выводить ещё и ТекущийДокумент().
18 — 11.11.13 — 06:06
(16) Так и какая цифра — периодический реквизит? Или все?
Названия документов — откуда взяты? В (9) ТекущийДокумент() никто не спрашивал ведь.
19 — 11.11.13 — 06:08
(17) 1. О чем ты говоришь? о какой структуре?? ТС не может в трех соснах разобраться, а ты его в ещё дальше в лес загоняешь
2. ну, это предмет дальнейших разбирательств
20 — 11.11.13 — 06:09
а куда хоть перенести то надо?
21 — 11.11.13 — 06:10
У меня почему-то возникает подозрение, что (раз разрешено ручное изменение периодических реквизитов) после того, как документ установил реквизит — кто-то заходит в справочник и, не задумываясь особо, переустанавает его руками.
22 — 11.11.13 — 06:10
(14) Попробовал, получилось выгрузить. Спасибо за новодку!
23 — 11.11.13 — 06:13
(22) теперь дорабаьыва как указано в (15), используй метод ТекущийДокумент(), узнавай дату номер дока и выгружай. В другой базе будешь документы-пустышки создавать
24 — 11.11.13 — 06:13
(23) а если там не v7?
25 — 11.11.13 — 06:14
(20) В чистую базу.
Вообще такая проблема. Есть основная база, есть база со всеми справочниками, но без документов (но с нужными бух итогами). Нужно в новой базе в справочники занести все данные по реквизитам (включая периодические.)
Аналог: при скрутке базы удаляются документы, и соответственно теряются значения реквизитов — вот этого и нужно избежать
26 — 11.11.13 — 06:16
(24) 1С предприятие 7.7 (7.70.026)
Бухгалтерский учет, редакция 4.2 (7.70.422)
27 — 11.11.13 — 06:19
(25) не удаляются
28 — 11.11.13 — 06:20
тролишь по-тихоньку?
(25) Вашпе проблем не вижу. Я надеюсь, что у нужные справочников коды одинаковые? Т.е. по ним можно будет синхронизироваться?
29 — 11.11.13 — 06:24
(28) Я надеюсь, что у нужные справочников коды одинаковые? Да, один в один.
Т.е. по ним можно будет синхронизироваться? Да
30 — 11.11.13 — 06:31
(29) ессно!!
31 — 11.11.13 — 06:34
(30) Вашпе проблем не вижу. — а можете мне раскрыть глаза? В чем именно не видите?
32 — 11.11.13 — 06:40
(31) свёртку делай
33 — 11.11.13 — 06:44
(32) Я ведь говорю. Делается свертка. Все нормально, кроме того, что теряется история периодических реквизитов — она нужна в разрезе (т.е. как было по каждому дню)!
34 — 11.11.13 — 06:45
(33) так сделай исключения в свёртке
35 — 11.11.13 — 06:50
(34) Чхорт. Обработка WRAP.ERT. Где там делать исключение?
36 — 11.11.13 — 06:52
(35) найди где доки удаляются и если они связаны с периодикой просто помечай их на удаление и очищай ТЧ
37 — 11.11.13 — 06:56
+(36) может где ещё и периодика очищается, это тоже несложно найти
38 — 11.11.13 — 08:12
(31) Есть 2 варианта.
1. Используешь УЖЕ имеющуюиеся базы. Т.е. через текстовый файл выгружаешь данные из одной и загружаешь в другую.
2. Ищешь в обработке свертки код, который удаляет историю периодических элементов именно в нужном тебе справочнике и «отключаешь» эту возможность.
ИМХО 2-й способ хуже, т.к. будут переноситься документы, а они будут не пустые. А чтобы была история изменений приодики, надо будет документы провести. А т.к. они непустые, то будут проблемы с остатками и чего там ещё я не знаю. Уж лучше сделать документы-пустышки из первого варианта, чем продумывать логику нейтрализации движений (проводок) ненужных документов.
39 — 11.11.13 — 08:24
(38) в бухии 7.7 движения только по бухучёту, они остатками перенесутся, доки, которые связаны с НДС, ОСами и т.п. остаются, надо только эти добавленные (иначе бы всё свернулось без потерь) исключить
40 — 11.11.13 — 08:27
(38) (39) Спасибо! Буду пробовать.
41 — 11.11.13 — 08:32
Так ли нужна эта периодика? Период же свернут
42 — 11.11.13 — 08:35
(41) Там хранится история оплаты клиента. И на этой периодике завязано много расчетов и отчетов.
43 — 11.11.13 — 08:38
какой ужас… хранить историю платежей в пер. реквизите.
44 — 11.11.13 — 08:40
(43) +1
В общем, сами себе злобные буратины. Периодические реквизиты без привязки к документу хранятся с точностью до Даты (без времени). С привязкой к документу — с точностью до позиции документа
45 — 11.11.13 — 08:40
(43) Могли бы вообще в строке неогр. ддины хранить
46 — 11.11.13 — 08:42
хех, рекомендую поменять способ хранения данных, т.к. и ситуация подвернулась
47 — 11.11.13 — 09:07
(46) Программировал не я. Если менять способ хранения, то проще создать новую конфигурацию, т.к. на этих реквизитах завязано почти все.
48 — 11.11.13 — 12:20
(42) Акуеть как феерично! )))))
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 до свёртки и потом его подмени в рабочую после свёртки.
Вся периодика останется (даже с битыми ссылками на доки, если ты их не метишь на удаление, а непосредственно выкашиваешь)
53 — 11.11.13 — 12:32
(52)
Апасно
54 — 11.11.13 — 12:33
чем ?
Ну можно вообще всю периодику от доков «перевесить» на левый документ.
55 — 11.11.13 — 12:41
(52) А после Выгрузить/Загрузить оно останется?
56 — 11.11.13 — 12:43
(54) +1 Если бы мне было лень разбираться (что скорее всего), то я поступил бы точно также
57 — 11.11.13 — 12:45
(55)
Выгрузить/загрузить — то не опасно.
Вот если новая база будет сделана объединением пустой с существующим мдшником — то тогда могут глюки полезть
58 — 11.11.13 — 12:56
(55) останется..
59 — 11.11.13 — 21:28
Смотрим в синтаксис-помощнике объект «Периодический» до посинения, пока не станет понятно, как хранятся несколько реквизитов за день, и что это возможно только при наличии ссылки на документ — конечно — если документы переносить не хочется, то сделайте новый документ, который только и будет устанавливать значение периодического реквизита и просто пропишите созданные документы на временной оси.
Вариант 2 — переписать периодический реквизит на подчинённый справочник — тогда можно будет задать не только дату, но и время смены значения причём независимо от других периодических реквизитов.
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есть какой либо другой путь? Хотя бы общие названия для поиска.
Периодический регистр сведений. Его механизм очень удобен для хранения периодически меняющихся данных — цен, окладов, статусов и т.д.