Замена любых символов в любом справочнике

13.01.10

Задачи пользователя - Корректировка данных

Бывают огромные справочники с названиями, в которых есть по два, а то и больше пробелов подряд, табуляции, кавычки ненужные... Особенно это неприятно, когда справочник в 100 000 наименований загружался из другой программы учета. Обработка позволяет в любом справочнике заменить любые символы по любому из реквизитов типа "Строка".

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

Наименование Файл Версия Размер
Замена лишних символов.epf
.epf 9,54Kb
422
.epf 9,54Kb 422 Скачать

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

И, народ, если качаем, не забываем плюсовать (минусовать). Все-таки дебют.

См. также

Исправление в 1С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

Корректировка данных Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4800 руб.

06.10.2023    2311    29    15    

33

Тестирование и исправление ключей аналитики ERP, УТ11, КА

Корректировка данных Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    106794    633    173    

675

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27367    79    146    

59

Исправление ошибки закрытия месяца "Обнаружены ненулевые остатки по суммам при нулевом остатке по количеству в регистре себестоимости по организации". УТ 11.4,УТ 11.5, КА 2.4,КА 2.5, ERP 2.4, ERP 2.5, КА 2 Казахстан, Управление торговлей 3 для Казахстана

Закрытие периода Корректировка данных Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

2400 руб.

27.10.2021    22315    299    35    

71

SALE! 20%

Заполнение документа "Корректировка регистров" произвольными данными

Закрытие периода Корректировка данных Платформа 1С v8.3 Система компоновки данных 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 1920 руб.

13.07.2015    50161    171    29    

121
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dobraleks 136 25.12.09 22:11 Сейчас в теме
а для 77 есть что-то похожее??
2. CheBurator 3119 26.12.09 01:23 Сейчас в теме
(1) по уму д.б. настраиваемя обработка для удаления из любых строковых реквизитов определенного настраиваемого набора "символов", как-то : табцляции, переводов строк и прочего - что напрочь ломает выгрузку/загрузку в XML и прчие неприятности делает...
Designer1C; a-novoselov; dobraleks; +3 Ответить
22. a-novoselov 1155 30.12.09 16:58 Сейчас в теме
(2) (19) (20) Реализовал все (или почти все) ваши предложения. Спасибо.
23. alexk-is 6533 30.12.09 17:36 Сейчас в теме
(22) Ну, если все так, то обрати еще внимание на оформление. Где картинка для анонса? Проверь, обработка точно будет под 8.0 и 8.2. Как это заявлено?

Вот примеры публикаций с неплохим оформлением
http://infostart.ru/public/62722/
http://infostart.ru/public/16630/
26. a-novoselov 1155 03.01.10 07:18 Сейчас в теме
(23) Да какраз после н.г. оформить хотел... на 8.0 работает, 8.2 дистрибутива пока нет, но должна работать. Насколько я понял в 1С работа с метаданными со времен 7.7 почти не изменилась.
27. alexk-is 6533 04.01.10 17:10 Сейчас в теме
4. a-novoselov 1155 26.12.09 08:25 Сейчас в теме
(1) Для 77 реализовать такой алгоритм не получится, т.к. в ней нет оператора Выполнить()

(2) Если осуществлялся переход с другой системы учета, которая уже не используется, то обмен не нужен. При распределенной базе данных, поменяв данные на главном узле, изменения расползутся по всем базам.
dobraleks; +1 Ответить
6. artbear 1448 26.12.09 08:29 Сейчас в теме
(4) "Для 77 реализовать такой алгоритм не получится, т.к. в ней нет оператора Выполнить()"
вот с чего ты это взял? там есть штатный метод Шаблон, + в ВК 1С++ есть мощнейшний объект ВыполняемыйМодуль.
28. Збянтэжаны Саўка 245 11.01.10 11:51 Сейчас в теме
(4) "Для 77 реализовать такой алгоритм не получится, т.к. в ней нет оператора Выполнить()"
А зачем через Выполнить()?
Можно выбросить присвоение ТекстКода и писать сразу код.

И еще надо проверять на модифицированность объекта чтобы не делать лишних телодвижений:

СтароеЗначениеРеквизита = Выборка[Реквизит]; //+
ЗначениеРеквизита = Выборка[Реквизит];
...

Объект[Реквизит] = ЗначениеРеквизита;
Если Объект.Модифицированность() Тогда //+
Счетчик = Счетчик + 1;
Попытка
Объект.Записать();
// Показать что именно изменили
Сообщить(Объект.Код + ": Изменен реквизит " + Реквизит + " с <" + СтароеЗначениеРеквизита + "> на <" + ЗначениеРеквизита + ">");
Исключение
Сообщить("Не могу записать элемент " + Объект.Код + " по причине: " + ОписаниеОшибки());
Счетчик = Счетчик - 1;
КонецПопытки;
КонецЕсли;

И еще в процедуре СправочникПриИзменении
маленькое удобство добавить, сразу же и присвоить первый элемент реквизиту, на одно движение меньше:
...
ЭлементыФормы.Реквизит.СписокВыбора = СписокВыбора;
ЭлементыФормы.Реквизит.Значение = СписокВыбора[0]; //+


Designer1C; a-novoselov; +2 Ответить
30. a-novoselov 1155 13.01.10 07:21 Сейчас в теме
29. dolter 119 11.01.10 12:14 Сейчас в теме
(4) у 7.7 нет Выполнить(), но есть Шаблон() :-)
5. artbear 1448 26.12.09 08:28 Сейчас в теме
(3+) 4. Нафига нужен код
Ссылка = Справочники[Справочник].НайтиПоКоду(1);
он все равно подходит не для всех справочников :(
юзай
Ссылка = Справочники[Справочник].ПустаяСсылка();
Designer1C; a-novoselov; +2 Ответить
3. artbear 1448 26.12.09 08:23 Сейчас в теме
Есть претензии к реализации :(
1. Нафига нужна переменная Отказ?
представь, что у тебя глюк/отказ на первом же элементе?
у тебя в транзакции сначала обработаются все элементы, а потом все равно будет отмена этой транзакции.
После Отказ = Истина сделай Прервать
2. не видно, по какой причине элемент может быть не записан, т.е. по какой причине выдано исключение :(
3. у тебя будут обрабатываться/изменяться все элементы, независимо от наличия у них нужного сочетания пробелов.
Совсем не гуд.
Ведь в запросе можно сразу выбрать только те элементы, у которых в выбранном поле есть более 2-х пробелов.

В общем, до исправления вышеперечисленного минусую.
a-novoselov; +1 Ответить
8. a-novoselov 1155 26.12.09 08:37 Сейчас в теме
(3) (5) (7) Спасибо большое! все поправил :)

(6) я имел ввиду именно такой алгоритм. А вообще, я всех тонкостей 77 не знаю, т.к. 1С начинал изучать сразу с 8.1
Поручик; artbear; +2 Ответить
9. artbear 1448 26.12.09 08:49 Сейчас в теме
(8) зря ты исправил порядок замены пробелов.
Раньше, когда сначала 3 пробела менялись на один, а потом 2, было правильно.
А сейчас наоборот и это неверно.
Например, стоит 3 пробела, у тебя сначала заменятся 2 пробела, и останется также 2 пробела, которые уже не будут заменены :(
11. artbear 1448 26.12.09 08:59 Сейчас в теме
В (9) был неправ :)
забыл, что ты исправляешь пробелы от 2 до 4 включительно, большее количество пробелов не будет исправлено, хотя такое их количество большая редкость, конечно.
наверное, это также не гуд :)
10. artbear 1448 26.12.09 08:54 Сейчас в теме
(8) 1. Я бы код
	|Объект = Выборка.Ссылка.ПолучитьОбъект();
|Объект.[Реквизит] = СтрЗаменить(Объект.[Реквизит], ""  "", "" "");
|Объект.[Реквизит] = СтрЗаменить(Объект.[Реквизит], ""  "", "" ""); // Если есть тройные или четверные пробелы	
|Сообщить(""Заменили ""+Объект.[Реквизит]);

заменил бы на немного другой, без обращения к реквизиту через объект, а через спец.переменную значениеРеквизита, которая заполняется из Выборка.Реквизит, а перед записью
Объект.[Реквизит] = значениеРеквизита;

2. сообщение о замене совсем не актуально и наверняка не очень нужно.
ИМХО удобнее просто вывести количество заменяемых элементов :)
7. artbear 1448 26.12.09 08:34 Сейчас в теме
(3+) 5. Также я посоветовал бы код
СписокВыбора.Добавить(МетаСправочник.Имя, МетаСправочник.Синоним);

исправить на следующий
СписокВыбора.Добавить(МетаСправочник.Имя, СокрЛП(МетаСправочник.Синоним) +"( "+МетаСправочник.Имя+" )");

Т.к. в некоторых конфигурациях синоним не всегда "совпадает" с именем, и это далеко не редкость :(
Будет чуть удобнее :)
12. MRAK 723 26.12.09 10:40 Сейчас в теме
На ИТС есть Универсальный поиск и обработка объектов. в ней в режиме 1С-Предприятие прикручиваешь свой код, который пишется за 5 минут (СтрЗаменить) - и вуаля!!!
Щасте!!!!
13. alexk-is 6533 26.12.09 20:15 Сейчас в теме
(12) Да, все правильно. Только не все могут написать код. И на портале не только программисты...
dobraleks; +1 Ответить
14. artbear 1448 28.12.09 08:06 Сейчас в теме
15. a-novoselov 1155 28.12.09 08:11 Сейчас в теме
16. artbear 1448 29.12.09 19:25 Сейчас в теме
17. werter 30.12.09 04:21 Сейчас в теме
Таб=СоздатьОбъект("ТаблицаЗначений");
Таб.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
Таб.НоваяКолонка("НовоеНазвание",2,200);
Тов=СоздатьОбъект("Справочник.Номенклатура");
Тов.ВыбратьЭлементы();
Пока Тов.ПолучитьЭлемент()=1 Цикл
Нашли=0;
Название=Тов.Наименование;
Пока Найти(Название," ")>0 Цикл
Нашли=1;
Название=СтрЗаменить(Название," "," ");
КонецЦикла;
Если Нашли=1 Тогда
Таб.НоваяСтрока();
Таб.Номенклатура=Тов.ТекущийЭлемент();
Таб.НовоеНазвание=Название;
КонецЕсли;
КонецЦикла;
Таб.ВыбратьСтроки();
Пока Таб.ПолучитьСтроку()=1 Цикл
Тов.НайтиЭлемент(Таб.Номенклатура);
Тов.Наименование=Таб.НовоеНазвание;
Тов.Записать();
КонецЦикла;
18. a-novoselov 1155 30.12.09 06:38 Сейчас в теме
(17) Да, ты прав, так все будет работать. А вот как сделать, если мы не знаем ни названия справочника, ни названия реквизита на этапе кодинга?
21. alexqc 150 30.12.09 13:47 Сейчас в теме
(18) В смысле - как в 77 по символьному имени обращаться?

Спр=СоздатьОбъект("Справочник." + имяСправочника);

ЗНРекв=Спр.ПолучитьАтрибут(имяРеквизита);

Спр.УстановитьАтрибут(имяРеквизита,ЗНРекв);

Для ТЗ - ПолучитьЗначение/УстановитьЗначение. Подробнее см. синтакс-помошник.


24. CheBurator 3119 30.12.09 18:25 Сейчас в теме
(18) в 8-ке не знаю, а 7.7 методами рвстроенного языка можно получать перечень всех справочников, документов, их реквизитов, типов и длин реквизитов и т.д.
Метаданные.Справчочник(счетчик1).Реквизит(счетчик2).Тип или .Длина
25. alexk-is 6533 30.12.09 20:29 Сейчас в теме
19. alteregoatg 30.12.09 13:18 Сейчас в теме
Скачал... работает, но не совсем корректно... пробовал для справочника Номенклатура... во-первых, может обрабатывать только Полное наименование, а Наименование почему-то нет... во-вторых, как я понял, убирать заданное количество пробелов, т.е. если есть 5 пробелов, то за один прогон обработка уберет 2 или 3 пробела, следовательно, обработку надо запускать несколько раз...
a-novoselov; +1 Ответить
20. v.l. 434 30.12.09 13:35 Сейчас в теме
(0) Предлагаю дополнить функционал - убивать лидирующие пробелы.
a-novoselov; +1 Ответить
31. laspii 21.02.11 12:11 Сейчас в теме
Не обрабатывает двойные кавычки, например 3,5" поменять на 3.5".
Доработал:
в функции Выборка, где встречается СтрокаСимволов.Символ
СтрокаПоиска = СТрЗаменить(СтрокаСимволов.Символ,"""","""""");
32. gineich 8 21.09.11 10:54 Сейчас в теме
крутая вещь !!! респект
33. serg85 30 13.10.11 18:33 Сейчас в теме
Спасибо за обработку, тема актуальна...
34. YuryKr 22.11.11 00:16 Сейчас в теме
Действительно стоящая обработка - любят у нас придумывать новую номенклатуру особенно через пробелы. Все исправляется и меняется
35. Deniz200 14.02.12 17:53 Сейчас в теме
Обработка полезна, но пока скачать и посмотреть не могу. Чем она отличается от поиска и замены значений?
36. a-novoselov 1155 16.02.12 10:00 Сейчас в теме
(35) Отличается тем, что ей может пользоваться простой пользователь, не программист, для конкретной задачи. Дописывать ничего не придется.
37. sdh 13.03.12 10:47 Сейчас в теме
прочитал по диагонали отзывы, бросилась в глаза дискуссия по убиранию пробелов, двойных, тройных и т.п..
я не знаю, как в 1с, возможно ли, но я такой алгоритм писал на SQL. все делается за один цикл. убирается/меняется двойной пробел " " на одинарный " " в цикле, пока находится двойной пробел. что то типа такого:
WHILE POS (str, " ") > 0 BEGIN
REPLACE(str, " ", " ")
END

при таком алгоритме гарантированно все лишние пробелы убираются и сокращаются до разрешенного одного. пробелы в начале и конце строки обрабатываются обрезанием (если нужно)
Designer1C; +1 Ответить
38. a-novoselov 1155 15.03.12 11:57 Сейчас в теме
(37) Да, алгоритм тут до боли простой. Но эта разработка была моим дебютом на Инфостарте))
39. Ardl 21.05.12 14:42 Сейчас в теме
Обработка действительно полезная!Пожалуйста, рассмотрите возможность фильтрации (отбора) внутри справочника. т.е. изменить какое-либо значение в справочнике при отборе по конкретному: коментарию, НДС, другим полям как номенклатурной катрочки, так и других справочников. Надеюсь идею смог донести!
40. a-novoselov 1155 21.05.12 15:28 Сейчас в теме
(39) Да, идею донести смогли, но пока времени нет заниматься этим, если будет свободное время - сделаю. Или можете сами (если есть желание) доработать / выложить со ссылкой на исходник.
41. Ardl 21.05.12 17:43 Сейчас в теме
Желание есть, но знаний не хватает! Буду смиренно ждать вашего релиза, в любом случае спасибо за оперативный ответ и обработку!
42. motya-98@list.ru 02.02.15 16:51 Сейчас в теме
Добрый вечер.
Не найдется ли файл RENUMBER.ERT для 7
Благодарю.
Оставьте свое сообщение