Имя: Пароль:
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: Сохранение настроек, внешняя обработка, в свойствах формы обработки поставил галку "Сохранять значения", указал Табличная часть.ШаблоныНастроек, но кнопочки не активны!? Надо, чтобы каждый раз при изменении настроек они сохранялись...
Независимо от того, куда вы едете — это в гору и против ветра!