gifts2017

Уменьшение длины кода справочников и документов в 1С 7.7

Опубликовал Олег Андриевский (Legolas) в раздел Обработки - Обработка документов

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

Версия 1.0: Универсальная внешняя обработка для 1С 7.7 (по метаданным), выполняющая перенумерацию документов и не подчиненных справочников (старый код сохраняется, длина кода уменьшается за счет сокращения нулей). Есть возможность перенумеровать не весь справочник, а определенный интервал, указанный пользователем.

Версия 1.1: Добавил возможность уменьшить длину номера у ПОДЧИНЕННЫХ справочников (Спр.ИспользоватьВладельца(<>)), в версии 1.0 просто не выберутся элементы, если справочник подчиненный. Нужно в поле "Владелец" указать тип владельца и указать элемент-владелец.  Проверил на справочнике ОС на ББУ 644 релиза, уменьшает коды, там структура кодов была "1010Х000..00Х..Х".

Если какие вопросы или предложения будут, пишите в комментарии...

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

Наименование Файл Версия Размер
Уменьшение длины кода (Версия 1.0) 46
.ert 33,50Kb
23.02.12
46
.ert 33,50Kb Скачать
Уменьшение длины кода (Версия 1.1) 28
.ert 64,50Kb
23.02.12
28
.ert 64,50Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Евгений Сорокин (SEvAn) 21.02.12 08:51
ББУ 7.7 релиз 646, на справочнике ОС не работает!
2. Олег Андриевский (Legolas) 21.02.12 22:23
Причина, по всей видимости, в том, что ОС - подчиненный справочник, для выборки элементов необходимо использовать владельца. В ближайшее время в обработку добавлю поле "Владелец" и выложу новую версию.
Прикрепленные файлы:
mtvotvinta; +1 Ответить 1
3. Ruslan (rus128) 22.02.12 11:42
Судя по картинке, при указании диапазона кодов выборка идет по наименованиям? Иначе почему код 0000001296 не был изменен, тогда как 0891 и 0935 изменены? И где указывается само правило изменения кода - уменьшить код на N нулей?
4. Ruslan (rus128) 22.02.12 11:44
Про правило уже понял - "Привести к длине" просто вырезает лишние нули.
(2) для ОС нужно быть осторожным - там вместо префикса зачастую указывается код группы.
5. JER MARK (JER_MARK) 22.02.12 12:28
А если код не числовой, буквенный например - как работает?
6. Олег Андриевский (Legolas) 22.02.12 13:15
Никогда не встречал полностью буквенный код на практике, поэтому этот вариант не стал учитывать. Такие коды будут пропускаться.
rus128, про код группы согласен.. Универсальный алгоритм, который бы учитывал все случаи, написать довольно непросто, да я и не ставил такую цель в этой обработке. По возможности буду реализовывать.
7. Олег Андриевский (Legolas) 24.02.12 16:29
Выложил новую версию (версия 1.1), в описании написано, что нового в обработке.
9. Алексей Ермилов (Alex_E) 16.09.12 23:54
Много раз приходилось делать с точностью до наоборот - восстанавливать нули, после того, как ретивые пользователи их убирали, а потом жаловались, что не сохраняется справочник или документ, т.к. код (номер) не уникальный. Непонятно зачем сей изыск мог понадобиться? Размер dbf от этого не уменьшится. Зачем тогда?
10. Алексей Валерьевич (AVKonya) 17.09.12 00:10
(9) Использовал данную обработку как раз для восстановления нулей, прекрасно справилась.
было 1,2,3 etc - стало 000001, 000002, 000003 etc

По вопросу - для чего уменьшать? - ответить не могу, не сталкивался :)
11. Алексей Ермилов (Alex_E) 17.09.12 09:00
(10) AVKonya,Если добавить нули - тогда понятно, хотя есть универсальный подбор и обработка объектов с ИТС в которой есть и перенумерация в различных вариантах, но публикация то как я понял из заголовка - для уменьшения длины кодов. Не стоит вводить хотя бы новичков в искушение сократить длину номера за счет нолей - не пришлось бы потом эти ноли восстанавливать... Да и кому эти ноли мешают? :-)
12. Олег Андриевский (Legolas) 17.09.12 22:22
Сейчас расскажу для чего писалась эта обработка. Меня попросили написать ее, потому что при переносе в 8-ку (а в 8-ке длина кода была меньше, чем в 7-ке) записывался код 00000003 как 000000 (к примеру), соответственно остальные также были в таком виде (00000004 как 000000) и т.д.
Можно было решить проблему, подправив правила конвертации (а именно не переносить код, а генерировать при записи например, там галочка есть специальная), но пользователям важно было сохранить числовой код (пожертвовав для этого несколькими нулями). Именно поэтому не пошли простым путем - просто перекодировав его стандартной обработкой...
Вот собственно один из примеров ее использования =)
13. Николай Зевеке (zekrus) 20.11.12 16:17
Может я не совсем правильно понял цель обработки, скачал но запускать не стал.
После перенумерации (у нас был тип кода строковый), поменял тип кода на числовой.
Изменил после этого длину кода в конфигураторе и вернул назад в строковый.
Спасибо, можно в некоторых случаях обойтись и штатными средствами.
14. DAnry (DAnry) 28.12.12 15:18
(13) zekrus, Обработка очень полезная! Например, при переходе с 1с77 на 1с8х с использованием конвертации