gifts2017

Универсальная свертка итогов оперативного учета и двигатель регистров

Опубликовал Poppy (poppy) в раздел Обработки - Свертка базы

Универсальная свертка информационной базы, работающей на компоненте "Оперативный учет". И универсальный двигатель регистров.

В свою конфигурацию добавляем документ "ДвижениеРегистра" из файла 1cv7.md
Свертка базы происходит обработкой Свертка.ert. Работает на любых конфигурациях.

Документ "ДвижениеРегистра" так же можно использовать для создания специфических движений регистров, если их нельзя выполнить типовыми документами.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Свертка базы от 1.02.08
.1201896523 13,17Kb
27.02.13
1370
.1201896523 13,17Kb 1370 Скачать
Не скачативать!
.1176408525 13,57Kb
27.02.13
586
.1176408525 13,57Kb 586 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. skon (skonto) 13.04.07 07:54
Поясните комментарий при попытке скачивания "Только спецагенты автоматизации могут скачивать этот файл"
2. Доржи Цыденов (support) 13.04.07 08:44
:) это наше сообщение, сейчас исправим.
Это значит, что автор разработки поставил ограничение на скачивание файла, и его могут скачать только те, кто разместил на портале свою разработку, и она получила рейтинг не меньше 3.
3. Viacht (viacht) 13.04.07 11:10
Этот файл могут скачивать только те, кто добавил свою программу или статью, и набрал рейтинг выше 3 баллов. Фигня такая вот выскакивает. Кто скачал - поделитесь.
4. Александр (sashulyT) 13.04.07 11:32
Мне кажется надо более подробно описание написать :)
5. Валерий (KOCMOC™) 13.04.07 11:55
6. Poppy (poppy) 13.04.07 12:31
Снижено требования к скачиванию. Теперь могут скачивать зарегистрированные пользователи.
7. _toro_ 14.04.07 04:40
8. Poppy (poppy) 15.04.07 23:15
Ничего нового в идее нет. Это скорее классика...
9. Сhe Burashka (CheBurator) 30.07.07 17:25
Бяка.
Я так понимаю, что документы до даты свертки удаляются...?
Очистка периодики до даты свертки...?
Есть тонкости в задании например кред.документа для регстра Взаиморасчеты...
10. Сhe Burashka (CheBurator) 30.07.07 18:52
Что плохо:
- навскидку не удалось открыть документ в режиме редактирования.
- хорошо бы для измерений, которые являются, подчиненными справочникам - светить текстовую колонку Владельца.
- а почему ограничились 10 измерениями - вдруг у меня - 11?
итого - бяка...
Есть более красивое решение по универсальному двигателю регистров
картинки здесь:
http://infostart.ru/file.php?0,file=377
http://infostart.ru/file.php?0,file=378
http://infostart.ru/file.php?0,file=379
..
по хорошему, конечно, надо было бы влепить -1... за выбранный вариант инструментария, а так, конечно - гуд...
11. Сhe Burashka (CheBurator) 30.07.07 19:04
в итоге: пришлось "откатиться" к штатной свертке...
если ячего не так сдела/понял - просьба меня поюзать...
12. Сhe Burashka (CheBurator) 30.07.07 20:32
Нет, все-таки возвернулся...
+1
За простоту и эффективность!
13. Сhe Burashka (CheBurator) 30.07.07 20:38
Единственное - немного бы ускорил процесс за счет определения первого созданного документа свертки - по определению алгоритма - он лежит в конце дня после сворачиваемых документов, и выборку документов для удаления делал бы ДО ЭТОГО ДОКУМНТА, избежав на каждый удаляемы документ "СЗ.НайтиЗначение"
14. Сhe Burashka (CheBurator) 31.07.07 01:09
Процесс немного ускорил, как описал ниже.
+ еще одна бяка: _отображаются_ суммы в документе для ПартииНаличие и Взаиморасчетов покупателей/поставщиков - почему-то без десятичных разрядов (именно отображаются, так как в регистр пишется все что надо)
15. Сhe Burashka (CheBurator) 31.07.07 01:17
При этом Банк и Касса - ресурсы показываются как надо - с десятичными разрядами...
Что скажет автор?
16. Сhe Burashka (CheBurator) 31.07.07 01:28
Где-то автор накосячила с процедурой ПриВыбореРегистра()
Если открывается существующий документ - где происходит назначение типов неопределенным реквизитам ТЧ?
и попутный вопрос: назначение типа происходит для всего столбца ТЧ дока или только для текущей строки...?
А?
17. Сhe Burashka (CheBurator) 31.07.07 01:29
Да.. обработка требует доработки не надфилем - а драчовым напильником...
18. Poppy (poppy) 01.08.07 01:00
(16) Где-то автор накосячила с процедурой ПриВыбореРегистра()

В чем конкретно накосячено?
Назначение происходит при вводе новой строки...
19. Poppy (poppy) 01.08.07 01:01
(14) и (15)
Ничего не скажу...
Описанная ситуация не воспроизводится.
20. Poppy (poppy) 01.08.07 02:17
(10)
> навскидку не удалось открыть документ в режиме редактирования.
В каком случае?

> хорошо бы для измерений, которые являются, подчиненными справочникам - светить текстовую колонку Владельца.

записано как пожелание (© 1С) ;)

> а почему ограничились 10 измерениями - вдруг у меня - 11?

В этом есть некий элемент неуниверсальности. Более универсальное решение http://infostart.ru/file.php?0,file=377

Но, в рамках решаемой задачи:
- для моего решения проще заполнять документ остатками. Всего три строчки кода:
Код
      Табл = СоздатьОбъект("ТаблицаЗначений");
      Запрос.Выгрузить(Табл, 1, 0);
      Док.ЗагрузитьТабличнуюЧасть(Табл);
Показать полностью

- любой программист может легко увеличить рассматриваемое ограничение;
- более десяти измерений = это скорее нонсенс, чем правило.
21. Poppy (poppy) 01.08.07 02:24
(9)
> Я так понимаю, что документы до даты свертки удаляются...?

Помечаются на удаление

> Очистка периодики до даты свертки...?

Нет. Надо бы добавить.
Но в типовых решениях на ОУ редко используются периодические реквизиты, устанавливаемые документами. В этом случае, периодику можно "почистить" другими средствами.

> Есть тонкости в задании например кред.документа для регстра Взаиморасчеты...

Напиши подробнее.
markinleha; +1 Ответить
22. Сhe Burashka (CheBurator) 01.08.07 05:00
(18) Открываем документ ссуществующими строками.
Вопрос: где происходит назначение формата реквизитов-колонок?
23. Сhe Burashka (CheBurator) 01.08.07 05:04
> > Есть тонкости в задании например кред.документа для регстра Взаиморасчеты...
это из области "доводки", но тем не менее - сворачиваю ОУ, мне не нужны расчеты с клиентами в разрезе кредитных доков (забъем на них!) - просто запишем долг. В этом случае - при проведении дока в измерение кредитного дока будет затолкнуто "пустое" значение - в принципе можно и так, но это считается некомильфово - в типовой Тис в этом случае - в качестве кридитного дока пишется сам документ ввода остатков.
..
ща "куклу" по свертке доделаю - выложу для Типовой Тис с уточнениями, периодикой и прочей шнягой такой как полное удаление истории доков до свертки.
24. Сhe Burashka (CheBurator) 01.08.07 05:07
Еще бяка: не проводится контроль ссылочной целостности.
как пример: возврат покупателю введен на основании реализации с интервалом в полгода. Где-то на этом интервале делаем свертку. В результате - в возврате будет бяка на суммах себестоимости "возвращаемой партии" - так как партия помечена на удаление...
25. Poppy (poppy) 03.08.07 01:47
(22)
Вот код:
Код
Процедура ПриРедактированииНовойСтроки()
   Для ии = 1 по Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение() Цикл
      Тип = Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение(ии).Тип;
      Вид = Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение(ии).Вид;
      Тип = Тип + ?(ПустоеЗначение(Вид) = 1, "", "." + Вид);
      Форма.ПолучитьАтрибут("Измерение" + ии).НазначитьТип(Тип, Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение(ии).Длина, Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение(ии).Точность);
      Форма.ПолучитьАтрибут("Измерение" + ии).Доступность(1);
   КонецЦикла;
   Для ии = 1 по Метаданные.Регистр(СокрЛП(НаимРегистра)).Ресурс() Цикл
      Форма.ПолучитьАтрибут("Ресурс" + ии).НазначитьТип("Число", Метаданные.Регистр(СокрЛП(НаимРегистра)).Ресурс(ии).Длина, Метаданные.Регистр(СокрЛП(НаимРегистра)).Ресурс(ии).Точность);
      Форма.ПолучитьАтрибут("Ресурс" + ии).Доступность(1);
   КонецЦикла;
КонецПроцедуры
Показать полностью
26. Poppy (poppy) 03.08.07 02:06
(23) >это из области "доводки", но тем не менее - сворачиваю ОУ, мне не нужны расчеты с клиентами в разрезе кредитных доков (забъем на них!)

В результате действий моей обработки регистры остаются в неизменном виде. Поэтому она и называется "Универсальная...".

С другой стороны в обработке есть код:
Код
// Здесь можно указать измерения регистров, по которым детализация в новом периоде не нужна
Если "Регистр.ПартииТоваров.ПрихДокумент" = "Регистр."+Метаданные.Регистр(и2).Идентификатор+"."+Метаданные.Регистр(и2).Измерение(ии).Идентификатор Тогда
   Продолжить;
КонецЕсли;
Показать полностью


Таких конструкций ЕСЛИ может быть несколько. В каждой из них нужно указать регистр+измерение, значения которых не нужны для дальнейшего учета. Вместо них будут пустые значения.

В качестве развития функционала можно рассматривать следующее.
Пользователь может редактировать список регистр+измерение интерактивно. Плюс назначать значения по-умолчанию.
27. Poppy (poppy) 03.08.07 02:08
(23) >ща "куклу" по свертке доделаю - выложу для Типовой Тис с уточнениями, периодикой и прочей шнягой такой как полное удаление истории доков до свертки.

ИМХО тоже самое делает типовая свертка ТиС. Чем она тебя не устраивает?
28. Poppy (poppy) 03.08.07 02:15
(24) > В результате - в возврате будет бяка на суммах себестоимости "возвращаемой партии" - так как партия помечена на удаление...

Во-первых, рассматриваемая обработка не помечает справочники на удаление.
Во-вторых, если элемент справочника помечается на удаление, это не значит, что должны измениться остатки в регистрах.
В-третих, документ "Возврат от покупателя", для расчета себестоимости, использует значения регистра(ов). Как было сказано в (26) регистры не меняются (имеется в виду от даты сверткти+1 и далее) значит действия документа также не изменятся.

ИМХО ты что-то путаешь.
29. Сhe Burashka (CheBurator) 07.08.07 15:50
Сам ты путаешь. Если док-основание возврата от покупателя помечен на удаление - отсутвуют итоги по его партии. себестоимость возвратов тянуть неоткуда...
30. Poppy (poppy) 09.08.07 23:27
(29)
Док-основание возврата от покупателя - это, как правило, Реализация. Что такое "отсутвуют итоги по его партии" применительно к документу Реализация - не пойму.

Другое дело, что документ возврата от покупателя, введенный на основании реализации, при своем проведении, использует движения документа-основания. Суть свертки в том, что-бы избавиться от движений документов прошлых периодов.
В глобальном модуле есть процедура глВыяснитьПартииВозврата(), где определяется себестоимость возвращаемых партий. Там есть условие:
Код
   Если (ТекДок.ДокОснование.Выбран()=1) и (Свернут=0) Тогда
Показать полностью

Что-бы "избавиться" от зависимости возврата от движений основания достаточно установить реквизит ФлагСвертки документа-основания, если он имеется, в единицу . Или очистить реквизит ДокОснование самого документа. При этом, партии и их себестоимость нужно перенести в табличную часть документа-возврата. Естественно, нужно учитывать текущее состояние ГП.

Считаю, что такой алгоритм "пихать" в универсальную обработку = неразумно. Как вариант, можно написать отдельную обработку, которая "подготавливала" бы базу к свертке. Естественно, эта обработка должна быть "заточена" под конкретную базу. Эту обработку заставлять запускать пользователя или подключать ее как плагин.
31. Сhe Burashka (CheBurator) 07.09.07 00:44
> Как вариант, можно написать отдельную обработку, которая "подготавливала" бы базу к свертке. Естественно, эта обработка должна быть "заточена" под конкретную базу.
..угум, так и подточил в некоторых местах...
32. Mihenius (mihenius) 15.09.07 12:54
33. Сhe Burashka (CheBurator) 19.01.08 23:02
На основе эксплуатации выявлен еще ряд неприятных багов, в первую очередь связанных с работой с измерением, которе задается числом: например: ЦенаПрод в ОстаткахТМЦ и ПартияхНаличие - отображаются на форме докамкриво после открытия дока и манипуляции с ним - дробные части ек...
34. Сhe Burashka (CheBurator) 19.01.08 23:46
например, в доке записано цена продажи = 23.80
на форме !!отражается!! целочисленное значение - при проведении - записывается верный результат...
где коссяк в отображении - навскидку не нашел...
35. Poppy (poppy) 20.01.08 03:56
(33, 34)
Имеется косяк в том, что реквизиты табличной части документа неопределнного типа, которым назначен тип число отображаются выравненными влево, но редактируются выравненными вправо.
Такое поведение считаю фичей платформы.

Отображение только целочисленной части числа не замечено. Возможно, это связано с особенностями конкретного релиза платформы (я использую 25-й) или использованием внешних компонент (я не использую).
36. Poppy (poppy) 01.02.08 23:38
Были нарекания при свертке больших баз.
В версии от 1.02.08 количество строк в создаваемых документах ограничено тысячей.
37. Сhe Burashka (CheBurator) 02.02.08 03:04
(35) скинуть базу (урежу до минимума с траблой)?
39. Вадим 1С911.BY (Вадимко) 05.07.08 02:34
А почему используешь запрос а не выгрузить итоги? :)
40. Poppy (poppy) 05.07.08 16:17
(39)
От этого что-то изменится?
41. Вадим 1С911.BY (Вадимко) 08.07.08 17:57
(40) Скорость :)
Если там будет 5-6 группировок... по пухлому регистру...
Нехорошо конечно пиарить, но посмотри мою обработочку для SQL
42. Вадим 1С911.BY (Вадимко) 08.07.08 17:58
43. Вадим 1С911.BY (Вадимко) 08.07.08 17:58
44. Poppy (poppy) 13.07.08 03:12
(41)
2Вадимко
В моей обработке упор сделан на универсальность и простоту кода.
Неоспоримым преимуществом является неиспользование ВК.
45. Епрст (Ёпрст) 12.01.09 14:01
Жалко что вариант не совсем рабочий :(
Как и у всех создателей при работе с метаданными есть одна и та же типичная ошибка.
46. Страпот (Bobak) 12.01.09 14:05
47. Епрст (Ёпрст) 12.01.09 14:16
(46) Древняя :)
Для измерений/Реквизитов неопределенного типа будет дырка от бублика...

тип надобно изначально назначить...
48. Poppy (poppy) 13.01.09 10:38
(47) Пожелание принято. Списибо.
49. Епрст (Ёпрст) 13.01.09 10:42
(48) та не за что, такая же ошибка почти во всех обработках, где копируются реквизиты документов в обход метаданных... все как-то забывают про неопределенный тип данных...потом долго удивляются отсутствием данных:)
50. Константин Исиченко (IsiKosta) 21.02.09 09:50
Хорошее и простое решение.
Однако можно добавить:
1) в монопольном режиме работает быстрее, поэтому выдать предупреждение о запуске в разделенном режиме, для того чтобы пользователь перезашел;
2) проверить наличие документа для свертки;
3) при запуске задать дату свертки (например начало текущего года).
51. Poppy (poppy) 05.03.09 22:19
52. Alexey Markin (markinleha) 12.08.09 13:01
Все понравилось, только поставил удаление документов в транзакцию и добавил пару галок на форму, "свернуть регистры" и "удалить документы", чтобы запускать нужное мне дйствие, ибо метит долго и делает это сразу, быстрее свернуть регистры прибить таблицы движений и потом пометить на удаление.
53. rm123 rm123 (rm123) 28.12.09 10:33
Производство+Услуги+Бухгалтерия, редакция 2.8 свернет
54. Poppy (poppy) 28.12.09 16:35
(53) Свернет. Но остатки будут только в регистрах.
55. rm123 rm123 (rm123) 28.12.09 18:03
по счетам надо будет ручками остатки вводить?
как бы его скачать получить?
56. Михаил (Mixa45) 17.01.10 11:26
Я свернул 1С Предприниматель 7.7. Документы помеченные на удаление не удаляются, т.к. ссылаются на созданные регистры. Кто знает что делать?
57. Lucifer_i 24.02.10 09:46
Можно чуток ускорить, если в цикле использовать не "Сообщить()", а "Состояние()". Т.к. "Сообщить()" работает до ужаса медленно. :)
58. Andre_ultra (Andre_ultra) 21.11.11 07:16
Спасибо - это в данном случае не то слово. Вам жмут руки огромное число пользователей. Добавил только перенос старых документов по ссылкам из удаляемого периода. Это нужно для того, чтобы база осталась полностью перепроводимой.
59. Energen Energen (Energen) 26.11.11 11:25
Помогло при свертке базы данных "Торговля и Склад" 9.х, у которой был критический размер файла регистра расчетов с покупателями. Все вроде бы неплохо, но для моей БД, размер которой был около 4 гигабайт, таблицы получились до 40 000 записей, соответственно документ "Двигатель регистров" работает очень не быстро, даже при наличии внешней компоненты. Свертку делал на своем ноутбуке с RAID0 на SSD дисках, т.к. на сервере с двумя Xeon и RAID10 на шести HDD получалось гораздо дольше...
Автору огромное спасибо!!!
60. Vital Grushkin (nkvg_a) 20.12.11 09:23
Спасибо! и ваша обработка сгодилась для свертки комплексной с базой в 3 г
61. Лобов Максим (corsar4ik) 21.12.11 07:03
Поплыли остатки по счетам в комплексной 512.
62. mimos 26.12.11 13:58
Свернул базу Тис размером в 8г -0 теперь размером в 2 гига. Всё нормально, только жалко партии на документ движения не перенеслись. поэтому старые документы удалить не получается. Свернулось всё быстренько и аккуратненько.
63. Язва Жопы (Sergafan10) 27.04.12 20:36
Подскажите пожалуйста, можно ли исправить Вашим документом несписанную (задним числом!) себестоимость, которая возникает при ругани "Не распределилось по партиям..." (пустые партии продают) ???
64. Lochness ЛохНесс (ЛохНесс) 14.05.12 00:36
65. Николай С (niko11s) 08.10.12 11:15
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа