IE 2017

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

Обработки - Свертка базы

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

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

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

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

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

См. также

Комментарии
1. skon (skonto) 13.04.07 07:54 Сейчас в теме
Поясните комментарий при попытке скачивания "Только спецагенты автоматизации могут скачивать этот файл"
2. Доржи Цыденов (support) 4527 13.04.07 08:44 Сейчас в теме
:) это наше сообщение, сейчас исправим.
Это значит, что автор разработки поставил ограничение на скачивание файла, и его могут скачать только те, кто разместил на портале свою разработку, и она получила рейтинг не меньше 3.
3. Viacht (viacht) 13.04.07 11:10 Сейчас в теме
Этот файл могут скачивать только те, кто добавил свою программу или статью, и набрал рейтинг выше 3 баллов. Фигня такая вот выскакивает. Кто скачал - поделитесь.
4. Александр (sashulyT) 199 13.04.07 11:32 Сейчас в теме
Мне кажется надо более подробно описание написать :)
5. Валерий (KOCMOC™) 116 13.04.07 11:55 Сейчас в теме
6. Poppy (poppy) 3317 13.04.07 12:31 Сейчас в теме
Снижено требования к скачиванию. Теперь могут скачивать зарегистрированные пользователи.
7. _toro_ 14.04.07 04:40 Сейчас в теме
8. Poppy (poppy) 3317 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) 3317 01.08.07 01:00 Сейчас в теме
(16) Где-то автор накосячила с процедурой ПриВыбореРегистра()

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

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

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

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

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

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

- любой программист может легко увеличить рассматриваемое ограничение;
- более десяти измерений = это скорее нонсенс, чем правило.
21. Poppy (poppy) 3317 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) 3317 03.08.07 01:47 Сейчас в теме
(22)
Вот код:
Код
Процедура ПриРедактированииНовойСтроки()
   Для ии = 1 по Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение() Цикл
      Тип = Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение(ии).Тип;
      Вид = Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение(ии).Вид;
      Тип = Тип + ?(ПустоеЗначение(Вид) = 1, "", "." + Вид);
      Форма.ПолучитьАтрибут("Измерение" + ии).НазначитьТип(Тип, Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение(ии).Длина, Метаданные.Регистр(СокрЛП(НаимРегистра)).Измерение(ии).Точность);
      Форма.ПолучитьАтрибут("Измерение" + ии).Доступность(1);
   КонецЦикла;
   Для ии = 1 по Метаданные.Регистр(СокрЛП(НаимРегистра)).Ресурс() Цикл
      Форма.ПолучитьАтрибут("Ресурс" + ии).НазначитьТип("Число", Метаданные.Регистр(СокрЛП(НаимРегистра)).Ресурс(ии).Длина, Метаданные.Регистр(СокрЛП(НаимРегистра)).Ресурс(ии).Точность);
      Форма.ПолучитьАтрибут("Ресурс" + ии).Доступность(1);
   КонецЦикла;
КонецПроцедуры
Показать полностью
26. Poppy (poppy) 3317 03.08.07 02:06 Сейчас в теме
(23) >это из области "доводки", но тем не менее - сворачиваю ОУ, мне не нужны расчеты с клиентами в разрезе кредитных доков (забъем на них!)

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

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


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

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

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

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

ИМХО ты что-то путаешь.
29. Сhe Burashka (CheBurator) 07.08.07 15:50 Сейчас в теме
Сам ты путаешь. Если док-основание возврата от покупателя помечен на удаление - отсутвуют итоги по его партии. себестоимость возвратов тянуть неоткуда...
30. Poppy (poppy) 3317 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) 3317 20.01.08 03:56 Сейчас в теме
(33, 34)
Имеется косяк в том, что реквизиты табличной части документа неопределнного типа, которым назначен тип число отображаются выравненными влево, но редактируются выравненными вправо.
Такое поведение считаю фичей платформы.

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

тип надобно изначально назначить...
48. Poppy (poppy) 3317 13.01.09 10:38 Сейчас в теме
(47) Пожелание принято. Списибо.
49. Ёпрст (Ёпрст) 1021 13.01.09 10:42 Сейчас в теме
(48) та не за что, такая же ошибка почти во всех обработках, где копируются реквизиты документов в обход метаданных... все как-то забывают про неопределенный тип данных...потом долго удивляются отсутствием данных:)
50. Константин Исиченко (IsiKosta) 699 21.02.09 09:50 Сейчас в теме
Хорошее и простое решение.
Однако можно добавить:
1) в монопольном режиме работает быстрее, поэтому выдать предупреждение о запуске в разделенном режиме, для того чтобы пользователь перезашел;
2) проверить наличие документа для свертки;
3) при запуске задать дату свертки (например начало текущего года).
51. Poppy (poppy) 3317 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) 3317 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 ЛохНесс (ЛохНесс) 150 14.05.12 00:36 Сейчас в теме
65. Николай С (niko11s) 322 08.10.12 11:15 Сейчас в теме
Оставьте свое сообщение