Имя: Пароль:
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-го раза.

Но всеже хотелось бы обойтись без обработки, т.е. чтобы строки добавлялись прямо из модуля команды.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn