Имя: Пароль:
1C
 
Обработчик ПриИзменении для ячейки, созданной программно
0 vladon
 
15.02.07
16:16
Если в табличном поле создал программно строку, то как к одной из её ячеек прикрутить обработчик ПриИзменении?
1 Scooter
 
15.02.07
16:28
ПодключитьОбработчикИзмененияДанных ???
2 asady
 
15.02.07
16:59
(0)
Расширение элементов управления, расположенных в форме
УстановитьДействие (SetAction)
Синтаксис:
УстановитьДействие(<Событие>, <Действие>)
Параметры:
<Событие> (обязательный)
Тип: Строка. Имя события.
<Действие> (обязательный)
Тип: Действие, Неопределено. Устанавливаемое действие.
В случае установки значения Неопределено при получении от элемента управления указанного события никакого действия выполнено не будет.
Описание:
Устанавливает новую процедуру-обработчик (действие) для указанного события.
3 vladon
 
15.02.07
17:00
(1), (2), +(0)

В общем, добавляю в строке ячейку с типом данных СправочникСсылка.ЕдиницыИзмерения, который подчинён Справочнику Номенклатура

Нужно, чтобы при изменении ячейки с единицей измерения выбирались только те элементы справочника ЕдиницыИзмерения, владельцем которых выступает определённый элемент справочника номенклатура.

Я не тем путём иду?
4 asady
 
15.02.07
17:05
(3) к конкретной ячейке ТП прикрутить событие "ПриИзменении" нельзя - можно прикрутить событие к колонке ТП.
5 asady
 
15.02.07
17:20
"Связь по владельцу" в свойствах этой ячейки настрой.
6 vladon
 
16.02.07
13:49
(5) а как её настроить программно?
7 dimoff
 
16.02.07
13:50
(4) чушь
8 asady
 
16.02.07
13:53
(7) осторожнее молодой человек. А не то придется продемонстрировать обратное.
9 TormozIT
 
гуру
16.02.07
13:53
ТабличноеПоле.Колонки.Колонка1.ЭлементУправления.УстановитьДействие("ПриИзменении", Новый Действие("ОбработчикПриИзменении"))
10 coder1cv8
 
16.02.07
13:54
(8)+1 Хотелось бы увидеть как это делается?
11 dimoff
 
16.02.07
13:58
В 4 в принципе чушь написана, не имеющая к 3 никакого отношения. Естественно элемент управления для всех строк определенной колонки один. Но 3 иного и не требуется, код в 9 его вполне устроит.
12 dimoff
 
16.02.07
13:59
(8) Обратное я тебе элементарно могу продемонстрировать, делая 9 при активации строки в зависимости от индекса строки и т.д. и т.п.
13 coder1cv8
 
16.02.07
14:01
(12) интересный ход...
14 dimoff
 
16.02.07
14:02
(13) Но совершенно бесполезный, так как условие можно обрабатывать в одном обработчике.
15 coder1cv8
 
16.02.07
14:04
(14) ну да. Тока это не будут разные обработчики для строк )
16 dimoff
 
16.02.07
14:04
(15) А (0) и не ставит такую задачу даже близко.
17 asady
 
16.02.07
14:04
(11) так вот в (4) написано именно то что приведено в (9) - погляди внимательно. Иного и не имелось ввиду.
А всякую чушь советовать, как например в (12) явно не стоило.
18 dimoff
 
16.02.07
14:07
(17) В 4 написана бессмысленная, самособойподразумевающаяся фраза, не имеющая отношения к (3), в 12 к тому же не содержится ни одного совета, а лишь демонстрация возможности.
19 asady
 
16.02.07
14:08
в (12) содержится демонстрация чуши. Признай.
Так никто никогда делать не будет.
20 dimoff
 
16.02.07
14:10
что за болван
21 asady
 
16.02.07
14:11
(20) Молодо зелено.
Перестань демонстрировать свою ограниченность. Не злись. Умей признавать свои ошибки. Держись достойно.
22 dimoff
 
16.02.07
14:13
(21) Да, извини пожалуйста ты во всем прав во всех своих прошлых постах и на несколько постов вперед.
23 coder1cv8
 
16.02.07
14:13
Оба хороши, ИМХО.
24 vladon
 
16.02.07
14:16
Эге, успокойтесь, люди :)

так что делать-то?

вот код (примерно), индексы чтобы понятно было:

<code>
НоваяСтрока = ЭтаФорма.Цены.Добавить();
НоваяСтрока[0] = Выборка.Номенклатура;
НоваяСтрока[1] = Выборка.Цена;
НоваяСтрока[2] = Выборка.ЕдиницаИзмерения;
</code>

ЭтаФорма.Цены - это ТаблицаЗначений

как сделать так, чтобы в колонке с единицей измерения при изменении в списке подбора были только те элементы справочника ЕдиницыИзмерения, у которых владелец - тот, что в нулевой колонке?
25 vladon
 
16.02.07
14:23
+(24) ну, слабо? :) ну тогда продолжайте ругаться :)
26 asady
 
16.02.07
14:23
(24) источник данных для ТП существует?
27 vladon
 
16.02.07
14:28
(26) ТП формируется из запроса

номенклатуру беру из регистра сведений ПравилаЦенообразования

цены беру из регистра сведений ЦеныНоменклатуры.СрезПоследних
28 asady
 
16.02.07
14:30
(26) Попытка номер 2.

что написано в поле "Данные" свойств табличного поля?
29 vladon
 
16.02.07
14:32
(28) Цены, тип ТаблицаЗначений
30 dimoff
 
16.02.07
14:32
(24) В колонке с единицей измерения или в при выборе в элементе управления?
31 vladon
 
16.02.07
14:33
(30) при выборе в элементе управления, конечно, я неправильно в (24) выразился.

короче, при изменении в ячейке.
32 dimoff
 
16.02.07
14:34
(31) Свойство СвязьПоВладельцу
33 vladon
 
16.02.07
14:35
(32) чьё свойство? у колонки нет такого свойства, у ячейки нет, у элемента управления тоже нет.
34 asady
 
16.02.07
14:35
Цены - это реквизит формы обработки или реквизит объекта?
35 vladon
 
16.02.07
14:36
(34) реквизит формы обработки.
36 dimoff
 
16.02.07
14:36
(33) Должно быть свойство элемента управления, но в списке свойств в синтакс-помощнике я его не нахожу, только на панели свойств
37 vladon
 
16.02.07
14:37
(36) вот именно, в этом и ступор :(
38 dimoff
 
16.02.07
14:37
ВыборПоВладельцу называется
39 dimoff
 
16.02.07
14:38
В СП оно как расширение поля ввода для справочников
40 asady
 
16.02.07
14:41
(35)
1. делай Цены реквизитом объекта
2. При открытии сделай
ЭлементыФормы.ТабличноеПолеЦены.СоздатьКолонки();
ЭлементыФормы.ТабличноеПолеЦены.Колонки.Номенклатура.ЭлементУправления.УстановитьДействие("ПриИзменении", Новый Действие("ОбработчикПриИзмененииНоменклатуры"))
3. В процедуре модуля формы

процедура ОбработчикПриИзмененииНоменклатуры()
   ОбработатьИзменениеНоменклатуры();
конецпроцедуры
в модуле объекта
процедура ОбработатьИзменениеНоменклатуры() экспорт
Для каждого стр из Цены Цикл
  стр.ЕдиницаИзмерения=стр.Номенклатура.БазоваяЕдиница;
КонецЦикла;    
конецпроцедуры
41 vladon
 
16.02.07
14:48
(40) хм, а в чём радость?
нужен выбор единицы измерения по владельцу при изменении именно в ячейке .ЕдиницаИзмерения

у тебя получается, что при изменении номенклатуры загружается только его базовая единица.
42 dimoff
 
16.02.07
14:49
(41) С 38 получилось?
43 asady
 
16.02.07
14:49
(41) ну я же не телепат. никак не догоню цель твоих потуг.
44 asady
 
16.02.07
14:50
(42) это (38) я еще  в (5) предлагал.
45 vladon
 
16.02.07
14:51
(42) вот пытаюсь
46 asady
 
16.02.07
14:53
(45) для этого (5) нужно опиать колонки заранее.
Например как ТЧ обработки. и указать эту ТЧ в качестве источника данных табличному полю в форме. тогда свойства ячейки "ЕдиницаИзмерения" будут доступны для установки.
47 dimoff
 
16.02.07
14:55
(45) Судя по всему свойство ПриАктивизацииСтроки нужно утанавливать каждый раз
48 vladon
 
16.02.07
14:58
(43) таблица установки цен:

             |  Магазин 1      | Магазин 2       |
Номенклатура | Цена | Ед. изм. | Цена | Ед. изм. |
--------------+------+----------+------+----------+
Marlboro     |   32 | пачка    |   34 | пачка    |
Marlboro     |  640 | блок     |  680 | блок     |
Яйца 1 кат.  |   20 | 1 дес.   |   21 | 1 дес.   |
Яйца 1 кат.  |   60 | 3 дес.   |   63 | 3 дес.   |

(цены из башки)

Нужно, чтобы когда пользователь выбирает единицу измерения в ячейке, то выбирались только те элементы справочника ЕдиницыИзмерения, у которых владелец - элемент номенклатуры в первой колонке. Т.е. чтобы для яиц не выбралась единица "блок" и т.д.

Сразу по (46): нельзя описать колонки заранее, они формируются динамически (для каждой структурной единицы), структурных единиц много, поэтому пользователь вначале при запуске обработки выбирает, для каких структурных единиц ему нужно установить/изменить/удалить цены, формируются колонки, получаются текущие цены из регистра и выводятся в таблицу.
49 asady
 
16.02.07
15:01
(48) не согласен с таким мнением.
Можно создать ТЧ обработки сразу с запасом на несколько структур типа "Магазин"
сразу им устьановить свойства как в (46), а в процессе работы рулить видимостями колонок и устанавливать заголовки.
50 vladon
 
16.02.07
15:04
(49) можно и так, но некрасиво :(

можно ещё сделать свои формы добавления и редактирования строки табличного поля (чтобы не прямо в поле редактировать), но тоже некрасиво

но так наверное и сделаю как ты посоветовал.
51 asady
 
16.02.07
15:06
ПолеВвода (TextBox)
ЭлементСвязиПоТипу (TypeLinkItem)
Использование:
Только чтение.
Описание:
Номер элемента объекта, с которым связано по типу поле ввода. Например, если поле ввода связано со ссылкой на счет, то номер элемента будет обозначать номер вида субконто, из которого будет взят тип для отработки связи.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Нумерация начинается с 1.


Только чтение :(((((
52 vladon
 
16.02.07
15:07
(51) да это всё равно не то.

а как по данной строке объекта ТаблицаЗначений получить соответствующую строку в объекте ТабличноеПоле?
53 asady
 
16.02.07
15:09
(52) делай как в (49).
Динамически связь по владельцу не установишь. Это понятно из (51).
54 asady
 
16.02.07
15:11
(53) или можно делать обработку выбора ячейки
сначала программно включить обработчик этого события для данного элемента управления.
Потом в обработке выбора получать форму справочника и устанавливать отбор по владельцу.
55 dimoff
 
16.02.07
15:18
млин, все уже разжевано

Процедура ТвоеТабПолеПриАктивизацииСтроки()

ЭлементыФормы.ТвоеТабПоле.Колонки.ЕдиницаИзмерения.ЭлементУправления.ВыборПоВладельцу = ЭлементыФормы.ТвоеТабПоле.ТекущиеДанные.Номенклатура;

КонецПроцедуры
56 vladon
 
16.02.07
15:25
(55) да, сработало. спасибо.