|
Пробная обработка- удаление нулей в номерах перед цифрами | ☑ | ||
---|---|---|---|---|
0
a237
11.10.11
✎
22:03
|
Я новичек. Решил написать обработку которая просматрвает все документы определенного вида и удаляет у них нули если таковые имеются (например номер 0123 заменится на 123) но не выходит . Может кто видит ошибку.
Процедура Удалить() ПР = СоздатьОбъект("Документ.Докуентпоставщика"); ПР.ВыбратьДокументы(); Пока ПР.ПолучитьСтроку() > 0 Цикл Пока ПР.ПолучитьДокумент() > 0 Цикл номер=ПР.НомерДок; номерсокр=СокрЛ(номер); Если номерсокр=0 тогда ПР.НомерДок= номерсокр; ПР.Записать(); Конецесли; КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
1
Темный Эльф
11.10.11
✎
22:05
|
Ошибку вижу и не одну, а код где?
|
|||
2
a237
11.10.11
✎
22:05
|
в смысле? это и есть обработка
|
|||
3
DrHiHi
11.10.11
✎
22:06
|
что делает Пока ПР.ПолучитьСтроку() > 0 Цикл ???
и что ты будешь делать с документами у которых стоит префикс?? типа (До-0001) |
|||
4
andrewks
11.10.11
✎
22:06
|
самая главная ошибка здесь: Докуентпоставщика
правильно так: ДокуЁнтпоставщика |
|||
5
KRV
11.10.11
✎
22:07
|
Пока ПР.ПолучитьСтроку() > 0 Цикл
Пока ПР.ПолучитьДокумент() > 0 Цикл В мемориз |
|||
6
a237
11.10.11
✎
22:08
|
новая версия
Процедура Удалить() ПР = СоздатьОбъект("Документ.Докуентпоставщика"); ПР.ВыбратьДокументы(); Пока ПР.ПолучитьДокумент() > 0 Цикл номер=ПР.НомерДок; номерсокр=СокрЛ(номер); Если номерсокр=0 тогда ПР.НомерДок= номерсокр; ПР.Записать(); Конецесли; КонецЦикла; КонецПроцедуры |
|||
7
DrHiHi
11.10.11
✎
22:09
|
Если номерсокр=0 тогда че за хрень??
|
|||
8
Aleksey
11.10.11
✎
22:10
|
(6) Все хуже и хуже
|
|||
9
DrHiHi
11.10.11
✎
22:10
|
ответь на 2-й вопрос (3)
|
|||
10
KRV
11.10.11
✎
22:10
|
а в конфиге точно есть "Докуентпоставщика"?
|
|||
11
a237
11.10.11
✎
22:12
|
(3) только если есть ноль и он первый, тогда удалить (хотя вообще-то нужно удалять если первый ноль или первый и второй ноль но это уже потом)
|
|||
12
DrHiHi
11.10.11
✎
22:12
|
лимбическая система
|
|||
13
a237
11.10.11
✎
22:12
|
(10) там другой документ просто на той базе на которой я пробую- есть
|
|||
14
Темный Эльф
11.10.11
✎
22:13
|
1. Имя процедуры. Не рекомендуется использовать предопределенные имена методов в качестве имен процедур.
2. Докуентпоставщика - как минимум орфографическая ошибка. 3. ВыбратьДокументы() используется совместно с ПолучитьДокумент(), а ПолучитьСтроку() с ВыбратьСтроки(). "Коньяк закусывается лимоном, а не запивается пивом" (с) 4. СокрЛ убирает ПРОБЕЛЫ слева, а не нули. 5. Запись документа в выборке по документу с использованием одной переменной не рекомендуется. В восьмерке для этого сделали отдельно ДокументВыборка и ДокументОбъект, а семерошники должны помнить сами, что ничто - это тоже нечто. 6. После использования СокрЛ возвращается строка. Сравнение строки с числом "Если номерсокр=0 тогда" всегда будет иметь один и тот же результат, отрицательный. 7. Смысл условия "Если номерсокр=0 тогда" неясен совершенно. Так не надо. Вердикт - оставить на второй год. |
|||
15
DrHiHi
11.10.11
✎
22:14
|
(11) то есть если есть префикс то мы его оставляем
ПР = СоздатьОбъект("Документ.Докуентпоставщика"); ПР.ВыбратьДокументы(); Пока ПР.ПолучитьДокумент() = 1 Цикл номер=ПР.НомерДок; ПОпытка номерсокр=число(номер); исключение продолжить; конецпопытки; ПР.НомерДок= номерсокр; ПР.Записать(); КонецЦикла; можешь так попробывать |
|||
16
Vovik
11.10.11
✎
22:17
|
Помоему это вброс
|
|||
17
a237
11.10.11
✎
22:19
|
Ничего не вборос просто я бухгалтер по образованию
|
|||
18
a237
11.10.11
✎
22:21
|
(15)пробую вроде заработало- проверяю...
|
|||
19
Темный Эльф
11.10.11
✎
22:22
|
(17)Вот ты бухгалтер. Ты доверишь составлять баланс предприятия человеку, знакомому единственно с 4 правилами арифметики? Зайди http://mista.ru/tutor_1c/index.htm на этом сайте и учись с начала.
|
|||
20
Vovik
11.10.11
✎
22:27
|
(17)Тогда что по твоему такое СокрЛ? Интересно.
|
|||
21
a237
11.10.11
✎
22:28
|
Думал
СокрЛ= Прав |
|||
22
a237
11.10.11
✎
22:31
|
2 DrHiHi,Темный Эльф
Спасибо Проблема была в том что в номерах документа появились нули перед числовым значениям и счас после знакомство с номерсокр=число(номер); я понял что просто в конфигураторе нужно вернуть тип номера на числовой))) |
|||
23
Академик_
Келдыш 11.10.11
✎
22:35
|
Начнем по серьезному. Кто сказал что номер 00123 неверен при пятизначной нумерации? Допустим отрежешь все нули а потом? Документу номер ручками присваивать будешь? Далее: почитай про функцию число. Может поможет.)))))
|
|||
24
Академик_
Келдыш 11.10.11
✎
22:40
|
Да кстати, если бухгалтер, ответь мне что делать с расходами в торговой организации когда нет выручки за месяц в 2001 году. Ответишь обосновав ответ пбу, письмами инстанций, фз- завтра с утра посвящу тебе час времени на приведении нумерации твоей в божеский вид
|
|||
25
Академик_
Келдыш 11.10.11
✎
22:40
|
Ой ну конечно в 2011 году
|
|||
26
a237
11.10.11
✎
22:41
|
я сказал что у меня образование бухгалтера- а так я консультант 1с и просто бухгалтера требовали вернуть все назад- убрать нули в номерах документа
|
|||
27
a237
11.10.11
✎
22:41
|
))
|
|||
28
a237
11.10.11
✎
22:44
|
(24) если нет выручки то на 90 счету убыток за месяц (я не из РФ)
|
|||
29
Академик_
Келдыш 11.10.11
✎
22:45
|
Ну понятно. Какой консультант такие и бухи. Нули появились от того что ктото получил сообщение о неуникальности номера своего доккмента. По неизведанным причинам именно этот номер был ему нужен. Он добавил нули и обощел проверку уникальности.
|
|||
30
Сияющий Асинхраль
11.10.11
✎
22:47
|
Забавно, только на двадцать третьем посту сказали, что в корне неверна сама постановка задачи. А вообще для буха это решается типовой перенумерацией с диска итс
|
|||
31
a237
11.10.11
✎
22:48
|
у меня на задачи нет времени (куча звонков и внедрений) клиент дорогой- проще вернуть КАК БЫЛО НА ПРОТЯЖЕНИИ 2-3 ЛЕТ ДО ЭТОГО
|
|||
32
SnarkHunter
11.10.11
✎
22:48
|
(0)Правильно пишется "новичОк"...
|
|||
33
Академик_
Келдыш 11.10.11
✎
22:51
|
(28) что не из рф так уж и быть. Нумерация документов какая? Числовая или текстовая? Если текстовая то в цикле запускай по докам:
Сообщить(док.номердок); Док.номердок=прав(„0000000000" + число(номердок),а вот тут число - длина номера из конфигуратора); На ошибочном вылетит но он у тебя в окне сообщений будет. Скажи бухам что доков с таким номером два пусть один перенумеровывают |
|||
34
Академик_
Келдыш 11.10.11
✎
22:53
|
(30) типовую перенумерацию пусть нуралиев в своих актах выполненных работ использует и акты сверок потом подписывает
|
|||
35
Академик_
Келдыш 11.10.11
✎
22:54
|
+33 ну и после этого в цикле по докам конечно док.записать() поставь
|
|||
36
SnarkHunter
11.10.11
✎
22:59
|
>> Док.номердок=прав(„0000000000" + число(номердок),а вот тут число - длина номера из конфигуратора
Некошерно... |
|||
37
Сияющий Асинхраль
11.10.11
✎
23:03
|
(35) что-то мне говорит, что нумерация у докуентпоставщика вряд ли будет соответствовать реальным номерам доков, поэтому перенумеровать можно
|
|||
38
filh
11.10.11
✎
23:56
|
А что в юмор то занесли?
|
|||
39
KishMish
12.10.11
✎
09:06
|
проще же так
НовыйНомер=СтрЗаменить(СокрЛП(Номер),"0"," "); НовыйНомер=СокрЛ(НовыйНомер); НовыйНомер=СтрЗаменить(СтрЗаменить," ","0"); |
|||
40
G-Re
12.10.11
✎
09:35
|
НовыйНомер=СтрЗаменить(СокрЛП(Номер),"0","");
|
|||
41
G-Re
12.10.11
✎
09:37
|
(40)+ Снимаю, удалятся ВСЕ нули, правильно (39)!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |