Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
1

Упорядочивание элементов справочника

20.08.2013, 10:07. Просмотров 1722. Ответов 17
Метки нет (Все метки)

Всем привет. Подскажите пожалуйста, как можно в справочнике упорядочить нумерацию так, чтобы она была не в алфавитном порядке, а в удобной для восприятия форме.
0
Миниатюры
Упорядочивание элементов справочника  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 10:07
Ответы с готовыми решениями:

Фильтр элементов справочника
Можно ли в 1С реализовать следующее: Есть два справочника. Справочник2 имеет...

Выбор из справочника элементов
1С предприятие 8.2 Можно ли сделать так, чтобы после выбора очередного...

Отбор (выборка) элементов справочника
Добрый день, Ситуация следующая: Имеется иерархический (2 уровня) справочник...

Распределение элементов справочника по группам
Здраствуйте. Как можно изменить у существующего элемента справочника родителя,...

Выбор элементов справочника по нескольким реквизитам
Могу сделать выборку по реквизиту1, могу сделать выборку по реквизиту2 и т.д.,...

17
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
20.08.2013, 15:07  [ТС] 2
Цитата Сообщение от Nykos Посмотреть сообщение
Всем привет. Подскажите пожалуйста, как можно в справочнике упорядочить нумерацию так, чтобы она была не в алфавитном порядке, а в удобной для восприятия форме.
ПС
Подумал и решил, что попробую привязать данное поле к полю Код, которое будет числовым. Должно получится так, что значению "1.1.1" будет соответствовать код "0111", значению "1.1.21" - код "1121" и так далее. А после просто делаю сортировку по коду и справочник принимает приятный вид. Надеюсь, вы меня поняли и догадка моя адекватная) Только помогите с синтаксисом....
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
20.08.2013, 20:49 3
по вашей схеме элементы "1.1.21", "11.2.1", "1.12.1" и т.д. - будут иметь одинаковый код "1121"

Добавлено через 1 минуту
Цитата Сообщение от Nykos Посмотреть сообщение
Всем привет. Подскажите пожалуйста, как можно в справочнике упорядочить нумерацию так, чтобы она была не в алфавитном порядке, а в удобной для восприятия форме.
В удобной для восприятия форме - не совсем догоняю о чем вы. Может про дерево?
0
Dethmontt
Модератор
Эксперт 1С
2643 / 2436 / 415
Регистрация: 10.03.2011
Сообщений: 8,699
Записей в блоге: 1
Завершенные тесты: 1
20.08.2013, 23:21 4
В типовых есть доп поле называется "Порядок" числовое поле определяющее правильный порядок
1
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
21.08.2013, 11:28  [ТС] 5
Цитата Сообщение от wladimir_ui Посмотреть сообщение
по вашей схеме элементы "1.1.21", "11.2.1", "1.12.1" и т.д. - будут иметь одинаковый код "1121"
Точно. Внесу некоторые уточнения. Есть такая возможность - с помощью массива (насколько я понял - функция Подстрока()) перейти к виду "1.1.21"-0101021", "11.2.1"-"0110201". Где "1.1.21" - наименование, "0101021" - код. Тоесть перебором посимвольно заменить точки на нули и перед строкой дополнительно проставить "0". Ну и в цикл это загнать наверное... Код должен иметь именно такой формат, т.к. "надо"(с)руководство. )

Такое возможно?

Добавлено через 2 часа 42 минуты
И еще такой момент. Создал процедуру в ФормеЭлемента, которая меняет Код на нужный мне формат, но меняет только после того как я отредактирую поле Наименование. А мне нужно, чтобы при открытии Код был уже изменен, причем во всем справочнике. Наверное надо в ФормеСписка это прописывать.
Тут тогда еще один вопрос. Могу я в ФормеСписка сослаться на процедуру из ФормыЭлемента так, чтобы при открытии справочника везде был уже нужный мне формат. Потому как при обычном копировании процедуры куча ошибок о том, что переменные не найдены.

Добавлено через 10 минут
Или мне вообще не нужны эти формы и сделать что-то похожее на это:

1C
1
2
3
4
5
6
7
8
9
10
11
12
Запрос = Новый Запрос(" 
|ВЫБРАТЬ 
|   Код 
|ИЗ 
|   Справочник.Номенклатура 
|АВТОУПОРЯДОЧИВАНИЕ"); 
    
Результат = Запрос.Выполнить().Выбрать(); 
 
Пока Результат.Следующий() Цикл 
    //цикл для замены кода 
КонецЦикла;
?
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
21.08.2013, 12:15 6
в конфигураторе:
меню файл - новый - внешняя обработка - добавте форму - готово - (автоматом сгенерится с кнопкой "выполнить") - перейдите в модуль формы, там будет:

Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика. <-сюда пхайте свой код
КонецПроцедуры

сохраняете - запускаете 1сПредприятие - меню файл - открыть - открываете свою обработку - нажимаете кнопку выполнить

Добавлено через 1 минуту
и все это делайте на копии базы, чтобы небыло мучительно больно...

Добавлено через 4 минуты
1C
1
2
3
4
5
6
7
8
9
10
11
12
    Запрос = Новый Запрос("ВЫБРАТЬ
                          | Номенклатура.Ссылка
                          |ИЗ
                          | Справочник.Номенклатура КАК Номенклатура");
                          
    Результат = Запрос.Выполнить().Выбрать(); 
     
    Пока Результат.Следующий() Цикл 
        Объект = Результат.Ссылка.ПолучитьОбъект();
        Объект.Код = //.... вашаФормула
        Объект.Записать();
    КонецЦикла;
1
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
21.08.2013, 12:38  [ТС] 7
Спасибо! Прописал Код="12345" и во всем справочнике код поменялся на 12345. Работает,принцип понятен.)
А вот у меня в справочнике есть поле "Номер" (внешний вид его в моем самом верхнем посте). И мне надо сделать так, чтобы Код равнялся Номеру, только вместо точек в Коде должны быть нули, ну и спереди нолик дописать. (пример: "1.1.21"-0101021"). Не подскажешь как это сделать?
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
21.08.2013, 12:58 8
Объект.Код = СтрЗаменить(Объект.Номер,".","0")
1
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
21.08.2013, 17:24  [ТС] 9
Цитата Сообщение от wladimir_ui Посмотреть сообщение
Объект.Код = СтрЗаменить(Объект.Номер,".","0")
Спасибо!

А как мне сделать так, чтобы перед кодом добавлялся ноль, потом сам код, а после кода дозаполнить строку нулями, чтобы в сумме строка состояла из 10 символов? Пример: "1.1.21" - "0101021000").

Добавлено через 2 часа 57 минут
Цитата Сообщение от Dethmontt Посмотреть сообщение
В типовых есть доп поле называется "Порядок" числовое поле определяющее правильный порядок
Не подскажете где именно?
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
22.08.2013, 05:12 10
конкатенация строк
Строка1 = Строка2+Строка3+...+СтрокаN.
Объект.Код = "0"+СтрЗаменить(Объект.Номер,".","0")+"00000000000000000"
Вы бы хоть чуток справку встроенную поюзали, или гугл, в конце та концов
1
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
22.08.2013, 10:01  [ТС] 11
Спасибо, буду юзать.

Добавлено через 21 минуту
Но дело в том, что я делал ровно так, как вы сказали, и строка получается 16-символьльная и фиксированная везде, а если я изменяю в последнем выражении количество нулей до необходимого мне, тогда у меня строка Кода варьируется в зависимости от количества символов в поле Номер. То восемь, то девять, то одиннадцать. Вы уж простите меня за мое непонимание, но все же.

Добавлено через 38 минут
Установка длины поля в свойствах ничего не дает...
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
22.08.2013, 10:02 12
СтрДлина(<Строка>) - Получает количество символов в строке.

проверяй длину и в цикле добивай нулями до нужной длины
1
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
22.08.2013, 10:12 13
в конце та концов откройте справку, там подробно и с примерами...
0
Миниатюры
Упорядочивание элементов справочника  
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
22.08.2013, 10:39  [ТС] 14
А может как-то так?
1C
1
2
3
4
5
6
7
8
9
10
11
12
Запрос = Новый Запрос("ВЫБРАТЬ
                          | Номенклатура.Ссылка
                          |ИЗ
                          | Справочник.Номенклатура КАК Номенклатура");
                          
    Результат = Запрос.Выполнить().Выбрать(); 
     
    Пока Результат.Следующий() Цикл 
        Объект = Результат.Ссылка.ПолучитьОбъект();
        Объект.Код = "Лев("00000000000"+СтрЗаменить(Объект.<моя строка>, ".", "0"), <НужнаяДлина>)";
        Объект.Записать();
    КонецЦикла;
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
22.08.2013, 11:04 15


Добавлено через 1 минуту
вариантов выше крыши...
я чего то не пойму: вы хотите чтоб вам кто то от и до код написал?
0
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
22.08.2013, 11:53  [ТС] 16
Ладно. Ничего не хочу. Спасибо за помощь, без вас и с этим бы не справился.

Добавлено через 41 минуту
В общем как-то так. Добился того что нужно. Еще раз всем спасибо)

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос("ВЫБРАТЬ
    | Номенклатура.Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура");
    
    Результат = Запрос.Выполнить().Выбрать(); 
    
    Пока Результат.Следующий() Цикл 
        Объект = Результат.Ссылка.ПолучитьОбъект();
        Объект.Код = "0" + Лев(СтрЗаменить(Объект.Номер, ".", "0")+"00000000",9);//неясно как, но работает
        Объект.Записать();
    КонецЦикла; 
КонецПроцедуры
1
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
22.08.2013, 11:55 17
1
Nykos
1 / 1 / 0
Регистрация: 28.09.2011
Сообщений: 28
03.09.2013, 11:37  [ТС] 18
Друзья, а почему при выгрузке из экселя поле Код остается пустым в иерархическом справочнике у родителей? Хотя напротив каждого родителя в документе ексел код присутствует...
0
03.09.2013, 11:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2013, 11:37

Отображение элементов конкретной группы справочника
Добрый день! Помогите, пожалуйста, понять в чем ошибка. у меня есть...

Запрет на изменение редактирования элементов в группе Справочника
Делаю подписку на события ПередЗаписью. Есть справочник.МойСправочник, там есть...

Созданеи элементов справочника средствами встроенного языка. 1с 8.1
Как средствами языка создать элемент справочника и заполнить его? нагуглил вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru