Писал для себя. По мере возникновения необходимости, буду расширять список возможных операций. Данное описание так же доступно по кнопке «Справка» на форме обработки.
Функционал:
— Закладка «Замена значений». Доступны 3 функции: «Поиск и замена» значения в записях выбранного регистра, «установка значения» (если нужно заменить абсолютно все значения поля на указанное), «Выполнить код». Сперва необходимо выбрать регистр, после чего появятся доступные поля: измерения, ресурсы, реквизиты. Для того, чтобы заменить пустое (незаполненное значение) на указанное, достаточно выбрать просто тип. Также возможен отбор движений по регистраторам, список которых открывается по кнопке «Регистраторы…» Если список пуст, поиск и замена (либо установка значения) произведется по всей таблице регистра. Кнопка «Выполнить код» вставляет в цикл обработки записей набора записей произвольный программный код (текстовое поле в нижней части закладки) и выполняет его. Удобно, когда нужно заполнить значение поля записи не фиксированным значением, а вычисленным по другим полям, либо произвольным алгоритмом. Удобно для обработки документов «Корректировка записей регистров».
— Закладка «Заполнить РН». Возможность создания документа корректировки записей регистра с записями остатков первого регистра на дату. Удобно, например, в случаях, когда в базе начинают вести учет БУ, НУ или УУ и необходимо заполнить регистры данными какого-либо из видов учета. (Например, в УПП, ввести начальные остатки партионного учета БУ, НУ по УУ). При выборе второго регистра заполняется список полей этого регистра, отсутствующих в первом, для того, чтобы иметь возможность при заполнении регистра заполнить пустые поля каким-либо значением.
— Закладка «Заполнить РХ». Возможность создания документа «ОперацияБУХ» с проводками по данным остатков выбранного в шапке регистра накопления. Для указания соответствия полей есть «Шаблон проводок», где можно задать для любого поля проводки — поле регистра, откуда будет браться значение. Например, если необходимо ввести начальные остатки по ТМЦ по данным регистра «ПартииТоваровНаСкладахБухгалтерскийУчет», указываем в шаблоне для поля СчетДт — поле «СчетУчета» из регистра накопления. Для поля «СубконтоДт1» — поле «Номенклатура» регистра итп… Для указания счетов и организации в явном виде, на форме есть соответствующие реквизиты, так как для формирования корректной проводки по БУ необходимо наличие 2х счетов (если счет учета балансовый) и Организации. Поэтому в указанном примере, если речь идет о внесении начальных остатков, необходимо заполнить СчетКт («000»). После заполнения шаблона проводок и указания организации и счетов, необходимо нажать кнопку «Создать операцию». Так же, есть возможность отбора по сумме остатка (Например, в Бух 8.1, есть регистры взаиморасчетов с контрагентами. И знак суммы определяет принадлежность остатка к дебиторской, либо кредиторской задолженности (с учетом авансов), а это разные счета.) То есть, в явном виде сперва указываем один счет, указываем знак суммы остатка, и создаем операцию, потом, меняем счет и знак суммы, и создаем вторую операцию.
— Закладка «Сведение в ноль» имеет одну кнопку, создающую документ корректировки записей регистра с записями, сводящими в ноль остатки на дату.
— Закладка «Удалить все записи» очищает всю таблицу регистра накопления. Принцип работы: Выполняется запрос с группировкой по регистраторам по виртуальной таблице оборотов регистра. Перебирая регистраторы создаются и очищаются наборы записей. Пользователям SQL баз рекомендуется делать средствами SQL (TRUNCATE TABLE очищает таблицу за секунду максимум)
Так же можно использовать транзакции. Настройка в верхней правой части обработки.
Скриншоты есть, при редактировании присутствуют в списке картинок, а в самой публикации не вижу их. Может, это временно. 🙁
Я бы посоветовал использовать документ, аля «КорректировкаЗаписей регистровНакопления» в типовых.
Всегда можно откатиться и никакие перепроведения не «испортят»все назад…
(2) Я эту обработку писал, в основном, для этого документа. Когда надо, например, в имеющемся документе корректировки что либо сделать. Или заполнить по данным корректировки данные БУ
(2) К тому же, если прочесть описание до конца, 😉 то видно, что основная доля функций создает документы корректировок. Только закладка «Поиск и замена значений» меняет записи регистра по различным регистраторам
{ВнешняяОбработка.СведениеРегистраВНоль(154)}: Поле объекта не обнаружено (КорректировкаЗаписейРегистров)
(5) Круто, а где инфа о конфигурации?
Попытка
НовыйДокументКорректировки = Документы.КорректировкаЗаписейРегистровНакопления.СоздатьДокумент();
Исключение
НовыйДокументКорректировки = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
КонецПопытки;
Попытка (1й вариант для старых УПП (если кто-то релиз для 8.0 перевел на 8.1) или для ЗУПа)
Исключение (для более новых релизов УПП, БУХ, КА).
Если есть какая-то типовая, в которой этот документ называется по-другому, скажите. После вашего ответа буду править. Проверить на АБСОЛЮТНО всех типовых 8.1 не могу =)
Конфа самописная.
(8). 😀 Ну а как обработка создаст документ корректировки, если он либо отсутствует, либо имеет придуманное самописцами название? Я достаточно подробно написал инструкцию. Там написано, что создается док. корректировки. если у вас есть документ, который может являться регистратором для выбранного вами регистра, скажите, как называется, я добавлю. Если вы тестили не ради интереса, а для использования, я без проблем добавлю.
(8) при создании публикации я честно и исправно выбирал в списке типовых решений все конфы 1С, в которых обработка будет работать. Причем в окне редактирования они есть, а в заголовке публикации я их не вижу. не знаю, почему. наверное, сайт подглючивает.
1. Почему только регистры-остатки? Неужели оборотные так сложно обработать?
2. Попытаюсь сейчас дописать к ней выполнение произвольного кода. Если получится — поставлю плюс за портируемость 😉
(11)
Да, кстати… Просто история такова, что изначально я писал это для себя для остаточных регистров, а когда доделал поиск и замену, забыл про условие принадлежности к виду регистра. Выложил новую версию.
По поводу добавления функций, сам планирую:
— добавить выполнение произвольного кода 😉
— решить обратную задачу (БУ —> РН) (будет удобно для фанатов ручных операций, например)
Всегда пожалуйста. Тогда я чуть подожду кода (добавили измерение, сейчас его заполнить надо — а оно неочевидно). Надеюсь, что код будет не под «Вычислить», поскольку в моём случае там как минимум запрос нужен, одной строкой не обойтись.
Тогда уж и хелп стоит доработать, и добавить флаг «В транзакции» и размер транзакции…
(13) Ну с изменениями и хелп изменится…
С транзакциями хорошо… На НаборЗаписей.Записать(); поставлю.
Запросом хотите выбирать что-то из текущей записи, значения нового измерения будут зависеть от значений других полей? (передавать в код обрабатываемую запись?)
(14) Безусловно передавать. У меня есть некий периодический реквизит (в регистре сведений). Мне нужно на дату движения + 1 его найти для значения одного из измерений и его записать в реквизит (!) регистра.
(15) Понял, будет минутка в ближ. время, доделаю.
(15) Выложена новая версия. Теперь можно использовать транзакции и выполнять произвольный код. Спасибо e.kogan за замечания и предложения по расширению функционала
{ВнешняяОбработка.RegTool(527)}: Деление на 0
Откройте код, а?
Возможно, обработка и полезна.
Но при закрытом коде лично я столь опасную вещь юзать не буду 🙁
(18) Исправил.
(18), (19) Про код уже говорил. Не хочу «пальцегнутых» комментариев, поэтому не открываю. В частном режиме в личку пишите, пришлю с открытым, если хотите код. Только, пожалуйста, не для того, чтоб лишний раз подстебаться над чем-нибудь, а по делу.
P.S. 344 скачки, и если каждый будет писать тут в комментах и обсуждать модификацию кода, где, что и как бы они сделали, что так, как я написал — тупо, убого и неправильно, смеясь над автором (мной), мне этого тут не нужно. Советы, комменты об ошибках, предложения по функционалу лишь приветствую. Просто есть люди, которые адекватно могут указывать на ошибки в коде и давать советы, а есть другие… (18), (19) Если вам двоим нужно, пришлю без пароля.
(20) Присылай, мыло в личку указал.
PS лично я никогда не издевался/стебался над чужим кодом, свой всегда стараюсь также не скрывать.
ЗЗЫ Поизучать чужой код страсть как люблю 🙂
Кстати, что-то мне не кажется, что регистраторы обрабатываются в хронологическом порядке. А это большое зря.
К тому же запись стоило бы вести через попытка-исключение, потому как я третий раз запускаю обработку и она третий раз вылетает на одном и том же регистраторе (не заполнено измерение регистра, не ошибка обработки), а могло бы сообщить об этом и пойти дальше. (Транзакция отключена)
(21) В личке пусто.
(22) Для самопального конечно лучше попытки на каждом шагу ставить. Ща сделаем. В чем «зря» хронологии?
Зря — это как раз о НЕ-хронологическом. Принципиально. Так обрабатывать проще. А то у меня тут обработался документ 2009 года — а за ним 2008-го.
(23) Два сообщения тебе написал 🙁
присылай на artbear не кошка inbox точка ru
(24) Хм.. У меня почему-то по дате. Сейчас явно в запросике упорядочим…
А у нас период не всегда равен дате документа. А для обработки по регистраторам лучше всё-таки по ним упорядочить.
(27) Сделал. Выложил сюда и выслал вам 2м на почту. Упорядочивание по Дате регистратора
Добавлено «ОграничениеТипа» для списка регистраторов отбора. Теперь при выборе типа регистратора «лишнее» в списке отсутсвует.
Большой респект автору! Обработка реально помогла.
(30) Спасибо. Приятно
если не затруднит, прошу тоже выслать provnick sobaka rambler.ru, учусь вот на старости лет, интересно логику посмотреть из рабочих кодов
А есть что нибудь похожее для регистров сведений?
(33) Пока нет. Пока это в проекте. делаю в своб. время.
Интерфейс «сведения в ноль» и «удалить записи» просто убийственный)) поменьше кнопочку может стоит все-таки сделать)
И было бы очень полезно сведение в ноль делать,не всего регистра, а по указанному реквизиту из регистра.
И где бы найти такую обработку,которая помогла бы сформировать документ «корректировка движений по регистру» с выбором по контрагенту.
(35) с кнопкой согласен, перебор, зато не промахнетесь =)
Можно, в принципе, отбор сделать, идея хорошая, принято на реализацию.
если возможно, пришлите код разблокировки, не хочется пользоваться вслепую ) kondratievab@mail.ru
(38) попробуйте на копии, если боитесь, это гораздо быстрее, чем копаться в 700 строках кода.
попробовал , работает , но мне нужно чуть изменить функционал по полной очистке регистра , сейчас удаляет все записи , а мне надо до определенной даты
ну и м быть фильтр прикрутить , удалять по опредленным видам документов
(41) Отправил в открытом виде на мыло.
Здравствуйте, а можно вас попросить мне тоже выслать код разблокировки. Очень не хочется самому с нуля писать, к тому же у вас все очень красиво и аккуратно. Мне просто надо подменить значения еще и у регистров расчета, к тому же чтобы не дежурить у компа хочу еще сделать подмену у списка регистров, а не только у одного. nekrasovdima@list.ru
(43) ловите
(44) Спасибо огромное, очень полезная обработка
Добрый день! У Вас есть такое замечание:
, а подскажите, пожалуйста, как это можно реализовать? Просто получилась такая ситуация: документ «перенос данных» в ЗУП из-за криво написанной обработки сделал несколько миллионов записей в регистре накопления, вариант с созданием и записью наборов по регистратору не подходит, системе не хватает памяти и вылетает, а через truncate table как сделать, информацию найти не могу(
(46) Для начала надо найти соответствие таблице 1С вашего регистра таблицам SQL .
Затем запустить SQL management studio и ввести команды
TRUNCATE TABLE ИМЯТАБЛИЦЫ, где ИМЯТАБЛИЦЫ — имя SQL таблицы, соотв. вашему регистру. описание этого есть в любом справочнике по SQL в интернете. УДАЛЯЕТ ТАБЛИЦУ ЦЕЛИКОМ!!!
Один момент: при выборе даты сделай, чтобы она устанавливалась на конец дня, оно так правильнее будет:)
(48) в каком месте выбор даты? Все остатки регистров берутся на конец даты, более того, включая ГРАНИЦУ.
А можно и мне на мыло без пароля, нужно доделать закрытие регистров бухгалтерии в 0
в корреспонденции с нулевым счетом
Script@obuhov.net
37.
ghostishe 18.01.2010 09:13 Пожаловаться
(35) с кнопкой согласен, перебор, зато не промахнетесь =)
Можно, в принципе, отбор сделать, идея хорошая, принято на реализацию.
До сих пор не реализовано, можете выслать пароль или незапаралированную обработку на joker13@list.ru
Нужно очень срочно! надо вставить отбор по организации. Вышлите кто-нибудь у кого она есть.
Добрый день, отличная обработка! =)
Такой вопрос: можно изменить «Поставщика» в регистре накопления «НДСПредъявленный» на тот который соответствует «Контрагенту» в «СчетеФактуреПолученный»?
(53) С помощью обработки — нет.
ghostishe
Можете выслать пароль или незапаралированную обработку на joker13@list.ru
Нужно очень! надо вставить отбор по организации.
(55) не пойму, в чем проблема. Есть же поле для выполнения произвольного кода. Пропишите туда отбор.
Если Запись.Организация = … Тогда
// То, что хотите сделать
КонецЕсли;
ghostishe
(55) не пойму, в чем проблема. Есть же поле для выполнения произвольного кода. Пропишите туда отбор.
Отбор нужен в режиме «Сведение в нуль», а там нет такого поля.
Обработка хорошая. А можно ли сформировать по оборотам одного регистра для заполнения другого регистра, а не только остатками как у вас. Если нет вышлите пароль, сама доделаю, очень надо.
(57) Сделал произвольный код для сведения в 0. В место, где обрабатывается полученная ТЗ по остаткам регистра, содержащая все записи. Можешь делать с ней, что хочешь. Если что — обработка без пароля наhttps://sites.google.com/site/ghostishe1c
И, если не лень, желательно кликнуть на гугловской рекламке.
(58) заполнение оборотов по оборотам не предусмотрено. В предыдущем сообщении — ссылка на обработку без пароля.
Спасибо большое. Попробуем.
Спасибо.
Там тоже — «Введите пароль для просмотра текста модуля».
Можно мне без пароля.
Спасибо за обработку. Помогла «с кодом» подправить регистры перенесенные из Зик
{ВнешняяОбработка.RegTool(179)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Накопления по дисконтным картам)
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Накопления по дисконтным картам)
к чему бы это?
буду рад несказанно коду обработки, мыло в личке
(63) автор старался, респект,
http://help1c.com/files/view/60.html
регтул_без_пароля
отловить блох помогло
Спасибо автору за обработку.
обработка реально помогла — только пришлось добавить период для замены значений — это если не все менять а только в определенном периоде… тогда быстее работает и функционал расширился…
супер обработка. Мне очень помогла при переходе с ЗиК 77 на ЗБУ 8, при исправлении косяков в остатках
Эта обработка оказалась спасением при переводе наших филиалов (которые работали каждый в своей программе) в доп. офисы.
стоял вопрос очень долгое время ваша обработка очень сильно мне помогла большой ВАМ респект и человеческое спасибки))))
у меня вопрос к создателю, а почему модуль обработки закодирован? )))
Здравствуйте Андрей.
Вопрос как к разработчику обработки.
1. Работаем в Комплексной автоматизации 8.2. Пока разобрались что к чему, успели провести документы «Реализация товаров и услуг» либо без указания подразделения (прописывается в РН «Продажи»), либо указали вспомогательное подразделение. Те периоды уже закрыты и перепроводить документы нецелесообразно. Каким образом можно отфильтровать нужные документы в Вашей обработке для изменения записей в РН «Продажи»?
В качестве фильтра хотелось бы использовать Контрагента и Номенклатуры (списком или в группе).
2. Зачем нужна дата в шапке обработке? На что влияет?
3. Правильно ли я понимаю, что если выберу нужный регистр в шапке обработки (например, РН «Продажи», оставлю столбец «Значение до» по реквизиту «Подразделение» пустым, а в столбце «Значение после» заполню конкретным подразделением, и нажму кнопку «Поиск и замена», то все пустые значения «Подразделения» в РН заполнятся конкретным подразделением?
4. Правильно ли я понимаю, что если оставить все столбцы в «Значеие» пустыми и нажать кнопку «Установка значения» то все поля выбранного регистра очистятся?
Пожелания. При выборе регистра выводить его поля в табличную часть с возможностью фильтрации (как в типовой конфе), чтобы можно было выполнять операции над выбранными полями регистра. То есть заменить Ваш выбор регистратора на привычный интерфейс типовой конфигурации.
Разработчик??!!! Ты где?????
Господа, обработке более 2х лет, я вообще сюда редко захожу. Если нужна обработка без кода (74) — пишите в личку — вышлю. Что касается (73): насколько я помню, там есть поле для произвольного кода. В него вы можете вставить любой отбор, какой захотите. Если нужны какие-то серьезные доделки под Ваши нужды — пишите в личку: обсудим. Обработка делалась под нужды моего предприятия, я сделал ее более-менее универсальной и выложил сюда, чтобы те, кому подходит ее функционал, бесплатно могли ей воспользоваться. Еще: (73). Если сомневаетесь в правильности работы обработки, или вы просто не программист, чтобы рыться в коде, можете проверить ее работоспособность на копии рабочей базы, чтобы посмотреть, что и как она делает.
Спасибо большое! Обработка помогла исправить косяки переноса и сохранила драгоценные часы сна))))
А для бюджетки будет работать?
Обработку использовал только в режиме «Закладка «Сведение в ноль» имеет одну кнопку, создающую документ корректировки записей регистра с записями, сводящими в ноль остатки на дату.»
Предложения:
— при нажатии кнопки «Свести регистр в ноль» надо где-то сообщить , что сформирован документ «Корректировка регистров». (Три раза «наступил на грабли» прежде чем посмотрел результат в отчете )
— при сведении в регистра в ноль желательно и минусовые остатки убирать. Убирал вручную.
(79) buval, надо где-то сообщить , что сформирован документ «Корректировка регистров» Это написано в инструкции и в описании к обработке. Хотя, обработке уже 5 лет, и она не подвергалась изменениям. Если бы было актуально сейчас, разумеется, я бы учел все недостатки.
(80)
Закрыл еще раз регистры в «0». Все отрицательные движения были закрыты. Прошу извинить.
Вопрос «- при сведении в регистра в ноль желательно и минусовые остатки убирать. Убирал вручную.» не верен!