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


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

Метки:

Вчера встал на забавные грабли в 1С

Я
   Львенок
 
26.01.04 - 10:32
Сделал обработочку по замене одной дисконтной карты на другую, вызывается она, значит, по кнопке из справочника с карточками скидок и передается ей в качестве параметра ТекущийЭлемент().
На форме запендюрил несколько текстовых полей с формулой, чтобы показывали некоторые данные из карточки, но не редактировались и одно поле ввода типа строка 60, идентификатор СтарКоммент. Те переменные, которые использовались в "Формула" в реквизитах типа текст, описал в модуле через Перем, а заодно, по запарке и СтарКоммент там же описал.
Результат.
Перем Сумма, Процент, СтарКоммент;
Сумма=10;
Процент=5;
СтарКоммент="Бла-бла-бла".
На форме в текстовых полях отображается 10, 5, а вот в поле ввода СтарКоммент все пусто. Никакой ругани, никаких ошибок, но и строки "Бла-бла-бла" тоже нет. А все потому, что как я понимаю, 1С перестала ассоциировать СтарКоммент с идентификатором поля ввода на форме. СтарКоммент стал обычной переменной. Я себе всю голову сломал, почему не работает, пока не заметил, что я и СтарКоммент описал в переменных. Стоило его оттуда убрать, все стало хорошо и строка "Бла-бла-бла" появилась на форме.
Глюк неочевидный, кстати. ИМХО следовало бы 1С ругнуться, что я описываю Идентификатор (уже описанный на форме) как локальную переменную через "Перем".
P.S.: Если pit скажет, что он это знал с детства, я его съем! ;)
___
Искренне Ваш, Львенок.
 
 
   345
2 - 26.01.04 - 11:00
Еще из такиз приколов - как вызвать процедуру из кнопки, не прописывая ее явно в поле "формула" кнопки ...
   Львенок
 
3 - 26.01.04 - 11:10
Век живу, век учусь. Ну с такими проблемами я сам справляюсь.
(2) И как это делается?
___
Искренне Ваш, Львенок.
   345
4 - 26.01.04 - 11:25
Это ты про верблюда?

1С при наличии текста в поле формула пытается выполнить то, что там написано...

Фича заключается в том, что если поле формула пустое, то делается попытка вызвать процедуру, имя которой формируется из ИДЕНТИФИКАТОРА кнопки
т.е.
Идентификатор кнопки КнопкаХХХ

вызов процедуры, оформленной как

процедура КнопкаХХХ()..... параметров передать нельзя..

Если такой процедуры нет - исключительное состояние НЕ ГЕНЕРИТСЯ...

P.S. однажды на этом поймал товарища, который пытался подсидеть меня (демпинговал)... Он маялся неделю ... так и не допер .... Но там была еще одна недокументированная фича ....
   WhiteCat
 
8 - 26.01.04 - 12:09
(0) Я это знал с детства (предупреждаю: коты невкусные)
На самом деле это первый баг, на который я натолкнулся при знакомстве с 1С. Запомнил на всю жизнь. А про (2) не знал, прикольно
   Denis Nsk
 
10 - 26.01.04 - 12:59
(7) Понял, медленно читаю.
А не подкажите еще одну штуку?
Вчера почитал о синтаксисе Процедура/Функция, у них оказывается есть \"предварительное определение\" (кажется так).
 Процедура А (Б) Далее
 ...//блок

 А (Б);// использование процедуры А

 Процедура А (Б)
   ...
 КонецПроцедуры

Так вот, конечное описание процедуры все равно не должно находится в блоке с исполняемыми операторами?
 
  Рекламное место пустует
   Толик
11 - 26.01.04 - 13:09
(10)Ну это ясень пень, что недолжно, тогда теряеться весь смысл структурированности(в любом языке, а не только в 1С).
   Denis Nsk
 
12 - 26.01.04 - 13:22
(11) Я не волшебник, я только учюсь. Просто я думал что это "Далее" позволяет обойти это. Связанно данное желание с конкретной ситуацией: необходимо поправить глобальник, и было жилание все процедуры и функции собрать в одном месте с непосредственным модулем.

Структурированность это:
 Определение переменных;
 Определение процедур
  определение внутренних переменных;
  исполняемые операторы;
Конец определения процедур
 Исполняемые операторы;
Правильно я понял?
   Andrey
 
13 - 26.01.04 - 18:29
(12) Не совсем
Процедура А()
Если Условие=1 Тогда
Б();
КонецЕсли;
КонецПроцедуры

Процедура Б()
А();
КонецПроцедуры

Без далее тут не обойтись
   skunk
 
18 - 26.01.04 - 21:12
... comment is superfluous

хе народ, стесняюсь спросить, а если в модуле надо обломить вызов процедуры из глобальника вы коммите, а когда надо опять разкоммите.
   Denis Nsk
 
19 - 27.01.04 - 06:38
(13) Не совсем понял - "Далее" относится к процедуре Б?
К стати, по Вашему алгоритму можно подвесить комп (уйдет в вечный цикл), если конечно он сам не перестрахуется? Я не профи сразу предупреждаю.

(16) У Вас нет желания сделать ветку где бы вываливались эти недокументированные возможности. Обсуждать их можно в других ветках, дабы не засорять осовную а выверенный текст перекидывать в основную чистую ветку. Здесь конечно без модераторов не обойтись. Как считаете стОит или стоИт?
   Дмитрий
20 - 02.02.04 - 16:37
Совсем недавно обнаружил еще такую штуку (лично для меня точно открытие):
1. В форму документа вставляем флажок с именем (идентификатором)
2. Добавляем в шапку документа реквизит типа число с таким же именем
3. Смотрим форму: Флажок остался, только теперь он сохраняется при сохранении документа. Т.е. теперь это не локальная переменная.
   T-34
21 - 02.02.04 - 18:11
(20)Поставь на форму документа Таблицу Значений, а в документе создай реквезит с аналогичным именем. Любуйся.



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