Имя: Пароль:
1C
1C 7.7
v7: не работает функция ТекущийДокумент()
🠗 (aka AMIGO 14.08.2017 15:22)
0 jeka_molodec
 
14.08.17
14:18
написанная с 0 конфигурация. Из модуля документа, нужно получить его номер.
номерДок = ТекущийДокумент();
все. у меня эта же база стоит и номер выводится
у клиента, на той же самой базе, выдает пустое место.

Что за чушь? документ уже есть. он записан. почему не работает фунция там или работает у меня? может как то еще этот поганный номер можно получить. Смотрю в книгу вижу фигу. Ничего не понимаю, ничего не гуглится.
1 2S
 
14.08.17
14:21
(0) отладчиком пользоваться умеете?
2 2S
 
14.08.17
14:23
номерДок = ТекущийДокумент();
вообще ересь какая-то.

Док = СоздатьОбъект("Документ.ххх");
бла бла бла
ТекДок = Док.ТекущийДокумент();
номерДок = ТекДок.НомерДок;
3 HawkEye
 
14.08.17
14:26
(0) ТекущийДокумент() - работает ровно так как и должна...

не работает мозг человека создавшего эту тему...
4 jeka_molodec
 
14.08.17
14:30
я не гигант мысли как hawkeye или как его там. Поэтому наверное оскорблять людей на пустом месте мне не по чину.
Я вот чего понять не могу. Почему на одной базе но разных компьютерах эта функция даем мне разный результат. Ладно бы документ был не создан, он есть. У него уже есть номер. И не показывает. Что это за ерунда?
5 aka AMIGO
 
14.08.17
14:38
Если функция ТекущийДокумент() применена в модуле документа или журнала - она возвращает текущий документ
Если применено Док=СоздатьОбъект("Документ.ТвойДок") или Док=СоздатьОбъект("Документ")
То нужно записывать Док.ТекущийДокумент()
6 Масянька
 
14.08.17
14:39
(4) Из СП:
ТекущийДокумент()
CurrentDocument()
Синтаксис:
ТекущийДокумент()
Назначение:
Возвращает значение позиционированного текущего документа.
7 DDwe
 
14.08.17
14:40
(4) Значит база не одна или получаешь по разному. Думать нужно и как сказали отладчик пустить.
8 aka AMIGO
 
14.08.17
14:41
(4) Читай (6): Возвращает значение позиционированного текущего документа.
Значение документа, а не НомерДокумента
9 Масянька
 
14.08.17
14:41
(7) Интересно глянуть, как все-таки ТекущийДокумент() возвращает номер...
10 aka AMIGO
 
14.08.17
14:43
(9) Так в чем-же дело - напиши темп-отчетик, и запусти отладчик :)
11 1dvd
 
14.08.17
14:43
У автора ошибка в личной карточке. Там написано, что он программист
12 aka AMIGO
 
14.08.17
14:44
(11) да ладно тебе :)
13 jeka_molodec
 
14.08.17
14:44
да в том то и дело. одна база, одно место. это настройки системы какие? вот что я понять не могу. Получается все ломается где то на преобразовании. Функция дает документ, при преобразовании дает текстовое поле с номером. во втором случае не дает. я получаю строго док.номерДок все работает.

если же просто сделать как я показал, в одном случае работает в другом нет
14 Масянька
 
14.08.17
14:47
(13) "при преобразовании дает текстовое поле с номером. во втором случае не дает. " - покажи.
15 aka AMIGO
 
14.08.17
14:48
Это не настройки базы, а так написан твой код
Невесть как применен - вот невесть что и возвращает
16 1dvd
 
14.08.17
14:48
(13)

номерДок = "" + ТекущийДокумент();
17 oslokot
 
14.08.17
14:49
(9) Пожалуйста.

//*******************************************
Процедура Сформировать()
    НомерДок = ТекущийДокумент();
КонецПроцедуры

//******************************************************************************
Функция ТекущийДокумент()
    Возврат 1;
КонецФункции // ТекущийДокумент()
18 jeka_molodec
 
14.08.17
14:49
просто мне нужно это печатать
номерДок = ТекущийДОкумент(); печатаю у себя норм
в другом случае дает пробел вроде.
Понятно что нужно конкретное поле выводить.
Но у меня сработало, я применил.
Вопрос, почему не срабатывает там. Какие такие отличия?
19 Масянька
 
14.08.17
14:51
(17) И при чем тут номер док-та?
20 2S
 
14.08.17
14:51
(17) +1
21 jeka_molodec
 
14.08.17
14:55
в конце мне нужен он, тупо текстовое поле. Я беру, каюсь не аккуратно сразу пихаю на печать результат от ТекущийДокумент() и получаю 2 результата на одном месте кода. И малость не понимаю почему.
22 aka AMIGO
 
14.08.17
14:56
Тогда ТекущийДокумент().НомерДок
23 jeka_molodec
 
14.08.17
14:59
да текущийДок().номердок работает. я это понимаю. И так нужно было сделать сразу.
Я не понимаю почему в одном случае работает непосредственное преобразование в текстовое поле а в другом нет. Где это регламентируется?
24 jeka_molodec
 
14.08.17
15:00
как то хочется получать один результат на 2*2, а не по огороду. Может это как то от системы зависит. У клиента хп у меня 7ка. Преобразование в текст. Вот в чем суть вопроса.
25 aka AMIGO
 
14.08.17
15:01
Функция пишется под конкретную идею. Неправильно применённая - работает неправильно.
Идея расписана в СП
26 2S
 
14.08.17
15:02
(24) напишите правильный код и не ипите мозг
27 jeka_molodec
 
14.08.17
15:04
да написал. просто интересно чем руководствуется 1ска когда дает 2 результата на 1 вход
Это что то глобальное. Что, мне одному интересно?
28 1dvd
 
14.08.17
15:05
(27) в одном случае 1с преобразует ссылку к строке (представление), в другом она не понимает к какому типу нужно преобразовать
29 Злопчинский
 
14.08.17
15:06
"дает текстовое поле с номером."
- в этом текстовом поле кроме номера еще может что-то быть.
из фразы автора непонятно - в тестовом поле ТОЛЬКО номер документа или текстовое поле "С НОМЕРОМ" документа - это разные вещи...


ибо если нужно вывести визуальное представление ТекущегоДокумента - то текстовое представление зависит от того какой нумератор назначен на документ или какую функцию написал программист
30 Злопчинский
 
14.08.17
15:07
(21) "в конце мне нужен он, тупо текстовое поле. Я беру, каюсь не аккуратно сразу пихаю на печать результат от ТекущийДокумент() и получаю 2 результата на одном месте кода. И малость не понимаю почему."
- потому что ты не понимаешь что пишешь...
31 jeka_molodec
 
14.08.17
15:08
запрашиваю номерДок = СокрЛП(Текущийдокумент());

выдает просто например 456788 номер документа.
Ладно, если не интересно, мозг парить не буду. Все работает, но может у кого есть идеи.
32 Злопчинский
 
14.08.17
15:09
(23) визуальное представление - ТО ЕСТЬ ТЕКСТОВОЕ представление ТекущийДокумент() - зависит от нумератора, назначенного на документ в конфигураторе (и возможно от того задан ли Синоним в конфигураторе)
33 Злопчинский
 
14.08.17
15:10
(31) выполни код
Сообщить(ТекущийДокумент());
Сообщить(ТекущийДокумент().НомерДок);
Сообщить(СокрЛП(ТекущийДокумент()));
34 Базис
 
naïve
14.08.17
15:12
Документ записан, или "ваша с1 не работает"?
35 mishaPH
 
модератор
14.08.17
15:13
чет я первый раз такое за все время работы с клюшками встречаю.
ТекущийДокумент() никогда номер дока не возвращает. он может вернуть представление дока тестом типа Поступление 00000 от 00.00.000.

и что значит печатаешь. откуда? из формы дока или какой внешней обработки?
36 jeka_molodec
 
14.08.17
15:14
документ, модуль документа
37 jeka_molodec
 
14.08.17
15:15
базы отличаются на 2 дня. место одно.
38 mishaPH
 
модератор
14.08.17
15:15
(36) (33) исполни
39 jeka_molodec
 
14.08.17
15:18
щас выполнить не смогу, клиент отключился(на проблемном компе
На моем компе данный код печатает 3 строки
Оплата договора 1084169
   1084169
Оплата договора 1084169
40 jeka_molodec
 
14.08.17
15:18
это про (31) выполни код
Сообщить(ТекущийДокумент());
Сообщить(ТекущийДокумент().НомерДок);
Сообщить(СокрЛП(ТекущийДокумент()));
41 mishaPH
 
модератор
14.08.17
15:19
(39) а на том
42 aka AMIGO
 
14.08.17
15:19
(39) что и требовалось..
43 jeka_molodec
 
14.08.17
15:20
попробую позже. у них там аврал, и так обругали. Просил то 2 минуты а просидел пол часа. Думал могет у кого идеи и так есть.
44 HawkEye
 
14.08.17
15:20
(4) почему на пустом... разве не ты создал тему: "не работает функция ТекущийДокумент()" ??
45 aka AMIGO
 
14.08.17
15:21
(43) тебе-ж в 40 постах сказали идею: измени код на правильный
46 jeka_molodec
 
14.08.17
15:23
согласен создал. но сразу то се. я думал всем будет интересно. А тут, сразу негатив.Да изменил я. Работает. на экране выводилось, на чеке номер печатает. Я хочу понять почему одно преобразование дает на 2х компах разный результат, чем это обусловлено. Если не интересно, сам потуплю. Просто идей нет.
47 Ёпрст
 
14.08.17
15:24
(18) зависит от периодичности номера. Если в пределах года - будет одно, если по всем данного вида, будет другое системное представление.
48 HawkEye
 
14.08.17
15:25
(46) ТекущийДокумент() - работает ровно так как и должна...

для ответа на твой вопрос, у тебя есть отладчик ну или минимум целый код, а не вырванные из контекста куски, этого вполне достаточно для нахождения ответа.
49 DDwe
 
14.08.17
15:35
(48) Для этого думать нужно.
50 HawkEye
 
14.08.17
15:39
(49) ну это вообще никогда лишним не бывает......
51 Злопчинский
 
14.08.17
16:13
(50) в условиях толерантности и гейства - мозги становятся как у блондинок...
52 HawkEye
 
14.08.17
16:22
(51) у нас за МКАД-ом - с этим поспокойнее )))
53 jeka_molodec
 
21.08.17
12:42
В общем, 1с перестала выдавать вообще все. Скопировал каталог и залил обратно. И функция заработала. Просто у 1с прохудились мозги. Все копии которые с нее делались - работали. Интересно, сдохла так что работала но не правильно работала конкретная функция.
Скопировал, загрузил файлы обратно(даже без тестирования-исправления) переиндексация - и все поперло. Жаль, поторопился, ошибка уже ушла, теперь уже не понять где что не адекватно работало.
Программист всегда исправляет последнюю ошибку.