Имя: Пароль:
1C
1С v8
Изменение справочника номенклатура
0 Triton_11
 
18.04.14
08:57
Как можно в справочнике номенклатура изменить код справочника чтобы бы в код добавлялся префикс например БГ
Например:
Код    наименование
0001   лопата
0002   совок
0003   ведро
стало:
БГ01   лопата
БГ02   совок
БГ03   ведро
это необходимо сделать с помощью внешней обработки
1 Triton_11
 
18.04.14
08:58
Я сделал так но неправильно
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Префикс = "БГ";
    Спр = Справочники.Номенклатура.Выбрать();
    Пока Спр.Следующий() Цикл
        СпрОбъект = спр.ПолучитьОбъект();
        А = СпрОбъект.Код;
        СпрОбъект.Код = Префикс + А;
        СпрОбъект.Записать();
    КонецЦикла;    
КонецПроцедуры
2 Ёпрст
 
18.04.14
08:59
продолжайте наблюдение
3 cw014
 
18.04.14
08:59
СпрОбъект.Код = Префикс + Прав(СпрОбъект.Код, СтрДлина(СпрОбъект.Код) - СтрДлина(Префикс));
4 ProProg
 
18.04.14
09:05
Есть миллион перенумераторов в гугле
5 Triton_11
 
18.04.14
09:05
(3) спасибо
6 Triton_11
 
18.04.14
09:07
и еще вопрос например:
Код    наименование
0001   лопата
0003   совок
0005   ведро
0007   ложка
0009   вилка
0011   кружка
необхадимо чтоб стало:
0001   лопата
0002   совок
0003   ведро
0004   ложка
0005   вилка
0006   кружка
7 cw014
 
18.04.14
09:09
(6) 1. Выучи русский язык - необхОдимо
2. ОбменДанными.Загрузка = Истина тебе в помощь
8 Triton_11
 
18.04.14
09:10
(7) cw014 а что за ОбменДанными
9 Godofsin
 
18.04.14
09:17
(8) В универсальнойОбработкеСправочниковИДокументов есть отличный нумератор
10 Triton_11
 
18.04.14
09:20
(9) мне необходимо решить эту задачу без использования нумератора
необходимо сделать это с помощью внешней обработки который я сам сделаю
11 Godofsin
 
18.04.14
09:23
(10) Зачем изобретать велосипед? Или это задание при устройстве на работу?
12 Godofsin
 
18.04.14
09:25
(6) Если нет контроля уникальности номера, тупо бери выборку элементов с сортировкой по алфавиту и присваивай им номер+1
13 Triton_11
 
18.04.14
09:25
(11) это можно сказать тестовые и обучающие задания
14 Triton_11
 
18.04.14
09:26
(12) программно покажите как
15 Godofsin
 
18.04.14
09:28
(14) Сначала ты покажи как пробуешь.
16 Triton_11
 
18.04.14
09:31
(15) честно говоря я даже не знаю как программно это можно реализовать не имею представления
17 Красный рассвет
 
18.04.14
09:50
(16) Попробуй разобраться, как сделано в (9)
18 Triton_11
 
18.04.14
10:01
(17) Я не нашел эту обработку примерно покажите как можно упорядочить
19 Triton_11
 
18.04.14
10:35
Процедура ОсновныеДействияФормыУпорядовочивание(Кнопка)
    Спр = Справочники.Номенклатура.Выбрать();
    Пока Спр.Следующий() Цикл
        СпрОбъект = спр.ПолучитьОбъект();
        СпрОбъект.Код = СтрЗаменить(Спробъект.Код,СпрОбъект.Код,СпрОбъект.Код+1);
        СпрОбъект.Записать();
    КонецЦикла;    
КонецПроцедуры
20 Triton_11
 
18.04.14
12:57
Подскажите как можно решить эту задачу
21 Triton_11
 
18.04.14
14:26
помогите пожалуйста как можно решить задачу с (6) я прогуглил но ничего толком не нашел
22 Triton_11
 
18.04.14
15:28
(9) Я в этой универсальной обработке не нашел нумератор
23 Михаил Козлов
 
18.04.14
15:41
(22) А я нашел.
24 Triton_11
 
18.04.14
15:45
(23) скажи где
25 scanduta
 
18.04.14
15:46
Обработка УниверсальныйПодборИОбработкаОбъектов
26 scanduta
 
18.04.14
15:46
на ИТС
27 Triton_11
 
18.04.14
15:47
(25) у меня такой обработки нет
28 Triton_11
 
18.04.14
15:48
(27) :((
29 Triton_11
 
18.04.14
15:49
(9) а эта обработка называется ГрупповаяОбработкаСправчониковИДокументов
30 Triton_11
 
21.04.14
08:23
подскажите как можно решить эту (6) задачу
31 Wobland
 
21.04.14
08:28
(30) а почему совок должен стать вторым номером?
32 Triton_11
 
21.04.14
08:40
(31) надо упорядочить по порядку
33 Triton_11
 
21.04.14
09:16
ап
34 vovus
 
21.04.14
09:36
это какой работодатель так много времени на выполнение тестового задания дает?
35 Triton_11
 
21.04.14
09:37
(34) ну это обучающие и тестовые задачи
мне хотя бы  сегодня надо ее сделать
36 barrgand
 
21.04.14
09:43
(35) Чтоб мне только такие задачи всегда давали..
37 Triton_11
 
21.04.14
09:45
(36) ну как ее можно решить подскажите
38 vovus
 
21.04.14
09:47
Не важно, какой именно там у тебя порядок, допустим, ты как-то упорядочил и перебираешь элементы.

Сч=0;
Пока Спр.Следующий Цикл
  Сч=Сч+1;
  ТекСпр=Спр.ПолучитьОбъект();
  ТекСпр.ОбменДанными.Загрузка=Истина;
  ТекСпр.Код=Префикс+Формат(Сч,"ЧЦ=4;ЧГ=");
  ТекСпр.Записать();
КонецЦикла
39 vovus
 
21.04.14
09:48
+ да, в форматную строку еще не помешает "ЧВН="
40 Triton_11
 
21.04.14
09:53
(38) че то не работает
я сделал так
Процедура ОсновныеДействияФормыУпорядовочивание(Кнопка)
    Префикс = "БР";
    Спр = Справочники.Номенклатура.Выбрать();
    Сч=0;
    Пока Спр.Следующий() Цикл
        Сч=Сч+1;
        ТекСпр=Спр.ПолучитьОбъект();
        ТекСпр.ОбменДанными.Загрузка=Истина;
        ТекСпр.Код=Префикс+Формат(Сч,"ЧЦ=4;ЧГ=");
        ТекСпр.Записать();
    КонецЦикла;
КонецПроцедуры
он не упорядочил
41 vovus
 
21.04.14
09:54
синтакс-помощник метод "Выбрать" справочника, 4 параметр
42 Triton_11
 
21.04.14
09:57
(41)
<Порядок> (необязательный)

Тип: Строка.
Строка с именем реквизита справочника, определяющая упорядочивание элементов в выборке. Может быть указано "Код", "Наименование" или имя одного из реквизитов примитивного типа (Число, Строка, Дата, Булево), для которого установлен признак "Индексирование" в значение "Индексировать" или в "Индексировать с дополнительным упорядочиванием" в конфигураторе. После имени реквизита через пробел может быть указано направление сортировки. Направление определяется: "Убыв" ("Desc") - упорядочивать по убыванию; "Возр" ("Asc") - упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Если параметр не указан, то порядок определяется основным представлением справочника.
Значение по умолчанию: Пустая строка.
что то я не понял как можно упорядочить подскажи как
43 vovus
 
21.04.14
09:58
Например так:
Справочники.Номенклатура.Выбрать("Наименование")
44 vovus
 
21.04.14
09:59
т.е. выбрать(,,,"Наименование"), ну ты понел
45 Triton_11
 
21.04.14
10:02
я сделал так
Спр = Справочники.Номенклатура.Выбрать(,,,"Код");
все равно не работает
46 vovus
 
21.04.14
10:09
)) а на что расчитывал? добавь так "Код Убыв", будет поприкольнее
47 Triton_11
 
21.04.14
10:12
(46) не упорядочивает все равно
не работает
48 Triton_11
 
21.04.14
10:33
(38) не работает
49 vovus
 
21.04.14
10:35
а как надо упорядочить-то?
50 Triton_11
 
21.04.14
10:37
(49) надо  например:
было:
001
003
005
007
010
077
чтоб стало:
001
002
003
004
005
006
и чтобы по коду упрядочилась
51 vovus
 
21.04.14
10:39
а что не работает? коды те же остаются что ли?
52 Acturus
 
21.04.14
10:42
Процедура ДобавитьПрефиксНаСервере() Экспорт
Спр=Справочники.Номенклатура.Выбрать("код");
Флаг=0;
Пока Спр.Следующий() Цикл
Флаг=Флаг+1;    
СтрСпр=Спр.ПолучитьОбъект();
СтрСпр.ОбменДанными.Загрузка=Истина;
СтрСпр.Код=Формат(Флаг,"ЧЦ="+Метаданные.Справочники.Номенклатура.ДлинаКода+"; ЧВН=; ЧГ=");
СтрСпр.Записать();
КонецЦикла
КонецПроцедуры

Так попробуй
53 Triton_11
 
21.04.14
10:43
у меня номенклатура разделена по группам он и группы меняет мне этого не надо
54 Triton_11
 
21.04.14
10:44
группа одежда
и группа продукты
55 vovus
 
21.04.14
10:47
а, ну в цикл добавь
Если Спр.ЭтоГруппа Тогда
  Продолжить;
КонецЕсли;
56 Triton_11
 
21.04.14
10:54
(55) спасибо вродь теперь понял
а если номенклатура по 2 группам разделена то тогда как быть   он раскидывает нумерацию по обойм группам
например:
гр1:
001
002
005
007
гр2:
003
004
006
008
он все правильно делает т.е. упрядочивает но
необхадимо чтоб делал
гр1:
001
002
003
004
гр2:
005
006
007
008
и он нули что то убрал те сделал так:
гр1:
БР1
БР2
БР5
БР7
гр2:
БР3
БР4
БР6
БР8
57 vovus
 
21.04.14
11:04
Запросом тогда проще выбрать и там уже упорядочить как надо
58 Triton_11
 
21.04.14
11:05
(57) без запроса никак
59 sdfqwe
 
21.04.14
11:06
Чем задача проще тем... Длиннее список комментов в мисте.
60 vovus
 
21.04.14
11:15
(58) может, можно через параметры метода "выбрать", почитай про него еще в СП
61 Triton_11
 
21.04.14
11:16
(57) а запросом тогда как можно примерно вот так:
Процедура ОсновныеДействияФормыУпорядовочивание(Кнопка)
    Префикс = "KZ";
    Спр = Справочники.Номенклатура.Выбрать(,,,"Код Возр");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код КАК Код,
    |    Номенклатура.Ссылка КАК Ном
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    |    Код";
    Результат = Запрос.Выполнить().Выбрать();
    Сч=0;
    Пока Результат.Следующий() Цикл
        Если Спр.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;
        Сч=Сч+1;
        ТекСпр=Спр.ПолучитьОбъект();
        ТекСпр.ОбменДанными.Загрузка=Истина;
        ТекСпр.Код=Префикс+Формат(Сч,"ЧЦ=4;ЧГ=");
        ТекСпр.Записать();
    КонецЦикла;
КонецПроцедуры
62 vovus
 
21.04.14
11:22
после УПОРЯДОЧИТЬ ПО добавь ЭтоГруппа, Родитель, а потом уже Код
63 vovus
 
21.04.14
11:23
ЭтоГруппа Убыв
64 Triton_11
 
21.04.14
11:59
(57) vovus напиши программно как можно это реализовать через запрос
65 Triton_11
 
21.04.14
12:32
up
66 vovus
 
21.04.14
12:52
|УПОРЯДОЧИТЬ ПО
|   ЭтоГруппа УБЫВ,Родитель,Код";
67 Triton_11
 
21.04.14
13:07
(66) можешь написать весь код я че то не догоняю как можно изменить в запросе
68 vovus
 
21.04.14
13:10
а что именно не догоняешь? единственное изменение - в упорядочить по
69 Triton_11
 
21.04.14
13:18
(68)
Процедура ОсновныеДействияФормыУпорядовочивание(Кнопка)
    Префикс = "KZ";
    Спр = Справочники.Номенклатура.Выбрать(,,,"Код Возр");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код КАК Код,
    |    Номенклатура.Ссылка КАК Ном
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    |    Код";
    Результат = Запрос.Выполнить().Выбрать();
    Сч=0;
    Пока Результат.Следующий() Цикл
        Если Спр.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;
        Сч=Сч+1;
        ТекСпр=Спр.ПолучитьОбъект();
        ТекСпр.ОбменДанными.Загрузка=Истина;
        Результат.Код=Префикс+Формат(Сч,"ЧЦ=4;ЧГ="); вот здесь как можно в запросе че то изменить
        ТекСпр.Записать();
    КонецЦикла;
КонецПроцедуры
или
Процедура ОсновныеДействияФормыУпорядовочивание(Кнопка)
    Префикс = "KZ";
    Спр = Справочники.Номенклатура.Выбрать(,,,"Код Возр");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код КАК Код,
    |    Номенклатура.Ссылка КАК Ном
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    |    Код";
    Результат = Запрос.Выполнить().Выбрать();
    Сч=0;
    Пока Результат.Следующий() Цикл
        Если Спр.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;
        Сч=Сч+1;
        ТекСпр=Спр.ПолучитьОбъект();
        ТекСпр.ОбменДанными.Загрузка=Истина;
        ТекСпр.Код=Результат.код; он ругается что код не уникален
        ТекСпр.Записать();
    КонецЦикла;
КонецПроцедуры
я вот что не догоняю как можно с помошью этого запроса изменить сам справочник
как это делается из-за этого я те попросил весь код мне написать как можно эту задачу решить с помошью запроса
70 vovus
 
21.04.14
13:32
Вот в первом запросе все ок, только поправь строчку:
|УПОРЯДОЧИТЬ ПО
|   ЭтоГруппа УБЫВ,Родитель,Код";

и убери вот это:
Если Спр.ЭтоГруппа Тогда
   Продолжить;
КонецЕсли;

и еще вот здесь поправь:
Результат.Код=Префикс+Формат(Сч,"ЧЦ=4;ЧГ=;ЧВН=");

ну и убери эту строчку:
Спр = Справочники.Номенклатура.Выбрать(,,,"Код Возр");
- это уже не нужно
71 Triton_11
 
21.04.14
13:40
вот:
Процедура ОсновныеДействияФормыДействие(Кнопка)
    Префикс = "KZ";
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код КАК Код,
    |    Номенклатура.Ссылка КАК Ном
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    |    Номенклатура.ЭтоГруппа УБЫВ,
    |    Номенклатура.Родитель,
    |    Код";
    Результат = Запрос.Выполнить().Выбрать();
    Сч=0;
    Пока Результат.Следующий() Цикл
        Сч=Сч+1;
        Результат.Код=Префикс+Формат(Сч,"ЧЦ=4;ЧГ=;ЧВН=");
    КонецЦикла;
КонецПроцедуры
ошибка:
{Форма.Форма.Форма(45)}: Поле объекта недоступно для записи (Код)
        Результат.Код=Префикс+Формат(Сч,"ЧЦ=4;ЧГ=;ЧВН=");
72 vovus
 
21.04.14
13:54
:) в отпуск или поспать, потом снова за код
73 vovus
 
21.04.14
13:55
потом читай (69) -> (70)
74 Triton_11
 
21.04.14
13:56
(72) vovus спасибо большое я решил эту задачу она принята
так что насчет этого (71) можно не замарачиваться
75 Godofsin
 
21.04.14
13:59
(36) +1
76 viramen
 
21.04.14
14:13
(0) Есть специальная обработка, вроде, универсальный подбор называется