|
Нужно переименовать (Наименование) все товары в справочнике. | ☑ | ||
|---|---|---|---|---|
|
0
MSH5555
21.06.08
✎
13:45
|
Сабж.
Версия 1с - 7.7. Имеется база. В ней в поле наименование забит код и само наименование. Необходимо отделить код от наименования. Код должен быть сохранен в одно поле, наименование (без кода), соответственно, в наименование. Как это сделать наиболее удобно? Пытался сделать через выборку - при смене наименования либо выдает ошибку, что "сменили наименование" и дальше не работаем, либо при использовании второй копии справочника слетает выборка. В итоге меняется пара-тройка процентов товаров. Можно запустить заново, либо запустить в бесконечном цикле, но что-то такой вариант мне не нравится. Использовал выборку как по справочнику, так и по реквизиту - один черт. :( |
|||
|
1
romix
модератор
21.06.08
✎
13:50
|
Можно еще выбрать по реквизиту. Т.е. создать какой-нибудь реквизит с признаком сортировки.
Или можно еще коды записать в доп. реквизит (создать его), исправить наименования (коды будут уже там), а потом, выбирая элементы "по наименованию", исправить коды. |
|||
|
2
romix
модератор
21.06.08
✎
13:54
|
Резервную копию базы еще сделай.
|
|||
|
3
FreeFin
21.06.08
✎
14:02
|
(1) Зачем реквизит? (копию понятно делать всегда надо) В список собрать и всех делов.
Спс=СоздатьОбъект("СписокЗначений") ВыбратьЭлементы() Пока ПолучитьЭлемент Спс.ДобавитьЗначение(...ТекущийЭлемент()); и далее со списком Для Ном=1 ПоСпс.РазмерСписка() Цикл СМеняем=Спр.НайтиЭлемент(Спс.ПолучитьЗначение(ном)); СМеняем.Код=... СМеняем.Наименование=... СМеняем.Записать() и никуда выборка не денется. |
|||
|
4
FreeFin
21.06.08
✎
14:04
|
Перданул )))
Спр.НайтиЭлемент(Спс.ПолучитьЗначение(ном)); Спр.Код=... Спр.Наименование=... Спр.Записать() |
|||
|
5
кикабидзе
21.06.08
✎
14:15
|
||||
|
6
дущ
21.06.08
✎
14:27
|
(0) а код надо в предопределённый реквизит Код записать? Если да, то так делать нельзя, потому что база на середине может наткнуться на "Код не уникален". Тогда вначале делаешь ПорядокНаименований ВыбратьЭлементы, в "Код" прошиваешь какой-нибудь индексный счётчик (я обычно пользую "собакаХХХ"), затем ПорядокРеквизита ВыбратьЭлементы и там уже правильный код в "Код", наименование в "Наименование"
|
|||
|
7
MSH5555
21.06.08
✎
15:07
|
romix, не подходит, наверное. Хотя я не пробовал в справочнике делать сортировку по реквизиту, например, а потом переименовывать. Не дошло как-то...
Копию базы всегда делаю перед любым изменением. Тем более, что на этот код в наименовании завязано много всего. FreeFin, спс, логично. Кикабидзе, на счет Спр.ПорядокКодов() - попробую. Возможно будет достаточно сделать сортировку в самом справочнике... Дущ, естественно, код пишется в отдельное поле. 1С-овский код по каким-то причинам изначально не используется. Я бы вообще ничего не менял (и не менял) по принципу: "работает - не трожь". Но просто есть идея частично автоматизировать формирование кода + есть идея группировки товаров по коду (по первой цифре после букв:)). Код типа АА12345. АА - буквы, которые присваиваются вручную (в зависимости от поставщика - возможно будет в "полуавтоматическом режиме": выбрали поставщика и сразу выбрался буквенный код). 1 - "группа товаров". От 0 до 8, которая выбирается из списка (9 - используется для старых товаров, со временем все коды поменяются на коды по группам). 2345 - присваиваются автоматически по инкременту. Основная причина - чтобы в прайсе товар был отсортирован по "группам товаров". В справочнике товар разбросан по группам от поставщиков. Т.е. такой вариант не очень подходит. Тоже изначально так сложилось. До меня еще:) Всем спасибо. В понедельник буду пробовать. Заодно офтопичный вопрос: В коде товара есть как две буквы вначале, так и одна. Как наиболее красиво отделить буквенную часть кода от цифровой? Потом все-таки приведу код к "стандартному виду". :) |
|||
|
8
дущ
21.06.08
✎
18:19
|
(7) на мой взгляд проще всего методом исключения:
Функция ПолучитьБуквеннуюЧасть(СтрокаКода) Для Ном = 1 по СтрДлина(СтрокаКода) Цикл Символ = Сред(СтрокаКода, Ном, 1); Если Найти("0123456789", Символ) > 0 Тогда Возврат Лев(СтрокаКода, Ном - 1); КонецЕсли; КонецЦикла Возврат ""; //весь код символьный КонецФункции |
|||
|
9
levlvov
21.06.08
✎
18:40
|
См. желто-красные книжки.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |