Имя: Пароль:
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с прохудились мозги. Все копии которые с нее делались - работали. Интересно, сдохла так что работала но не правильно работала конкретная функция.
Скопировал, загрузил файлы обратно(даже без тестирования-исправления) переиндексация - и все поперло. Жаль, поторопился, ошибка уже ушла, теперь уже не понять где что не адекватно работало.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn