Имя: Пароль:
1C
 
Хитрая система событий табличного поля - копирование строки.
0 Гений 1С
 
гуру
30.01.07
19:13
В общем задача такая - при добавлении новой строки нужно проставить в ней флажок Добавлена, означающий что строка была добавлена вручную.
Добавлена строка может быть или кнопкой INS(добавление) или кнопкой F9 (дублирование).

При добавлении последовательность событий такая:
* ПередНачаломДобавления - строка еще не доступна
* ПриАктивизацииЯчейки - строка уже доступна, анализируя было ли перед этим событие ПередНачаломДобавления определяем, что строка новая, нужно проставить флаг.

При дублировании последовательность событий такая:
* ПередНачаломДобавления - строка еще не доступна
* ПриАктивизацииЯчейки - строка уже доступна, но строка пустая.
* Повторная ПриАктивизацииЯчейки - строка уже заполнена.

Ну и как мне однозначно в обработчике ПриАктивизацииЯчейки определить, строка новая или не новая, блин.
1 ТелепатБот
 
гуру
30.01.07
19:13
2 zbv
 
30.01.07
19:30
(0) а зачем обзательно при ПриАктивизацииЯчейки определять?

Точно не помню, а 8-ки нет под рукой, но вроде есть процедуры, связанные с редактированием, а там есть параметры НоваяСтрока, Копирование...
3 Великий Нехочуха
 
30.01.07
19:32
ПриНачалеРедактирования (OnStartEdit)
Синтаксис:
ПриНачалеРедактирования(<Новая строка>, <Копирование>)
Параметры:
<Новая строка>
Тип: Булево. Признак редактирования новой строки. Имеет значение Истина, если строка была добавлена или скопирована.
<Копирование>
Тип: Булево. Если данный параметр имеет значение Истина, то выполняется копирование строки.
4 Великий Нехочуха
 
30.01.07
19:33
продам СП почти что бесплатно :)
продам бес сожаления:)
5 zbv
 
30.01.07
19:35
(4) нехочу... ;-) 8-ки на работе хватает...
6 Великий Нехочуха
 
30.01.07
19:36
(5) не тебе а (0)
7 Гений 1С
 
гуру
30.01.07
19:44
(3) Зы, попробую...
8 Гений 1С
 
гуру
31.01.07
18:07
(3) нехочуха в пролете - если в строке нет доступных для редактирования полей, то приначалередактирования не вызывается!!!

Короче я вышел из положения - в событии передначаломДобавления ставлю отказ и добавляю строку собственными силами.

Маразматическая схема событий, просто идиотская... Нуралиева - на мыло!
9 Великий Нехочуха
 
31.01.07
18:12
(8) а зачем закрывать от редактирования ВСЕ поля строки??:)
10 Великий Нехочуха
 
31.01.07
18:14
(8) в (0) не было сказано ни слова о доступности полей
11 wPa
 
31.01.07
18:29
А добавить невидимое булево поле в таб часть и при записи его занулять, а при вводу строки устанавливать? тогда при активизации всегда знаешь новая или нет...как?
12 France
 
31.01.07
18:34
я бы врозь хранил добавленные и "недобавленные"..
13 wPa
 
31.01.07
18:38
(12) в разных таб частях? и переделать все запросы к таб частям доков? жесть...
14 dimoff
 
31.01.07
18:39
o
15 Гений 1С
 
гуру
31.01.07
18:40
(11) тогда уж проще сэмулировать добавление. К тому же для невидимых полей не будет вызываться событие "ПриНачалеРедактирвования", оно вызывается не при добавлении строки, а при БУКВАЛЬНо начале редактирования поля.

Убого, с тоской вспоминаю триггеры Navision
16 France
 
31.01.07
18:40
(13) какие запросы на?..
17 Гений 1С
 
гуру
31.01.07
18:40
(9) Если ты не можешь себе представить такой задачи, это не значит, что ее нет. ;-)
18 Гений 1С
 
гуру
31.01.07
18:41
Ну на самом деле, там есть доступные поля.
Просто при добавлении новой строки активизируется ячейка, которую пользователь не имеет права редактировать, и я ставлю на эту колонку ТолькоПросмотр=истина, в результате чего ПриНачалеРедактирования не вызывается.

Т.е. иными словами, в 1С нельзя гарантированно получить событие добавление новой строки. Криво
19 Гений 1С
 
гуру
31.01.07
18:42
(13) рабочий день закончился, бухаете?
20 wPa
 
31.01.07
18:44
(16) как бы ты "врозь хранил добавленные и "недобавленные".."?
21 wPa
 
31.01.07
18:46
(19) еще не совсем..
22 Гений 1С
 
гуру
31.01.07
18:46
(20) Гы, товарищ, ты не понял. Есть строки, добавленные обработкой - например по нажатию кнопочки заполнить, а есть строки, добавленныя ручками, пользователем по нажатии кнопочки Инсерт.
23 France
 
31.01.07
18:47
(20) хранитьврозь легко.. но твая тема понятна.. так что, не будем продолжать.
24 Neco
 
31.01.07
18:47
Кстати, всяческие события можно эмулировать с помощью подключения обработчика ожидания (ПодключитьОбработчикОжидания) и в этой процедуры с некой периодичностью проверять нужные данные.

ЗЫ: Согласен, не совсем правильный подход обработки событий но иногда помогает ;-)
25 wPa
 
31.01.07
18:55
(22) При заполнении обработкой ставишь скрытое поле связанных данных в истина для строки - т.е. заполнено обработкой. Если при активизации поле ложь - значит строка добавлена не твоей обработкой. Иль опять я не догнал )
(20) ок.
26 wPa
 
31.01.07
19:04
Единственное что - в обработке события ПередНачаломДобавления проверять передаваемый параметр Копирование - если истина обнулять это поле...
27 Гений 1С
 
гуру
31.01.07
19:04
(25) по некоторым соображением ваш вариант мне не подходит, хотя его я уже рассматривал.
28 Гений 1С
 
гуру
31.01.07
19:05
(26) в событии ПередНачаломДобавления нет новой строки, так что те же самые грабли!
29 Великий Нехочуха
 
31.01.07
19:25
28 а что нужно сделать с этой самой строкой?
30 Jolly Roger
 
31.01.07
21:10
Гений, а чем не нравится решение в (8)? По-моему, нормально: перехватить добавление и добавить строку вручную.
31 AeDen
 
31.01.07
21:12
Гений, жжошь...
32 Молния
 
31.01.07
21:21
Гений тебя на форуме маззи разбанили?
33 Гений 1С
 
гуру
01.02.07
18:43
(32) Да мое любопытцтво к Динамиксам удовлетворено. Ацтой, одним словом. ;-)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn