Имя: Пароль:
1C
1С v8
Действия программно созданных кнопок?
0 Mikhail Volkov
 
27.08.16
19:28
Создаю обработку для выполнения некоторых однотипных действий с заданными параметрами. Для этого в нее вставил табличную часть ШаблоныНастроек, в которой задаются параметры действий. Для каждой настройки программно создаю кнопку:
Процедура ОбновитьКнопкиМеню()
    МенюКнопок = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.КнопкаВыполнитьДействие.Кнопки;
    МенюКнопок.Очистить();
    Для каждого Строка Из ШаблоныНастроек Цикл
        МенюКнопок.Добавить("КнопкаНастройки" + Строка.НомерСтроки, ТипКнопкиКоманднойПанели.Действие, СокрЛП(Строка.Наименование), Новый Действие("ВыполнитьДействие"));
    КонецЦикла;
КонецПроцедуры

Процедура ВыполнитьДействие()
    Сообщить("ВыполнитьДействие");
КонецПроцедуры

Вот только чет не соображу как процедура выполнения действия должна понимать по какой кнопке она вызвана, и по каким параметрам (настройкам) выполнять действие?
1 sunson01
 
27.08.16
19:31
Для каждой кнопки должна быть своя процедура.
2 Рэйв
 
27.08.16
19:33
(0)Идиотское решение. Лучше уж по примеру  справочника "внешние обработки" пиши их и сохраняй:-)
3 Лефмихалыч
 
27.08.16
19:43
(1) нет
(0) у обработчика действия есть параметр, в который передается нажатая кнопка. В обработчике по этому параметру ты как раз и можешь определить, что за кнопка нажата
4 Рэйв
 
27.08.16
19:45
(3)Делал такое. Но запаришься каждый рас дописывать условие и код.
5 Лефмихалыч
 
27.08.16
19:49
(4) это - бесспорно.
Надо как-то так, чтобы по кнопке вычислялся шаблон настройки и потом он передавался бы в общий метод ВыполнитьВсюХернюПоШаблонуНастроек()
6 Лефмихалыч
 
27.08.16
19:51
(5) хотя, это как раз то, что ты и предложил в самом начале по сути
7 Mikhail Volkov
 
27.08.16
20:18
(3) Что за параметр? Имя кнопки: "КнопкаНастройки" + Строка.НомерСтроки?
8 Лефмихалыч
 
27.08.16
20:19
Процедура ВыполнитьДействие(ВотЭтотПараметр)
    Сообщить("ВыполнитьДействие: "+ВотЭтоДействие.Имя);
КонецПроцедуры
9 Mikhail Volkov
 
27.08.16
20:28
Да, имя кнопки: "КнопкаНастройки" + Строка.НомерСтроки, спс
10 Mikhail Volkov
 
28.08.16
06:28
Процедура ВыполнитьДействие(ВотЭтотПараметр)
    НайденнаяСтрока = ШаблоныНастроек.Найти(Число(Прав(ВотЭтотПараметр.Имя, 1)));
    Если НайденнаяСтрока = Неопределено Тогда
        Сообщить("Не найдена настройка: " + ВотЭтотПараметр.Имя + "/" + Число(Прав(ВотЭтотПараметр.Имя, 1)));
    Иначе
        Сообщить("Найдена настройка: " + ВотЭтотПараметр.Имя + "/" + Число(Прав(ВотЭтотПараметр.Имя, 1)) + "/" + НайденнаяСтрока.НомерСтроки + "/" + НайденнаяСтрока.Водитель + "/" + НайденнаяСтрока.СкладОтправитель + "/" + НайденнаяСтрока.СкладПолучатель);
    КонецЕсли;
КонецПроцедуры

Не находит нужную настройку!? :(
11 Лефмихалыч
 
28.08.16
10:24
(10) используй отладчик, будь мужиком!
У тебя ВотЭтотПараметр.Имя содержит строку вида "КнопкаНастройки"+Номер, а в справочнике таких нет. Имя кнопки при создании кнопки присваивай такое, по которому потом найти сможешь. Добавь на форму реквизит произвольного типа, в который сложи соответствие <Кнопка :: СсылкаНаШаблон>, так даже быстрее будет и правильнее. Однако, если форма управляемая, придется изгольнуться.
12 Лефмихалыч
 
28.08.16
10:24
хотя у тебя форма не управляемая, так что соответствие - офигительное решение всех проблем
13 hhhh
 
28.08.16
11:26
(10) что такое ШаблоныНастроек ??
14 Лефмихалыч
 
28.08.16
11:32
(13) "Создаю обработку ... . Для этого в нее вставил табличную часть ШаблоныНастроек"
15 Mikhail Volkov
 
28.08.16
18:33
(11) Все работает! Имена кнопок упростил до номера строки настройки - Строка.НомерСтроки, а "Не находит нужную настройку!?" - имя колонки забыл указать, по которой искать:
НайденнаяСтрока = ШаблоныНастроек.Найти(Число(Параметр.Имя), "НомерСтроки");
А вообще задачка следующая: на предприятие есть внутренние перемещения, которые делаются не за один рейс, а за 10-20. С утра распределяют во водителей по маршрутам возить груз из цеха в цех (или со склада на другой склад). Их не много - 5-7, не более 10. На каждый такой маршрут оформляется накладная перемещения товара без указания веса (не проведенная). А еще на каждый маршрут печатается лист (акт) взвешивания с шапкой накладной: Водитель, Откуда, Куда. Эти листы отдают на весовую. Водители челноками возят груз, бабушка на весовой аккуратно заполняет показания весов каждого рейса водителя в этих листах (на каждого водителя в отдельный лист). В конце смены по каждому листу подводят итог общего веса, и ставят его в накладные перемещения (проводят).
Сейчас весы весовой подключили к компьютеру, хотят, чтобы на каждый рейс оформлялась своя накладная перемещения товара. Но бабушка на весовой с компьютером не дружит!? Вот нужна обработка, которая сама их создавала по нажатию кнопок. Сколько маршрутов (листов взвешивания), столько кнопок с названиями "Водитель - Откуда - Куда". В шаблон настроек заношу параметры накладных (которые создаются утром без веса на каждый маршрут).
Пока у меня такое решение этой задачки. Есть лучше - поделись!?
16 Лефмихалыч
 
28.08.16
18:37
Бред какой-то. Замените бабушку да и все.
17 Mikhail Volkov
 
29.08.16
03:58
(16) Не в бабушке дело, садили ей в помощь опытного оператора. Тоже куча ошибок... найти из десятка накладных нужную, скопировать, что-то в ней поменять... образуется очередь перед весовой, потеря рабочего времени... Проще нажать нужную кнопку на обработке. Может есть еще более простое решение автоматизации этого процесса?
18 Mikhail Volkov
 
29.08.16
18:40
А как бы сохранить табличную часть обработки ШаблоныНастроек на случай ее закрытия/открытия? Не нашел типового примера...
19 Лефмихалыч
 
29.08.16
19:41
(17) добавьте штрих код на печатную форму документа, а бабушку вооружите сканером
(18) если надо сохранять, то это уже документ.
20 Mikhail Volkov
 
30.08.16
03:40
(19) Для ввоза-вывоза штрих-код сделал.
Для отчетов есть же сохранение настроек!?
21 Mikhail Volkov
 
30.08.16
04:18
Нашел v8: Сохранение настроек, внешняя обработка, в свойствах формы обработки поставил галку "Сохранять значения", указал Табличная часть.ШаблоныНастроек, но кнопочки не активны!? Надо, чтобы каждый раз при изменении настроек они сохранялись...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан