Имя: Пароль:
1C
1С v8
Не записывается значение, передаваемое реквизиту документа 1С 8.2.
0 1CProfessional
 
24.07.11
13:27
Привет. У меня такой вопрос...
1 1CProfessional
 
24.07.11
13:35
//ОбщиеМодули
Функция ВводФИОПользователя(ФИО) Экспорт
   
   Результат = Ложь;
   
   ФИО = "";
   Если ВвестиСтроку(ФИО,"Введите свое ФИО.",50,Ложь) Тогда
       Если Не ПустаяСтрока(ФИО) Тогда
           Результат = Истина;
       КонецЕсли;
   КонецЕсли;

   Возврат Результат;
   
КонецФункции

//ФормаДокументаМастер
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
   //Вставить содержимое обработчика
   
   ТекФИО = "";
   Если ОбработкаТабличнойЧастиТоварыКлиент.ВводФИОПользователя(ТекФИО) Тогда
       ФИОПользователя = ТекФИО;
       Сообщить(""+ФИОПользователя);
   КонецЕсли;

КонецПроцедуры

В этом случае у меня открывается нужный мне интерактивный ввод строки, но реквизиту документа ФИОПользователя значение ТекФИО не присваивается. Подскажите - почему?
2 izekia
 
24.07.11
13:35
какой
3 izekia
 
24.07.11
13:40
А ты ТекФИО проверь?
мне кажется на сервер она уйдет по значению, а не по ссылке, хотя возможно я неправ
4 kimi_mm
 
24.07.11
13:45
попробуй при присваивание обратится напрямую к реквизиту документа - Объект.ФИОПользователя
5 Ник второй
 
24.07.11
13:47
Расширение формы документа.ПослеЗаписи (Document form extension.AfterWrite)
Расширение формы документа (Document form extension)
ПослеЗаписи (AfterWrite)
Синтаксис:

ПослеЗаписи()
Описание:

Возникает после записи объекта, и после окончания транзакции записи, то есть к моменту вызова этой процедуры запись объекта полностью завершена.
6 izekia
 
24.07.11
13:48
(5) вопрос не в логических ошибках
7 Ник второй
 
24.07.11
13:50
ну ну . Читаем внимательно:

"v8: Не записывается значение, передаваемое реквизиту документа 1С 8.2." - хочет изменить реквизит документа после записи.
8 Мимохожий Однако
 
24.07.11
13:51
Поставь на строчку
Если ОбработкаТабличнойЧастиТоварыКлиент.ВводФИОПользователя(ТекФИО) Тогда
отладчик
9 1CProfessional
 
24.07.11
13:53
забыл сказать сразу, что пробовал сделать и процедуре ПередЗаписью() - то же самое.
10 Икогнито
 
24.07.11
13:54
(9) синхронизируй данные формы клиента с данными памяти сервера, сравни версии объектов
11 Икогнито
 
24.07.11
13:55
Объект.ФИОПользователя = ?
12 Икогнито
 
24.07.11
13:57
1CProfessional, твой ник отражает получение сертификата, или то, что ты обречен на успех? :)
13 1CProfessional
 
24.07.11
13:57
(11) не проверил еще... сейчас...
14 1CProfessional
 
24.07.11
13:58
(12) мой ник отображает мое стремление стать им! ))
15 izekia
 
24.07.11
14:02
(7) я так понял, что Сообщить(""+ФИОПользователя); выдает пустую строчку
16 1CProfessional
 
24.07.11
14:03
(15) нет! кк раз выжает введенной пользователей ФИО - строку.
17 1CProfessional
 
24.07.11
14:05
делаю сейчас все это в ПередЗаписью() - нет желаемого результата...
18 1CProfessional
 
24.07.11
14:06
не подскажете, а есть что-нибудь из инструментария к 8.2 типа "NHANDS.ERT" для 7.7???
19 1CProfessional
 
24.07.11
14:09
а как шагать в отладчике 8.2?
20 Ник второй
 
24.07.11
14:10
Срочно во франч, там научат шагать.
21 1CProfessional
 
24.07.11
14:11
франч от меня в 70-ти км!
22 1CProfessional
 
24.07.11
14:12
ближайший
23 Ник второй
 
24.07.11
14:12
Тогда .

Помогу удаленно 800 руб час.
24 1CProfessional
 
24.07.11
14:13
это ты загнул, бадди
25 1CProfessional
 
24.07.11
14:13
)))
26 temsa
 
24.07.11
14:15
(25) научу шагать за 400 руб :)
27 1CProfessional
 
24.07.11
14:16
))))
28 1CProfessional
 
24.07.11
14:16
если написать Объект.ФИОПользователя = ТекФИО получаю ошибку при проверке на сервере...
29 1CProfessional
 
24.07.11
14:34
не подскажете, а есть что-нибудь из инструментария к 8.2 типа "NHANDS.ERT" для 7.7?
30 Икогнито
 
24.07.11
15:52
ПередЗаписью()
31 1CProfessional
 
24.07.11
16:07
(30) no result!!!
32 Мимохожий Однако
 
24.07.11
16:26
(28)Текст ошибки в студию...И встань отладчиком на строку перед ошибкой.
33 1CProfessional
 
24.07.11
17:47
ФИОПользователя = ТекФИО;
Сообщить(""+ФИОПользователя);

мне сообщается введенная мной строка! не пойму - почему документ не хватает в реквизит ФИОПользователя это значение?!

еще раз - делаю это уже в процедуре ПередЗаписью().
34 1CProfessional
 
24.07.11
17:51
как я проверяю и вижу, что реквизиты по документам остаются незаполненными? да вот как:

внешняя обработка с кодом:

//***********************************************************
Процедура РеестрДоков()
   
   
   Выборка = Документы.ЧекККМ.Выбрать(НачДата,КонДата);
   
   Пока Выборка.Следующий() Цикл
       
       Если ПустаяСтрока(Выборка.ФИОПользователя) Тогда
           Сообщить(""+Выборка+" - нет данных");
       Иначе
           Сообщить(""+Выборка+" - "+Выборка.ФИОПользователя);
       КонецЕсли;
       
   КонецЦикла
   
   
   
   
КонецПроцедуры

&НаКлиенте
Процедура РеестрДоков1(Команда)
   // Вставить содержимое обработчика.
   РеестрДоков();
КонецПроцедуры

//НачДата = ТекущаяДата();
//КонДата = ТекущаяДата();
35 sanja26
 
24.07.11
20:04
Если ВвестиСтроку(ФИО,"Введите свое ФИО.",50,Ложь) Тогда
убери
36 1CProfessional
 
24.07.11
20:27
(35) не понял! мне это как раз нужно.
37 1CProfessional
 
25.07.11
07:21
ну что - есть мысли?
38 Мимохожий Однако
 
25.07.11
07:29
Чтобы шагать в отладчике, надо запустить 1С в режиме отладки. Встаешь на нужную строчку кода в конфигураторе и нажимаешь F5. В меню Отладчик... можно посмотреть различные режимы шагания. Под каждый режим есть своя кнопка на клавиатуре или пиктограмма. Устанавливаешь маркер остановки и начинаешь в 1С Предприятие работать. Когда остановиться программа в указанном месте, то можно посмотреть значения переменных и результат работы используемых в коде методов. А дальше... дальше надо думать почему там не те значения, которые ожидаешь и ставить маркер немного  раньше или в самом начале процедуры, чтобы отследить проблемное место
39 1CProfessional
 
26.07.11
22:50
(38) Спасибо!!!
40 1CProfessional
 
31.07.11
01:17
Нет, вопрос мой не закрыт))
41 Reaper_1c
 
31.07.11
01:20
У кого-то походу дублирующиеся имена реквизитов объектов и форм. Может еще и переменные объявлены.
42 1CProfessional
 
31.07.11
01:21
да нет... не в этом дело
43 1CProfessional
 
31.07.11
01:33
добавил в документ новый реквизит... как теперь его проставить в выборке? перезаписать все доки (около 40 шт.) с заданным этому реквизиту значением (одинаковым пока)?
44 1CProfessional
 
31.07.11
01:38
сделать простановку этого реквизита внешней обработкой.
45 GROOVY
 
31.07.11
03:03
В модуле формы в процедуре "ПередЗаписью" есть параметр, если не ошибаюсь, "ТекущийОбъект", именно в его свойства надо писать то что должно в итоге записаться в базу, так как просто "объект" это данные формы, которые обновятся после отработки транзакции записи. Документацию надо читать, перед тем как что то ваять. И уж совсем дико видеть изменение объекта в событии "ПослеЗаписи"


(43) А какие варианты?
46 1CProfessional
 
08.08.11
09:55
(45) Добавил в документ ЧекККМ свой реквизит (Строка). Нужно реализовать его заполнение произвольными строковыми значениями при вводе новых доков в информационную базу данных. Все, потом будет работать мини-реестр  документов - так же - мной сделанный - на выборку документов с фильтром по этому реквизиту.
47 rrunover
 
08.08.11
10:09
Мне кажется, что ТС игнорирует (4) и (11). Взлетело же бы ведь!
48 rrunover
 
08.08.11
10:14
А, не, не игнорирует. :-)

Интересно, а "ЭтаФорма.ФИОПользователя = ТекФИО;" поможет?
49 1CProfessional
 
08.08.11
12:45
щас попробую ЭтаФорма
50 1CProfessional
 
08.08.11
15:25
если пишу ЭтаФорма... - ругается на неизвестность переменной ФИОПользователя
51 1CProfessional
 
08.08.11
15:25
равно, как и в случае написания Объект.ФИОПользователя
52 rrunover
 
08.08.11
15:57
Так. Давай по порядку.

Судя по коду из (1)

ТекФИО = "";
Если ОбработкаТабличнойЧастиТоварыКлиент.ВводФИОПользователя(ТекФИО) Тогда //тут вообще-то ТекФИО не возвращается, а проверяется только на возврат булева.
ФИОПользователя = ТекФИО;
Сообщить(""+ФИОПользователя);
// Однако в (33) ты пишешь, что отражается, что нужно. Откуда берётся? Код весь давай!
КонецЕсли;

Если директива выполнения перед процедурой/функцией не указана, она будет выполняться на сервере. Для наглядности директиву лучше указывать сразу.
53 1CProfessional
 
08.08.11
16:03
ОбработкаТабличнойЧастиТоварыКлиент.ВводФИОПользователя(ТекФИО)

В ВводФИОПользователя(ТекФИО)

такой код (эту функцию добавил в конфу сам):

Функция ВводФИОПользователя(ФИО) Экспорт
   
   Результат = Ложь;
   
   ФИО = "";
   Если ВвестиСтроку(ФИО,"Введите свое ФИО.",50,Ложь) Тогда
       Если Не ПустаяСтрока(ФИО) Тогда
           Результат = Истина;
       КонецЕсли;
   КонецЕсли;

   Возврат Результат;
   
КонецФункции
54 1CProfessional
 
08.08.11
16:05
// Однако в (33) ты пишешь, что отражается, что нужно. Откуда берётся?

именно! сообщается введенное via ВвестиСтроку() строковое значение!!! но к доку оно "не лепится"!
55 rrunover
 
08.08.11
16:08
Молодец, что добавил.

Функция твоя откроет окошко ввода строки... даст пользователю ввести "Давлаташуевич Саша Сашадшуевич"... и коварно возвратит не введённую строку ФИО, а [ДА] Слышишь, ТС? Функция твою возвратит значение хИСТИНА]: да, хозяина-ма, юзера писал-писал, я видела, да. А? Чо писал? Не, не знаю.
56 rrunover
 
08.08.11
16:13
Зачем ты вообще эту обработку используешь?
Хочешь какому-то документу присвоить реквизит, который не отражается на форме?
Пойди _самым_ простым путём: не дописывай существующее, а напиши маленькую, удобную, _свою_ обработочку: на форме два поля. Одно - выбор нужного документа ЧекККМ, второе - то, что нужно присвоить реквизиту документа. Всё. И с УФ по-человечески разберешься и с директивами разберешься.
Да и обработку сможешь выложить и показать, еси чо.
57 1CProfessional
 
08.08.11
17:12
Погоди... Я все тобой написанное, конечно, прочел! И за это - спасибо, тебе!
НО!
Рассказываю для чего это все мне.
Есть магазин с одним ноутом. На нем запущена конфа УТ 11.0 (11.0.6.9). В конфи "сидит" один пользователь - Продавец1. При этом продавцов-консультантов - 3 человека. Вот и появилась нужда в "фамилизации" вводимых в БД доков. Я, вообще, в основном с 7.7 (до сих пор) связан на своей основной работе... Неужели не получится реализовать задуманный мною план?
58 rrunover
 
09.08.11
09:11
А. Ну... ты глобально конечно к задаче-то подошел. С места в карьер :)

Дык это... разве в УТ в документах нет признака "Ответственный" или что-то типа того. Заведи пользователей, но в настройках поставь, чтобы не отражались в списке выбора.
Или пусть пишут своё ФИО в поле "Комментарий".

Можно так? Неужели решить вопрос без допиливания не получится?
59 1CProfessional
 
09.08.11
20:01
(58) Я хочу сделать именно так, как выше сказал... Есть на то причины...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.