Имя: Пароль:
1C
1С v8
Команда в Управляемых формах
,
0 H737
 
16.12.15
10:37
Приветствую всех участников форума!
1С 8.3.6.2299 тонкий клиент.
В УТ 11.1 в документ ЧекККМ добавил команду и обработку команды.
Но строка добавляется только со 2-го нажатия на кнопку.
Как добиться, чтобы срабатывало с 1-го раза?


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    ТабЧасть = ПараметрыВыполненияКоманды.Источник.Объект.Товары;
    
    НоваяСтрока = ТабЧасть.Добавить();
    НоваяСтрока.Номенклатура = ПолучитьНоменклатуруНаСервере();
    НоваяСтрока.Количество = 999999;
    НоваяСтрока.КоличествоУпаковок = 999999;
    НоваяСтрока.Цена = 999999;
    
КонецПроцедуры

&НаСервере
Функция ПолучитьНоменклатуруНаСервере()
    
    Возврат Справочники.Номенклатура.НайтиПоНаименованию("Аренда автомобиля");
    
КонецФункции
1 hhhh
 
16.12.15
10:42
может забываешь форму обновить? Там есть такая кнопка Обновить в виде колесика, или на командной панели, или в Еще.
2 H737
 
16.12.15
10:47
(1) обновление не помогает.
И при 2-м нажатии на кнопку команды (и при любом количестве нажатий тоже) строка добавляется и без обновления.
3 Timon1405
 
16.12.15
10:48
(0) свойство команды "Изменяет данные"
4 H737
 
16.12.15
10:56
(3) свойство команды "Изменяет данные" тоже пробовал.
Тогда новая строка на форме вообще не появляется.
5 Ymryn
 
16.12.15
11:00
А если просто использовать
ТабЧасть = Объект.Товары;
?
6 Ymryn
 
16.12.15
11:02
(5) и замени у ПолучитьНоменклатуруНаСервере() директиву &НаСервере на &НаСервереБезКонтекста. Таскать полностью объект на сервак для получения номенклатуры - некрасиво :)
7 H737
 
16.12.15
11:13
(5) В модуле команды
{(1,1)}: Переменная не определена (Объект)

(6) Да, спасибо за замечание про "НаСервереБезКонтекста"
8 H737
 
16.12.15
11:15
(6) {Документ.ЧекККМ.Команда.Заполнить11.МодульКоманды(8,29)}: Процедура или функция с указанным именем не определена (ПолучитьНоменклатуруНаСервере)
    НоваяСтрока.Номенклатура = <<?>>ПолучитьНоменклатуруНаСервере(); (Проверка: Тонкий клиент)
9 Nuobu
 
16.12.15
11:20
(8) В команде могут быть только процедуры и ф-и "НаКлиенте".
Всю остальную логику выноси в другие модули.
10 H737
 
16.12.15
11:30
(9) тем не менее процедура с меткой "НаСервере" в модуле команды работает.
11 Ymryn
 
16.12.15
11:31
И только сейчас я врубился, что это команда, а не команда формы. Блин, косяк, приношу извинения.
Тогда замечание про контекст было кривым, как и совет с объектом.
12 H737
 
16.12.15
11:31
(11) вот-вот
13 Ymryn
 
16.12.15
11:32
(12) кстати, а если не секрет, а почему через команду, а не команду формы это реализуется?
14 Nuobu
 
16.12.15
11:33
(10) Ну, возови её здесь же, в команде.
15 H737
 
16.12.15
11:34
(13) Такое условие было поставлено, чтобы было проще обновлять
16 H737
 
16.12.15
11:34
(14) ну так и вызывается же
17 Nuobu
 
16.12.15
11:35
(16) Процедура или функция с указанным именем не определена (ПолучитьНоменклатуруНаСервере)
    НоваяСтрока.Номенклатура = <<?>>ПолучитьНоменклатуруНаСервере(); (Проверка: Тонкий клиент)
18 H737
 
16.12.15
11:39
(17) Ну так она НЕ определена, если использовать предложенную директиву &НаСервереБезКонтекста, а с оригинальной директивой &НаСервере - определена.
19 H737
 
16.12.15
11:40
(17) и это было признано в (11)
20 Nuobu
 
16.12.15
11:43
(19) Я тоже тупанул. Признаю.
21 H737
 
16.12.15
11:49
(20) бывает...
22 H737
 
16.12.15
11:51
(1) нашел решение проблемы обходным путем:
вызываю из модуля команды обработку и в ней делаю заполнение табличной части. Строки добаляются с 1-го раза.

Но всеже хотелось бы обойтись без обработки, т.е. чтобы строки добавлялись прямо из модуля команды.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.