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