|
СокрЛП Лыжи Пятница | ☑ | ||
---|---|---|---|---|
0
EugeneSemyonov
11.04.14
✎
13:00
|
Всем доброго дня!
Есть код: НовыйДок= Документы.ТехнологическаяКарта.СоздатьДокумент(); НовыйДок.Дата= Выборка.Дата; НовыйДок.Номер= СокрЛП(Выборка.Номер); В выборке номер выглядит во так "К/БЛ/464/5 " (без кавычек, но с пробелами в конце). В отладке смотрю значение СокрЛП(Выборка.Номер) - "К/БЛ/464/5". Почему в итоге после выполнения "НовыйДок.Номер= СокрЛП(Выборка.Номер);" НовыйДок.Номер имеет значение "К/БЛ/464/5 "? Пятница? Вообще-то я этот код ещё в четверг написал. |
|||
1
jsmith82
11.04.14
✎
13:01
|
фиксированная длина
|
|||
2
Ненавижу 1С
гуру
11.04.14
✎
13:05
|
у номера фиксированная длина строки
|
|||
3
Maxus43
11.04.14
✎
13:06
|
про длину номера уже говорили?
|
|||
4
EugeneSemyonov
11.04.14
✎
13:06
|
Не вижу где можно отменить фиксированную длину.
В свойствах документа: Автонумерация=Истина Нумератор="" Длина номера=15 Контроль уникальности=Истина Тип номера=Строка Периодичность=Непериодический |
|||
5
EugeneSemyonov
11.04.14
✎
13:07
|
Тупо длина номера=0 ?
|
|||
6
Ненавижу 1С
гуру
11.04.14
✎
13:08
|
(4) нельзя ее отменить
|
|||
7
Starhan
11.04.14
✎
13:10
|
(0) Возьми 1 ряд в грохотке и потренеруйся, возможно ты кинестетик.
|
|||
8
EugeneSemyonov
11.04.14
✎
13:10
|
(4) тогда я тоже Ненавижу 1С!
|
|||
9
EugeneSemyonov
11.04.14
✎
13:11
|
Опечатался (6) тогда я тоже Ненавижу 1С!
|
|||
10
Ненавижу 1С
гуру
11.04.14
✎
13:11
|
(8) это не повод, пот пустые ссылки, это да
скажи, что тебе мешает в номере? |
|||
11
EugeneSemyonov
11.04.14
✎
13:16
|
Мне по номеру искать и сравнивать приходится. Хотел отсечь незначащее, на всякий случай.
Сейчас вот придумал случай - в исходной базе, в которой формируется выборка, меняется длина этого самого номера... и понеслась дублирующая загрузка... Сейчас уже понимаю что ну и фиг с ним - будем решать вопросы по мере поступления. Всем спасибо! Отдельное спасибо Ненавижу 1С. |
|||
12
Maxus43
11.04.14
✎
13:18
|
(11) почему ни у кого нет проблем с поиском по номеру, а у тебя есть?
|
|||
13
EugeneSemyonov
11.04.14
✎
13:20
|
Вообще даже шаблон мне порвало когда я записал
НовыйДок.Номер= СокрЛП(Выборка.Номер); А при следующем запуске ДокСсылка=Документы.ТехнологическаяКарта.НайтиПоНомеру("Номер", СокрЛП(Выборка.Номер)); - дулюшка, т.е. ложь. |
|||
14
EugeneSemyonov
11.04.14
✎
13:20
|
т.е. пустая ссылка.
|
|||
15
Мимохожий Однако
11.04.14
✎
13:28
|
Фигней занимаешься. Ищи через запрос в котором можно использовать подобно.
|
|||
16
Bigbro
11.04.14
✎
13:30
|
конечно не найдешь ты ищешь по номеру а в качестве значения для поиска указываешь только часть номера.
|
|||
17
AndyD
11.04.14
✎
13:37
|
(13) тебе религия запрещает в запросе, которым ты получаешь номер (Выборка.Номер) - сразу получать еще и ссылку на документ?
|
|||
18
ptiz
11.04.14
✎
13:47
|
Точно лыжи....
|
|||
19
EugeneSemyonov
11.04.14
✎
14:25
|
(16) это я уже понял. спасибо.
(17) а для чего ссылку получать? Я гружу данные из одной базы в другую по OLE. Выбираю запросом и при необходимости создаю и заполняю свойства объекта из выборки. Чем мне поможет ссылка? |
|||
20
EugeneSemyonov
11.04.14
✎
14:30
|
(15) Дельный совет! Спасибо, Александр!
|
|||
21
EugeneSemyonov
11.04.14
✎
14:50
|
(15) Хотя тогда возможно придётся обрабатывать многострочную выборку, если искать, например, "К/БЛ/464/1" в то время когда существуют документы с номерами "К/БЛ/464/10", "К/БЛ/464/11" и т.д. А такие документы существуют.
|
|||
22
EugeneSemyonov
11.04.14
✎
14:55
|
(7) Виктор, вы о чём?
|
|||
23
EugeneSemyonov
11.04.14
✎
15:03
|
(12) Максим, видать я немного излишне заморочился.
Хотя возможные проблемы в будущем весьма реальны. Если мне не изменяет память, годика 3 назад я длину этого номера уже увеличивал. |
|||
24
jsmith82
11.04.14
✎
15:28
|
Лыжи не забывай смазывать
|
|||
25
Torquader
11.04.14
✎
15:42
|
Читать внимательно в google "строка фиксированной длины".
|
|||
26
dmpl
11.04.14
✎
15:55
|
(13) Ну и дополни до нужной длины. В чем проблема?
|
|||
27
EugeneSemyonov
11.04.14
✎
15:58
|
(24) спасибо!
(25) пятница. не могу! (26) в базах реквизиты идентичны и пока не критично - обойдусь без СокрЛП. |
|||
28
dmpl
11.04.14
✎
16:01
|
(27) Вообще, почему бы не использовать одинаковые уникальные идентификаторы для одинаковых объектов в разных базах? Зачем по номеру сопоставлять? Юзер же его поменять может...
|
|||
29
Torquader
11.04.14
✎
16:13
|
(28) Хочется человеку, чтобы сопоставлялось по номерам - в частности, пользователь действительно может поменять номер, чем изменить соответствие, а что делать в случае GUID-а - его-то поменять нельзя.
|
|||
30
dmpl
11.04.14
✎
16:19
|
(29) А зачем его менять? Он же никакой человекочитаемой информации не несет, просто идентифицирует объект. А на крайний случай есть замена значений.
|
|||
31
Torquader
11.04.14
✎
16:25
|
(30) Вот поэтому и используют номер, чтобы даже самый последний пользователь понимал, какая связь между двумя документами в двух разных базах.
|
|||
32
EugeneSemyonov
11.04.14
✎
16:59
|
В нашем случае номер несёт человекочитаемую информацию - в номере закодировано место производства, а так же версия технологической карты.
|
|||
33
EugeneSemyonov
11.04.14
✎
17:02
|
Пятница подходит к концу: я убрал СокрЛП, а код
ДокСсылка=Документы.ТехнологическаяКарта.НайтиПоНомеру("Номер", Выборка.Номер); всё равно возвращает пустую ссылку, хотя документы с абсолютно идентичными, на мой взгляд, номерами есть! :( Такие номера же с пробелами на конце по 15 символов длиной... :( |
|||
34
Torquader
11.04.14
✎
17:04
|
окументы.ТехнологическаяКарта.НайтиПоНомеру("Номер", Выборка.Номер);
Чего это такое ? |
|||
35
Torquader
11.04.14
✎
17:06
|
ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>)
НайтиПоНомеру (FindByNumber) Синтаксис: НайтиПоНомеру(<НомерДокумента>, <ДатаИнтервала>) Параметры: <НомерДокумента> (обязательный) Тип: Число; Строка. Номер искомого документа. Тип передаваемого значения зависит от установки в конфигураторе представления номера документа. <ДатаИнтервала> (необязательный) Тип: Дата. Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года. Параметр используется для документов с периодической нумерацией. Возвращаемое значение: Тип: ДокументСсылка.<Имя документа>; Неопределено. Ссылка на найденный документ. Если документ не найден, возвращается пустая ссылка на документ. Если номер не задан (длина = 0), то будет возвращено Неопределено. Описание: Осуществляет поиск документа по номеру. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
36
EugeneSemyonov
11.04.14
✎
17:07
|
Ой. Пятницооо... Лы-жи.
ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>) НайтиПоНомеру (FindByNumber) Синтаксис: НайтиПоНомеру(<НомерДокумента>, <ДатаИнтервала>) |
|||
37
Torquader
11.04.14
✎
17:07
|
P.S. если бы 1С была умнее, то она бы вам задницу на экране нарисовала - а она - ищет то, чего не может быть.
|
|||
38
EugeneSemyonov
11.04.14
✎
17:07
|
Сейчас попробую:
ДокСсылка=Документы.ТехнологическаяКарта.НайтиПоНомеру(Выборка.Номер); |
|||
39
Torquader
11.04.14
✎
17:08
|
(36) Это лыжи, в которые, как в ёжика, гвоздей назабивали и в них пытаются ехать.
|
|||
40
EugeneSemyonov
11.04.14
✎
17:15
|
(39) Спасибо, Torquader!!! Реально натолкнул на решение (я уже сам открыл описание в синтаксис-помощнике и понял свою ошибку после (34)). Да ещё и носом ткнул - на форум выложил.
|
|||
41
Torquader
11.04.14
✎
17:18
|
(40) На будущее - внимательно смотрим передаваемые в стандартные функции параметры - тот, кто спешит, едет в ежовых лыжах по бетонной дороге.
|
|||
42
EugeneSemyonov
11.04.14
✎
17:25
|
(41) Да, ещё раз спасибо! Иной раз в блокноте код напишешь и он без отладки работает, а иной раз в пятницу и отладка не помогает :)
|
|||
43
Torquader
11.04.14
✎
17:25
|
(42) Так отвлекают, наверное, коллеги по работе.
|
|||
44
EugeneSemyonov
11.04.14
✎
17:33
|
(43) Немного. Когда задача или проблема интересная, то внимания на коллег не хватает и они фильтруются.
|
|||
45
Torquader
11.04.14
✎
17:33
|
(44) Судя по данной задаче - она оказалась не очень интересной.
|
|||
46
EugeneSemyonov
11.04.14
✎
17:35
|
(45) Ну почему. Интересной. Особенно такой вызов. Оказалось вызов вниманию.
|
|||
47
Torquader
11.04.14
✎
17:36
|
Это, кстати, ещё один камень в огород отсутствия типизации, так как в случае строгого задания типов ошибка была бы ещё на стадии компиляции данного кода.
|
|||
48
dmpl
11.04.14
✎
22:45
|
(31) А теперь ты попробуй ему объяснить, почему он в одной базе номер поменял - и документ в другой задублировался ;)
|
|||
49
Torquader
11.04.14
✎
22:50
|
(48) Это объяснить проще, чем потом объяснять, как документы связываются по внутреннему идентификатору.
Просто - сообразительные понимают и не косячат, а дураки - они всегда найдут способ навредить. |
|||
50
dmpl
12.04.14
✎
09:26
|
(49) А зачем объяснять как? Пользователю это не интересно. Достаточно сказать, что система знает, какой документ соответствует какому в другой базе, и что бы ты ни делал - она все равно будет знать. Дублирование в другой базе - это косяк программиста.
|
|||
51
Torquader
12.04.14
✎
23:56
|
(50) Потом этот чудик удалит документ и создаст новый с таким же номером и заполнением, а система его не посчитает совпадающим - и тоже создаст новый.
P.S. у меня уже такое было - пользователь каждый раз удалял документ, когда система создавала новый. |
|||
52
dmpl
12.04.14
✎
23:59
|
(51) Правильная система удалит документ вслед за пользователем, и все будет нормально. Впрочем, пользователь, удаляющий документы - это из серии бардака в правах.
|
|||
53
Torquader
13.04.14
✎
00:11
|
(52) А если это бухгалтер, и он "наводит порядок" в базе.
Если что-то работает так, что он не понял, то потом за все расхождения баланса уже отвечают программисты. У меня для некоторых "проставление галочек" реализовано - то есть при загрузке система показывает все создаваемые и измеряемые ей документы, а пользователь проставляет галочку в согласие с изменениями - зато - за всё, что в базе не так - "вазелин для пользователя!". |
|||
54
dmpl
13.04.14
✎
00:21
|
(53) Ну удалил - значит удалил. Сам виноват.
А галочки проставлять можно только при небольшом объеме изменений, в противном случае полезут ошибки пользователя. |
|||
55
Torquader
13.04.14
✎
14:57
|
(54) Так это уже проблемы пользователей.
Можно и вообще - всё руками переносить - галочки-то явно быстрее. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |