|
Как преобразовать строку? 🠗 (Волшебник 20.02.2017 10:32) | ☑ | ||
---|---|---|---|---|
0
1сПупс
20.02.17
✎
09:25
|
добрый день!
есть тз, чтобы размеры (р.) в артикуле справочника Номенклатура были вначале. Например: "Картонная коробока р.-17,5" Наваял код: объект1 = выборка.Ссылка.ПолучитьОбъект(); ДлинаСтроки = СтрДлина(выборка.ссылка.Наименование); НомерВхождения = Найти(выборка.ссылка.Наименование, "р.-"); СтрокаВставки = Прав(выборка.ссылка.Наименование, ДлинаСтроки-НомерВхождения-СтрДлина("д.-")); объект1.Артикул = СтрокаВставки; объект1.записать(); а как бы сделали вы? поделитесь опытом пожалуйста. |
|||
1
Ёпрст
20.02.17
✎
09:29
|
(0) дык хрень же написана, с Прав
|
|||
2
Ёпрст
20.02.17
✎
09:29
|
Ну и если че, то так:
объект1.Артикул = Сред(выборка.ссылка.Наименование,Найти(выборка.ссылка.Наименование, "р.-")); |
|||
3
Мимохожий Однако
20.02.17
✎
09:30
|
(0) Прикольно.
|
|||
4
dezss
20.02.17
✎
09:36
|
(2) + СтрДлина("р.-");
|
|||
5
Неверный Параметр И
20.02.17
✎
09:38
|
Выборка.Ссылка.Ссылка.Ссылка.Ссылка.Наименование же!
|
|||
6
Diman_Kr
20.02.17
✎
09:38
|
(4) зачем?
|
|||
7
1Снеговик
гуру
20.02.17
✎
09:38
|
(0) хоть бы пример привел что должно получиться в артикуле
|
|||
8
dezss
20.02.17
✎
09:39
|
(6) Чтоб без самого "р.-"
|
|||
9
Diman_Kr
20.02.17
✎
09:41
|
(8) У него с р.- вроде бы должно быть
|
|||
10
dezss
20.02.17
✎
09:43
|
(9) Да у него чет вообще не совсем понятно что ложно быть.
Может и так объект1.Артикул = Сред(выборка.ссылка.Наименование,Найти(выборка.ссылка.Наименование, "р.-")) + объект1.Артикул; |
|||
11
dezss
20.02.17
✎
09:44
|
Снеговик правильно написал, пусть пример дает.
|
|||
12
luter-89
20.02.17
✎
09:44
|
Куча неявных запросов
|
|||
13
1сПупс
20.02.17
✎
09:45
|
(7) в артикуле дб 17,5
|
|||
14
Serg_1960
20.02.17
✎
09:46
|
Сегодня не пятница, но тема навеяло :)
"Коробка с рисунком "р.с.ф.с.р.", размер - 17,5" |
|||
15
dezss
20.02.17
✎
09:47
|
(13) А ниче, что у тебя может быть куча номенклатуры с одинаковым артикулом?
|
|||
16
luter-89
20.02.17
✎
09:48
|
Зачем размер хранить в артикуле? А доп. характеристики, либо доп. реквизиты?
|
|||
17
Serg_1960
20.02.17
✎
09:50
|
(14) PS: прежде чем алгоритмы писать, надо наименования нормализовать. Или, хотя бы, алгоритмом проверки пройтись, чтобы выявить "проблемные" наименования.
|
|||
18
xXeNoNx
20.02.17
✎
09:51
|
ДлинаСтроки = СтрДлина(выборка.ссылка.Наименование);
НомерВхождения = Найти(выборка.ссылка.Наименование, "р.-"); Садись - Два. 1. Обращение через точку приводит к неявному левому соединению(скорее всего там есть ТЧ) 2. В ЯЗ есть функция "ПОДОБНО" 3. Должна быть уверенность что юзеры не ошиблись в наименовании 4. Рекомендую почитать про функцию "ПРЕДСТАВЛЕНИЕ" |
|||
19
1Снеговик
гуру
20.02.17
✎
09:52
|
(17) а еще до этого нужно нормализовать задачу, а может вообще все переделать, потому что размер в артикуле - это не нормально)
|
|||
20
1сПупс
20.02.17
✎
10:02
|
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&Папка) | И (НЕ Номенклатура.ЭтоГруппа) | И (НЕ Номенклатура.ПометкаУдаления) | И (НЕ Номенклатура.ЭтоГруппа)"; запрос.УстановитьПараметр("Папка",ПолеВвода1); выборка= Запрос.Выполнить().Выбрать(); Пока выборка.Следующий() Цикл ИмяНоменклатуры = выборка.ссылка.Наименование; Если Найти(ИмяНоменклатуры, "р.-")>0 Тогда объект1 = выборка.Ссылка.ПолучитьОбъект(); объект1.Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "р.-")+СтрДлина("р.-")); объект1.записать(); Сообщить(объект1.наименование + " записан артикул"); (19) такое тз ! (18) как вы в запросе будете использовать функцию "ПОДОБНО"? |
|||
21
luter-89
20.02.17
✎
10:05
|
Выборка.Ссылка используй один раз, зачем делаешь лишние вызовы?
|
|||
22
dezss
20.02.17
✎
10:06
|
(20) Мой препод по программированию меня бы немножко убил за такое на первом курсе.)))
Индекс = Найти(ИмяНоменклатуры, "р.-"); Чтоб 2 раза не искать, но это уже больше придирки. |
|||
23
dezss
20.02.17
✎
10:07
|
Сообщить(ИмяНоменклатуры + " записан артикул");
Семен Семеныч :( |
|||
24
1сПупс
20.02.17
✎
10:13
|
(23) откуда вы знаете как меня зовут?
|
|||
25
dezss
20.02.17
✎
10:15
|
(24) ё-мое...
уже есть поколение, которое вроде как относительно взрослое, но не понимает откуда это словосочетание))) Ячёужестар?))) |
|||
26
1сПупс
20.02.17
✎
10:21
|
сделал так:
Пока выборка.Следующий() Цикл ИмяНоменклатуры = выборка.ссылка.Наименование; Если Найти(ИмяНоменклатуры, "д.-")>0 Тогда Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "д.-")+СтрДлина("д.-")); ИначеЕсли Найти(ИмяНоменклатуры, "Д.-")>0 Тогда Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "Д.-")+СтрДлина("Д.-")); ИначеЕсли Найти(ИмяНоменклатуры, "д-")>0 Тогда Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "д-")+СтрДлина("д-")); ИначеЕсли Найти(ИмяНоменклатуры, "Д-")>0 Тогда Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "Д-")+СтрДлина("Д-")); ИначеЕсли Найти(ИмяНоменклатуры, "диам. ")>0 Тогда Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "диам. ")+СтрДлина("диам. ")); ИначеЕсли Найти(ИмяНоменклатуры, "диам.")>0 Тогда Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "диам.")+СтрДлина("диам.")); ИначеЕсли Найти(ИмяНоменклатуры, "д. ")>0 Тогда Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "д. ")+СтрДлина("д. ")); ИначеЕсли Найти(ИмяНоменклатуры, "д.")>0 Тогда Артикул = Сред(ИмяНоменклатуры,Найти(ИмяНоменклатуры, "д.")+СтрДлина("д.")); КонецЕсли; Если ЗначениеЗаполнено(Артикул) Тогда объект1 = выборка.Ссылка.ПолучитьОбъект(); объект1.записать(); Сообщить(объект1.наименование + " записан артикул"); КонецЕсли; |
|||
27
luter-89
20.02.17
✎
10:23
|
И один фиг все равно делает два раза Выборка.Ссылка)))
|
|||
28
1dvd
20.02.17
✎
10:26
|
(25) Ты суперстар
(0) братуха, работает - не трожь Не надо зацикливаться. Тут тебе понасоветуют как правильно писать 1с. Не парься. Тут как на войне - умри, но сделай. Сделал? какие претензии? |
|||
29
Fish
20.02.17
✎
10:27
|
объект1 = выборка.Ссылка.ПолучитьОбъект();
объект1.записать(); Это имхо генияально! :) |
|||
30
dezss
20.02.17
✎
10:27
|
(27) Так сразу получать объект - не комильфо. А вдруг он не нужен будет.
(26) добавь Артикул = ""; в начале цикла. |
|||
31
dezss
20.02.17
✎
10:28
|
(26) Или даже Артикул = Неопределено;
|
|||
32
1dvd
20.02.17
✎
10:28
|
(29) что не так?
|
|||
33
Fish
20.02.17
✎
10:29
|
(32) А зачем записывать объект, ничего в нём не изменив?
|
|||
34
dezss
20.02.17
✎
10:29
|
(29) ааа....точна...
(32) присвоить артикул забыл) |
|||
35
luter-89
20.02.17
✎
10:29
|
(30) выборка.ссылка.Наименование в цикле тоже не камильфо.
В запросе наименование получить сразу нельзя?? |
|||
36
dezss
20.02.17
✎
10:31
|
(35) Ну зачем же искать легкие пути.)
|
|||
37
1сПупс
20.02.17
✎
10:33
|
(34) тест на внимательность пройден.
|
|||
38
luter-89
20.02.17
✎
10:33
|
(36) С таким подходом через n-е количество лет у тебя будет все тормозить, возьмут другого спеца, который будет все переписывать
|
|||
39
dezss
20.02.17
✎
10:35
|
(38) А при чем тут я-то?
Это не мой код. |
|||
40
luter-89
20.02.17
✎
10:35
|
(39) )) Я перепутал с автором))
|
|||
41
dezss
20.02.17
✎
10:42
|
(26) Я вообще ярый противник подобных конструкций.
Предпочитаю на форме инициировать список таких значений и уже искать в нем. А то потом добавится какое-нибудь еще одно определение размера и надо будет код править, а так, только добавить реквизит. |
|||
42
1сПупс
20.02.17
✎
10:52
|
(41) а как сохранишь список значений при закрытии?
|
|||
43
dezss
20.02.17
✎
11:06
|
(42) Если это не внешняя обработка, то в свойствах формы ставишь Использовать в "АвтоматическоеСохранениеДанныхВНастройках" и напротив нужных реквизитов ставишь галку "Сохранение".
Потом заполняешь реквизиты для пользователя (вот тут можно при пустых реквизитах заполнить твоими значениями ПриОткрытии, например). И все, данные реквизиты будут сохранены для этого пользователя. Возможно только до тех пор, пока он заходит со своего компа под этим пользователем, я этого не проверял. |
|||
44
dezss
20.02.17
✎
11:07
|
(42) Для внешних я не проверял, работает ли это дело.
|
|||
45
xXeNoNx
20.02.17
✎
12:15
|
(20)
Как нибудь вот так http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=603409 https://helpf.pro/faq/view/852.html http://helpme1c.ru/yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-funkcii-dlya-raboty-so-strokami (26) А НРЕГи использовать, нет? + стрзаменить.... ПОДОБНО - например, для того что бы найти кривые записи и пр... |
|||
46
1сПупс
21.02.17
✎
09:59
|
(44) (45) спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |