Вход | Регистрация


1С:Предприятие ::

Метки: 

СокрЛП Лыжи Пятница

Я
   EugeneSemyonov
 
11.04.14 - 13:00
Всем доброго дня!

Есть код:
НовыйДок= Документы.ТехнологическаяКарта.СоздатьДокумент();
НовыйДок.Дата= Выборка.Дата;
НовыйДок.Номер= СокрЛП(Выборка.Номер);

В выборке номер выглядит во так "К/БЛ/464/5     " (без кавычек, но с пробелами в конце). В отладке смотрю значение СокрЛП(Выборка.Номер) - "К/БЛ/464/5".
Почему в итоге после выполнения "НовыйДок.Номер= СокрЛП(Выборка.Номер);" НовыйДок.Номер имеет значение "К/БЛ/464/5     "? Пятница? Вообще-то я этот код ещё в четверг написал.
 
 
   jsmith82
 
1 - 11.04.14 - 13:01
фиксированная длина
   Ненавижу 1С
 
2 - 11.04.14 - 13:05
у номера фиксированная длина строки
   Maxus43
 
3 - 11.04.14 - 13:06
про длину номера уже говорили?
   EugeneSemyonov
 
4 - 11.04.14 - 13:06
Не вижу где можно отменить фиксированную длину.
В свойствах документа:
Автонумерация=Истина
Нумератор=""
Длина номера=15
Контроль уникальности=Истина
Тип номера=Строка
Периодичность=Непериодический
   EugeneSemyonov
 
5 - 11.04.14 - 13:07
Тупо длина номера=0 ?
   Ненавижу 1С
 
6 - 11.04.14 - 13:08
(4) нельзя ее отменить
   Starhan
 
7 - 11.04.14 - 13:10
(0) Возьми 1 ряд в грохотке и потренеруйся, возможно ты кинестетик.
   EugeneSemyonov
 
8 - 11.04.14 - 13:10
(4) тогда я тоже Ненавижу 1С!
   EugeneSemyonov
 
9 - 11.04.14 - 13:11
Опечатался (6) тогда я тоже Ненавижу 1С!
   Ненавижу 1С
 
10 - 11.04.14 - 13:11
(8) это не повод, пот пустые ссылки, это да
скажи, что тебе мешает в номере?
 
  Рекламное место пустует
   EugeneSemyonov
 
11 - 11.04.14 - 13:16
Мне по номеру искать и сравнивать приходится. Хотел отсечь незначащее, на всякий случай.
Сейчас вот придумал случай - в исходной базе, в которой формируется выборка, меняется длина этого самого номера... и понеслась дублирующая загрузка...

Сейчас уже понимаю что ну и фиг с ним - будем решать вопросы по мере поступления.

Всем спасибо! Отдельное спасибо Ненавижу 1С.
   Maxus43
 
12 - 11.04.14 - 13:18
(11) почему ни у кого нет проблем с поиском по номеру, а у тебя есть?
   EugeneSemyonov
 
13 - 11.04.14 - 13:20
Вообще даже шаблон мне порвало когда я записал 
НовыйДок.Номер= СокрЛП(Выборка.Номер);
А при следующем запуске
ДокСсылка=Документы.ТехнологическаяКарта.НайтиПоНомеру("Номер", СокрЛП(Выборка.Номер)); - дулюшка, т.е. ложь.
   EugeneSemyonov
 
14 - 11.04.14 - 13:20
т.е. пустая ссылка.
   МимохожийОднако
 
15 - 11.04.14 - 13:28
Фигней занимаешься. Ищи через запрос в котором можно использовать подобно.
   Bigbro
 
16 - 11.04.14 - 13:30
конечно не найдешь ты ищешь по номеру а в качестве значения для поиска указываешь только часть номера.
   AndyD
 
17 - 11.04.14 - 13:37
(13) тебе религия запрещает в запросе, которым ты получаешь номер (Выборка.Номер) - сразу получать еще и ссылку на документ?
   ptiz
 
18 - 11.04.14 - 13:47
Точно лыжи....
   EugeneSemyonov
 
19 - 11.04.14 - 14:25
(16) это я уже понял. спасибо.
(17) а для чего ссылку получать? Я гружу данные из одной базы в другую по OLE. Выбираю запросом и при необходимости создаю и заполняю свойства объекта из выборки. Чем мне поможет ссылка?
   EugeneSemyonov
 
20 - 11.04.14 - 14:30
(15) Дельный совет! Спасибо, Александр!
   EugeneSemyonov
 
21 - 11.04.14 - 14:50
(15) Хотя тогда возможно придётся обрабатывать многострочную выборку, если искать, например, "К/БЛ/464/1" в то время когда существуют документы с номерами "К/БЛ/464/10", "К/БЛ/464/11" и т.д. А такие документы существуют.
   EugeneSemyonov
 
22 - 11.04.14 - 14:55
(7) Виктор, вы о чём?
   EugeneSemyonov
 
23 - 11.04.14 - 15:03
(12) Максим, видать я немного излишне заморочился.
Хотя возможные проблемы в будущем весьма реальны. Если мне не изменяет память, годика 3 назад я длину этого номера уже увеличивал.
   jsmith82
 
24 - 11.04.14 - 15:28
Лыжи не забывай смазывать
   Torquader
 
25 - 11.04.14 - 15:42
Читать внимательно в google "строка фиксированной длины".
   dmpl
 
26 - 11.04.14 - 15:55
(13) Ну и дополни до нужной длины. В чем проблема?
   EugeneSemyonov
 
27 - 11.04.14 - 15:58
(24) спасибо!
(25) пятница. не могу!
(26) в базах реквизиты идентичны и пока не критично - обойдусь без СокрЛП.
   dmpl
 
28 - 11.04.14 - 16:01
(27) Вообще, почему бы не использовать одинаковые уникальные идентификаторы для одинаковых объектов в разных базах? Зачем по номеру сопоставлять? Юзер же его поменять может...
   Torquader
 
29 - 11.04.14 - 16:13
(28) Хочется человеку, чтобы сопоставлялось по номерам - в частности, пользователь действительно может поменять номер, чем изменить соответствие, а что делать в случае GUID-а - его-то поменять нельзя.
   dmpl
 
30 - 11.04.14 - 16:19
(29) А зачем его менять? Он же никакой человекочитаемой информации не несет, просто идентифицирует объект. А на крайний случай есть замена значений.
   Torquader
 
31 - 11.04.14 - 16:25
(30) Вот поэтому и используют номер, чтобы даже самый последний пользователь понимал, какая связь между двумя документами в двух разных базах.
   EugeneSemyonov
 
32 - 11.04.14 - 16:59
В нашем случае номер несёт человекочитаемую информацию - в номере закодировано место производства, а так же версия технологической карты.
   EugeneSemyonov
 
33 - 11.04.14 - 17:02
Пятница подходит к концу: я убрал СокрЛП, а код
ДокСсылка=Документы.ТехнологическаяКарта.НайтиПоНомеру("Номер", Выборка.Номер);
всё равно возвращает пустую ссылку, хотя документы с абсолютно идентичными, на мой взгляд, номерами есть! :( Такие номера же с пробелами на конце по 15 символов длиной... :(
 
 
   Torquader
 
34 - 11.04.14 - 17:04
окументы.ТехнологическаяКарта.НайтиПоНомеру("Номер", Выборка.Номер);

Чего это такое ?
   Torquader
 
35 - 11.04.14 - 17:06
ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>)
НайтиПоНомеру (FindByNumber)
Синтаксис:

НайтиПоНомеру(<НомерДокумента>, <ДатаИнтервала>)
Параметры:

<НомерДокумента> (обязательный)

Тип: Число; Строка. Номер искомого документа. Тип передаваемого значения зависит от установки в конфигураторе представления номера документа. 
<ДатаИнтервала> (необязательный)

Тип: Дата. Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.
Параметр используется для документов с периодической нумерацией.
Возвращаемое значение:

Тип: ДокументСсылка.<Имя документа>; Неопределено. Ссылка на найденный документ. Если документ не найден, возвращается пустая ссылка на документ.
Если номер не задан (длина = 0), то будет возвращено Неопределено.
Описание:

Осуществляет поиск документа по номеру.

Доступность:

Сервер, толстый клиент, внешнее соединение.
   EugeneSemyonov
 
36 - 11.04.14 - 17:07
Ой. Пятницооо... Лы-жи.
ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>)
НайтиПоНомеру (FindByNumber)
Синтаксис:

НайтиПоНомеру(<НомерДокумента>, <ДатаИнтервала>)
   Torquader
 
37 - 11.04.14 - 17:07
P.S. если бы 1С была умнее, то она бы вам задницу на экране нарисовала - а она - ищет то, чего не может быть.
   EugeneSemyonov
 
38 - 11.04.14 - 17:07
Сейчас попробую:
ДокСсылка=Документы.ТехнологическаяКарта.НайтиПоНомеру(Выборка.Номер);
   Torquader
 
39 - 11.04.14 - 17:08
(36) Это лыжи, в которые, как в ёжика, гвоздей назабивали и в них пытаются ехать.
   EugeneSemyonov
 
40 - 11.04.14 - 17:15
(39) Спасибо, Torquader!!! Реально натолкнул на решение (я уже сам открыл описание в синтаксис-помощнике и понял свою ошибку после (34)). Да ещё и носом ткнул - на форум выложил.
   Torquader
 
41 - 11.04.14 - 17:18
(40) На будущее - внимательно смотрим передаваемые в стандартные функции параметры - тот, кто спешит, едет в ежовых лыжах по бетонной дороге.
   EugeneSemyonov
 
42 - 11.04.14 - 17:25
(41) Да, ещё раз спасибо! Иной раз в блокноте код напишешь и он без отладки работает, а иной раз в пятницу и отладка не помогает :)
   Torquader
 
43 - 11.04.14 - 17:25
(42) Так отвлекают, наверное, коллеги по работе.
   EugeneSemyonov
 
44 - 11.04.14 - 17:33
(43) Немного. Когда задача или проблема интересная, то внимания на коллег не хватает и они фильтруются.
   Torquader
 
45 - 11.04.14 - 17:33
(44) Судя по данной задаче - она оказалась не очень интересной.
   EugeneSemyonov
 
46 - 11.04.14 - 17:35
(45) Ну почему. Интересной. Особенно такой вызов. Оказалось вызов вниманию.
   Torquader
 
47 - 11.04.14 - 17:36
Это, кстати, ещё один камень в огород отсутствия типизации, так как в случае строгого задания типов ошибка была бы ещё на стадии компиляции данного кода.
   dmpl
 
48 - 11.04.14 - 22:45
(31) А теперь ты попробуй ему объяснить, почему он в одной базе номер поменял - и документ в другой задублировался ;)
   Torquader
 
49 - 11.04.14 - 22:50
(48) Это объяснить проще, чем потом объяснять, как документы связываются по внутреннему идентификатору.
Просто - сообразительные понимают и не косячат, а дураки - они всегда найдут способ навредить.
 
  Рекламное место пустует
   dmpl
 
50 - 12.04.14 - 09:26
(49) А зачем объяснять как? Пользователю это не интересно. Достаточно сказать, что система знает, какой документ соответствует какому в другой базе, и что бы ты ни делал - она все равно будет знать. Дублирование в другой базе - это косяк программиста.
   Torquader
 
51 - 12.04.14 - 23:56
(50) Потом этот чудик удалит документ и создаст новый с таким же номером и заполнением, а система его не посчитает совпадающим - и тоже создаст новый.
P.S. у меня уже такое было - пользователь каждый раз удалял документ, когда система создавала новый.
   dmpl
 
52 - 12.04.14 - 23:59
(51) Правильная система удалит документ вслед за пользователем, и все будет нормально. Впрочем, пользователь, удаляющий документы - это из серии бардака в правах.
   Torquader
 
53 - 13.04.14 - 00:11
(52) А если это бухгалтер, и он "наводит порядок" в базе.
Если что-то работает так, что он не понял, то потом за все расхождения баланса уже отвечают программисты.
У меня для некоторых "проставление галочек" реализовано - то есть при загрузке система показывает все создаваемые и измеряемые ей документы, а пользователь проставляет галочку в согласие с изменениями - зато - за всё, что в базе не так - "вазелин для пользователя!".
   dmpl
 
54 - 13.04.14 - 00:21
(53) Ну удалил - значит удалил. Сам виноват.

А галочки проставлять можно только при небольшом объеме изменений, в противном случае полезут ошибки пользователя.
   Torquader
 
55 - 13.04.14 - 14:57
(54) Так это уже проблемы пользователей.
Можно и вообще - всё руками переносить - галочки-то явно быстрее.



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует