REGTool Полезные операции с регистрами накопления


Усовершенствованная http://infostart.ru/public/60413/ Расширен функционал. Добавлен поиск и замена значений. Добавлено заполнение РБ по данным РН по шаблону проводки. Добавлено использование транзакций и выполнение произвольного кода.

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

Функционал:

— Закладка «Замена значений». Доступны 3 функции: «Поиск и замена» значения в записях выбранного регистра, «установка значения» (если нужно заменить абсолютно все значения поля на указанное), «Выполнить код». Сперва необходимо выбрать регистр, после чего появятся доступные поля: измерения, ресурсы, реквизиты. Для того, чтобы заменить пустое (незаполненное значение) на указанное, достаточно выбрать просто тип. Также возможен отбор движений по регистраторам, список которых открывается по кнопке «Регистраторы…» Если список пуст, поиск и замена (либо установка значения) произведется по всей таблице регистра. Кнопка «Выполнить код» вставляет в цикл обработки записей набора записей произвольный программный код (текстовое поле в нижней части закладки) и выполняет его. Удобно, когда нужно заполнить значение поля записи не фиксированным значением, а вычисленным по другим полям, либо произвольным алгоритмом. Удобно для обработки документов «Корректировка записей регистров».

— Закладка «Заполнить РН». Возможность создания документа корректировки записей регистра с записями остатков первого регистра на дату. Удобно, например, в случаях, когда в базе начинают вести учет БУ, НУ или УУ и необходимо заполнить регистры данными какого-либо из видов учета. (Например, в УПП, ввести начальные остатки партионного учета БУ, НУ по УУ). При выборе второго регистра заполняется список полей этого регистра, отсутствующих в первом, для того, чтобы иметь возможность при заполнении регистра заполнить пустые поля каким-либо значением.  

— Закладка «Заполнить РХ». Возможность создания документа «ОперацияБУХ» с проводками по данным остатков выбранного в шапке регистра накопления. Для указания соответствия полей есть «Шаблон проводок», где можно задать для любого поля проводки — поле регистра, откуда будет браться значение. Например, если необходимо ввести начальные остатки по ТМЦ по данным регистра «ПартииТоваровНаСкладахБухгалтерскийУчет», указываем в шаблоне для поля СчетДт — поле «СчетУчета» из регистра накопления. Для поля «СубконтоДт1» — поле «Номенклатура» регистра итп… Для указания счетов и организации в явном виде, на форме есть соответствующие реквизиты, так как для формирования корректной проводки по БУ необходимо наличие 2х счетов (если счет учета балансовый) и Организации. Поэтому в указанном примере, если речь идет о внесении начальных остатков, необходимо заполнить СчетКт («000»). После заполнения шаблона проводок и указания организации и счетов, необходимо нажать кнопку «Создать операцию». Так же, есть возможность отбора по сумме остатка (Например, в Бух 8.1, есть регистры взаиморасчетов с контрагентами. И знак суммы определяет принадлежность остатка к дебиторской, либо кредиторской задолженности (с учетом авансов), а это разные счета.) То есть, в явном виде сперва указываем один счет, указываем знак суммы остатка, и создаем операцию, потом, меняем счет и знак суммы, и создаем вторую операцию.

— Закладка «Сведение в ноль» имеет одну кнопку, создающую документ корректировки записей регистра с записями, сводящими в ноль остатки на дату.

— Закладка «Удалить все записи» очищает всю таблицу регистра накопления. Принцип работы: Выполняется запрос с группировкой по регистраторам по виртуальной таблице оборотов регистра. Перебирая регистраторы создаются и очищаются наборы записей. Пользователям SQL баз рекомендуется делать средствами SQL (TRUNCATE TABLE очищает таблицу за секунду максимум)

Так же можно использовать транзакции. Настройка в верхней правой части обработки.

79 Comments

  1. ghostishe

    Скриншоты есть, при редактировании присутствуют в списке картинок, а в самой публикации не вижу их. Может, это временно. 🙁

    Reply
  2. Душелов

    Я бы посоветовал использовать документ, аля «КорректировкаЗаписей регистровНакопления» в типовых.

    Всегда можно откатиться и никакие перепроведения не «испортят»все назад…

    Reply
  3. ghostishe

    (2) Я эту обработку писал, в основном, для этого документа. Когда надо, например, в имеющемся документе корректировки что либо сделать. Или заполнить по данным корректировки данные БУ

    Reply
  4. ghostishe

    (2) К тому же, если прочесть описание до конца, 😉 то видно, что основная доля функций создает документы корректировок. Только закладка «Поиск и замена значений» меняет записи регистра по различным регистраторам

    Reply
  5. Philatoff

    {ВнешняяОбработка.СведениеРегистраВНоль(154)}: Поле объекта не обнаружено (КорректировкаЗаписейРегистров)

    Reply
  6. ghostishe

    (5) Круто, а где инфа о конфигурации?

    Reply
  7. ghostishe

    Попытка

    НовыйДокументКорректировки = Документы.КорректировкаЗаписейРегистровНакопления.СоздатьДокумент();

    Исключение

    НовыйДокументКорректировки = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();

    КонецПопытки;

    Попытка (1й вариант для старых УПП (если кто-то релиз для 8.0 перевел на 8.1) или для ЗУПа)

    Исключение (для более новых релизов УПП, БУХ, КА).

    Если есть какая-то типовая, в которой этот документ называется по-другому, скажите. После вашего ответа буду править. Проверить на АБСОЛЮТНО всех типовых 8.1 не могу =)

    Reply
  8. Philatoff

    Конфа самописная.

    Reply
  9. ghostishe

    (8). 😀 Ну а как обработка создаст документ корректировки, если он либо отсутствует, либо имеет придуманное самописцами название? Я достаточно подробно написал инструкцию. Там написано, что создается док. корректировки. если у вас есть документ, который может являться регистратором для выбранного вами регистра, скажите, как называется, я добавлю. Если вы тестили не ради интереса, а для использования, я без проблем добавлю.

    Reply
  10. ghostishe

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

    Reply
  11. e.kogan

    1. Почему только регистры-остатки? Неужели оборотные так сложно обработать?

    2. Попытаюсь сейчас дописать к ней выполнение произвольного кода. Если получится — поставлю плюс за портируемость 😉

    Reply
  12. ghostishe

    (11)

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

    По поводу добавления функций, сам планирую:

    — добавить выполнение произвольного кода 😉

    — решить обратную задачу (БУ —> РН) (будет удобно для фанатов ручных операций, например)

    Reply
  13. e.kogan

    Всегда пожалуйста. Тогда я чуть подожду кода (добавили измерение, сейчас его заполнить надо — а оно неочевидно). Надеюсь, что код будет не под «Вычислить», поскольку в моём случае там как минимум запрос нужен, одной строкой не обойтись.

    Тогда уж и хелп стоит доработать, и добавить флаг «В транзакции» и размер транзакции…

    Reply
  14. ghostishe

    (13) Ну с изменениями и хелп изменится…

    С транзакциями хорошо… На НаборЗаписей.Записать(); поставлю.

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

    Reply
  15. e.kogan

    (14) Безусловно передавать. У меня есть некий периодический реквизит (в регистре сведений). Мне нужно на дату движения + 1 его найти для значения одного из измерений и его записать в реквизит (!) регистра.

    Reply
  16. ghostishe

    (15) Понял, будет минутка в ближ. время, доделаю.

    Reply
  17. ghostishe

    (15) Выложена новая версия. Теперь можно использовать транзакции и выполнять произвольный код. Спасибо e.kogan за замечания и предложения по расширению функционала

    Reply
  18. e.kogan

    {ВнешняяОбработка.RegTool(527)}: Деление на 0

    Откройте код, а?

    Reply
  19. artbear

    Возможно, обработка и полезна.

    Но при закрытом коде лично я столь опасную вещь юзать не буду 🙁

    Reply
  20. ghostishe

    (18) Исправил.

    (18), (19) Про код уже говорил. Не хочу «пальцегнутых» комментариев, поэтому не открываю. В частном режиме в личку пишите, пришлю с открытым, если хотите код. Только, пожалуйста, не для того, чтоб лишний раз подстебаться над чем-нибудь, а по делу.

    P.S. 344 скачки, и если каждый будет писать тут в комментах и обсуждать модификацию кода, где, что и как бы они сделали, что так, как я написал — тупо, убого и неправильно, смеясь над автором (мной), мне этого тут не нужно. Советы, комменты об ошибках, предложения по функционалу лишь приветствую. Просто есть люди, которые адекватно могут указывать на ошибки в коде и давать советы, а есть другие… (18), (19) Если вам двоим нужно, пришлю без пароля.

    Reply
  21. artbear

    (20) Присылай, мыло в личку указал.

    PS лично я никогда не издевался/стебался над чужим кодом, свой всегда стараюсь также не скрывать.

    ЗЗЫ Поизучать чужой код страсть как люблю 🙂

    Reply
  22. e.kogan

    Кстати, что-то мне не кажется, что регистраторы обрабатываются в хронологическом порядке. А это большое зря.

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

    Reply
  23. ghostishe

    (21) В личке пусто.

    (22) Для самопального конечно лучше попытки на каждом шагу ставить. Ща сделаем. В чем «зря» хронологии?

    Reply
  24. e.kogan

    Зря — это как раз о НЕ-хронологическом. Принципиально. Так обрабатывать проще. А то у меня тут обработался документ 2009 года — а за ним 2008-го.

    Reply
  25. artbear

    (23) Два сообщения тебе написал 🙁

    присылай на artbear не кошка inbox точка ru

    Reply
  26. ghostishe

    (24) Хм.. У меня почему-то по дате. Сейчас явно в запросике упорядочим…

    Reply
  27. e.kogan

    А у нас период не всегда равен дате документа. А для обработки по регистраторам лучше всё-таки по ним упорядочить.

    Reply
  28. ghostishe

    (27) Сделал. Выложил сюда и выслал вам 2м на почту. Упорядочивание по Дате регистратора

    Reply
  29. ghostishe

    Добавлено «ОграничениеТипа» для списка регистраторов отбора. Теперь при выборе типа регистратора «лишнее» в списке отсутсвует.

    Reply
  30. skyp

    Большой респект автору! Обработка реально помогла.

    Reply
  31. ghostishe

    (30) Спасибо. Приятно

    Reply
  32. provnick

    если не затруднит, прошу тоже выслать provnick sobaka rambler.ru, учусь вот на старости лет, интересно логику посмотреть из рабочих кодов

    Reply
  33. ChinChin

    А есть что нибудь похожее для регистров сведений?

    Reply
  34. ghostishe

    (33) Пока нет. Пока это в проекте. делаю в своб. время.

    Reply
  35. platinum

    Интерфейс «сведения в ноль» и «удалить записи» просто убийственный)) поменьше кнопочку может стоит все-таки сделать)

    И было бы очень полезно сведение в ноль делать,не всего регистра, а по указанному реквизиту из регистра.

    Reply
  36. platinum

    И где бы найти такую обработку,которая помогла бы сформировать документ «корректировка движений по регистру» с выбором по контрагенту.

    Reply
  37. ghostishe

    (35) с кнопкой согласен, перебор, зато не промахнетесь =)

    Можно, в принципе, отбор сделать, идея хорошая, принято на реализацию.

    Reply
  38. kondrata

    если возможно, пришлите код разблокировки, не хочется пользоваться вслепую ) kondratievab@mail.ru

    Reply
  39. ghostishe

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

    Reply
  40. kondrata

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

    Reply
  41. kondrata

    ну и м быть фильтр прикрутить , удалять по опредленным видам документов

    Reply
  42. ghostishe

    (41) Отправил в открытом виде на мыло.

    Reply
  43. DaNN

    Здравствуйте, а можно вас попросить мне тоже выслать код разблокировки. Очень не хочется самому с нуля писать, к тому же у вас все очень красиво и аккуратно. Мне просто надо подменить значения еще и у регистров расчета, к тому же чтобы не дежурить у компа хочу еще сделать подмену у списка регистров, а не только у одного. nekrasovdima@list.ru

    Reply
  44. ghostishe

    (43) ловите

    Reply
  45. DaNN

    (44) Спасибо огромное, очень полезная обработка

    Reply
  46. Яшко

    Добрый день! У Вас есть такое замечание:

    Пользователям SQL баз рекомендуется делать средствами SQL (TRUNCATE TABLE очищает таблицу за секунду максимум)

    , а подскажите, пожалуйста, как это можно реализовать? Просто получилась такая ситуация: документ «перенос данных» в ЗУП из-за криво написанной обработки сделал несколько миллионов записей в регистре накопления, вариант с созданием и записью наборов по регистратору не подходит, системе не хватает памяти и вылетает, а через truncate table как сделать, информацию найти не могу(

    Reply
  47. ghostishe

    (46) Для начала надо найти соответствие таблице 1С вашего регистра таблицам SQL .

    Затем запустить SQL management studio и ввести команды

    TRUNCATE TABLE ИМЯТАБЛИЦЫ, где ИМЯТАБЛИЦЫ — имя SQL таблицы, соотв. вашему регистру. описание этого есть в любом справочнике по SQL в интернете. УДАЛЯЕТ ТАБЛИЦУ ЦЕЛИКОМ!!!

    Reply
  48. cleaner_it

    Один момент: при выборе даты сделай, чтобы она устанавливалась на конец дня, оно так правильнее будет:)

    Reply
  49. ghostishe

    (48) в каком месте выбор даты? Все остатки регистров берутся на конец даты, более того, включая ГРАНИЦУ.

    Reply
  50. script

    А можно и мне на мыло без пароля, нужно доделать закрытие регистров бухгалтерии в 0

    в корреспонденции с нулевым счетом

    Script@obuhov.net

    Reply
  51. Demik_a

    37.

    ghostishe 18.01.2010 09:13 Пожаловаться

    (35) с кнопкой согласен, перебор, зато не промахнетесь =)

    Можно, в принципе, отбор сделать, идея хорошая, принято на реализацию.

    До сих пор не реализовано, можете выслать пароль или незапаралированную обработку на joker13@list.ru

    Нужно очень срочно! надо вставить отбор по организации. Вышлите кто-нибудь у кого она есть.

    Reply
  52. pasha_d

    Добрый день, отличная обработка! =)

    Такой вопрос: можно изменить «Поставщика» в регистре накопления «НДСПредъявленный» на тот который соответствует «Контрагенту» в «СчетеФактуреПолученный»?

    Reply
  53. ghostishe

    (53) С помощью обработки — нет.

    Reply
  54. Demik_a

    ghostishe

    Можете выслать пароль или незапаралированную обработку на joker13@list.ru

    Нужно очень! надо вставить отбор по организации.

    Reply
  55. ghostishe

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

    Если Запись.Организация = … Тогда

    // То, что хотите сделать

    КонецЕсли;

    Reply
  56. Demik_a

    ghostishe

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

    Отбор нужен в режиме «Сведение в нуль», а там нет такого поля.

    Reply
  57. eli1984

    Обработка хорошая. А можно ли сформировать по оборотам одного регистра для заполнения другого регистра, а не только остатками как у вас. Если нет вышлите пароль, сама доделаю, очень надо.

    Reply
  58. ghostishe

    (57) Сделал произвольный код для сведения в 0. В место, где обрабатывается полученная ТЗ по остаткам регистра, содержащая все записи. Можешь делать с ней, что хочешь. Если что — обработка без пароля на https://sites.google.com/site/ghostishe1c

    И, если не лень, желательно кликнуть на гугловской рекламке.

    Reply
  59. ghostishe

    (58) заполнение оборотов по оборотам не предусмотрено. В предыдущем сообщении — ссылка на обработку без пароля.

    Reply
  60. eli1984

    Спасибо большое. Попробуем.

    Reply
  61. Demik_a

    Спасибо.

    Reply
  62. as7bs
    Если что — обработка без пароля на https://sites.google.com/site/ghostishe1c

    Там тоже — «Введите пароль для просмотра текста модуля».

    Можно мне без пароля.

    Reply
  63. irishka77

    Спасибо за обработку. Помогла «с кодом» подправить регистры перенесенные из Зик

    Reply
  64. Altez

    {ВнешняяОбработка.RegTool(179)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Накопления по дисконтным картам)

    по причине:

    Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Накопления по дисконтным картам)

    к чему бы это?

    буду рад несказанно коду обработки, мыло в личке

    Reply
  65. Altez

    (63) автор старался, респект,

    отловить блох помогло http://help1c.com/files/view/60.html

    регтул_без_пароля

    Reply
  66. avavadim

    Спасибо автору за обработку.

    Reply
  67. avavadim

    обработка реально помогла — только пришлось добавить период для замены значений — это если не все менять а только в определенном периоде… тогда быстее работает и функционал расширился…

    Reply
  68. Valdis_KH

    супер обработка. Мне очень помогла при переходе с ЗиК 77 на ЗБУ 8, при исправлении косяков в остатках

    Reply
  69. Helgaadr

    Эта обработка оказалась спасением при переводе наших филиалов (которые работали каждый в своей программе) в доп. офисы.

    Reply
  70. MYRZILKA123

    стоял вопрос очень долгое время ваша обработка очень сильно мне помогла большой ВАМ респект и человеческое спасибки))))

    Reply
  71. MYRZILKA123

    у меня вопрос к создателю, а почему модуль обработки закодирован? )))

    Reply
  72. gull22

    Здравствуйте Андрей.

    Вопрос как к разработчику обработки.

    1. Работаем в Комплексной автоматизации 8.2. Пока разобрались что к чему, успели провести документы «Реализация товаров и услуг» либо без указания подразделения (прописывается в РН «Продажи»), либо указали вспомогательное подразделение. Те периоды уже закрыты и перепроводить документы нецелесообразно. Каким образом можно отфильтровать нужные документы в Вашей обработке для изменения записей в РН «Продажи»?

    В качестве фильтра хотелось бы использовать Контрагента и Номенклатуры (списком или в группе).

    2. Зачем нужна дата в шапке обработке? На что влияет?

    3. Правильно ли я понимаю, что если выберу нужный регистр в шапке обработки (например, РН «Продажи», оставлю столбец «Значение до» по реквизиту «Подразделение» пустым, а в столбце «Значение после» заполню конкретным подразделением, и нажму кнопку «Поиск и замена», то все пустые значения «Подразделения» в РН заполнятся конкретным подразделением?

    4. Правильно ли я понимаю, что если оставить все столбцы в «Значеие» пустыми и нажать кнопку «Установка значения» то все поля выбранного регистра очистятся?

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

    Reply
  73. MYRZILKA123

    Разработчик??!!! Ты где?????

    Reply
  74. ghostishe

    Господа, обработке более 2х лет, я вообще сюда редко захожу. Если нужна обработка без кода (74) — пишите в личку — вышлю. Что касается (73): насколько я помню, там есть поле для произвольного кода. В него вы можете вставить любой отбор, какой захотите. Если нужны какие-то серьезные доделки под Ваши нужды — пишите в личку: обсудим. Обработка делалась под нужды моего предприятия, я сделал ее более-менее универсальной и выложил сюда, чтобы те, кому подходит ее функционал, бесплатно могли ей воспользоваться. Еще: (73). Если сомневаетесь в правильности работы обработки, или вы просто не программист, чтобы рыться в коде, можете проверить ее работоспособность на копии рабочей базы, чтобы посмотреть, что и как она делает.

    Reply
  75. Lenchik

    Спасибо большое! Обработка помогла исправить косяки переноса и сохранила драгоценные часы сна))))

    Reply
  76. post279

    А для бюджетки будет работать?

    Reply
  77. buval

    Обработку использовал только в режиме «Закладка «Сведение в ноль» имеет одну кнопку, создающую документ корректировки записей регистра с записями, сводящими в ноль остатки на дату.»

    Предложения:

    — при нажатии кнопки «Свести регистр в ноль» надо где-то сообщить , что сформирован документ «Корректировка регистров». (Три раза «наступил на грабли» прежде чем посмотрел результат в отчете )

    — при сведении в регистра в ноль желательно и минусовые остатки убирать. Убирал вручную.

    Reply
  78. ghostishe

    (79) buval, надо где-то сообщить , что сформирован документ «Корректировка регистров» Это написано в инструкции и в описании к обработке. Хотя, обработке уже 5 лет, и она не подвергалась изменениям. Если бы было актуально сейчас, разумеется, я бы учел все недостатки.

    Reply
  79. buval

    (80)

    Закрыл еще раз регистры в «0». Все отрицательные движения были закрыты. Прошу извинить.

    Вопрос «- при сведении в регистра в ноль желательно и минусовые остатки убирать. Убирал вручную.» не верен!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *