Имя: Пароль:
1C
1С v8
Не срабатывает ПриНачалеРедактирования 1с 8.2
0 IT_PROGRAMMIST
 
30.01.13
21:37
Добрый вечер. УПП, пл. 8.2.16.368.упр.формы.
Такая проблема: Есть табличная часть документа. В ней блокированы некоторые ячейки(Элементы.МояТЧ.ПодчиненныеЭлементы.МояТЧДата.Толькопросмотр = Истина)
. При использовании данной блокировки не срабатывает функция табличной части ПриНачалеРедактирования().Я хочу при копировании строки поменять реквизит скопируемой строки табличной части. В чем прикол????
1 IT_PROGRAMMIST
 
30.01.13
21:38
+(0 блокировка ячейки в функции ПриАктивизацииЯчейки())
2 Defender aka LINN
 
30.01.13
21:38
(0) Чего курил? Если элемент только для просмотра, его ВНЕЗАПНО изменить нельзя.
3 IT_PROGRAMMIST
 
30.01.13
21:40
так я же не хочу изменять блокируемый реквизит, а хочу менять другой. Как быть?
4 Defender aka LINN
 
30.01.13
21:41
(3) В табличной части есть ПередНачаломДобавления
5 IT_PROGRAMMIST
 
30.01.13
21:42
(4) перед началом добавления не даст возможность изменить реквизит будущей добавленной строки, так как срабатывает перед добавлением
6 Defender aka LINN
 
30.01.13
21:42
(5) говорите за себя
7 IT_PROGRAMMIST
 
30.01.13
21:43
(6) тогда изменится и реквизит из копируемой строки.
8 DrShad
 
30.01.13
21:45
говорите за себя
9 IT_PROGRAMMIST
 
30.01.13
21:49
(8) к примеру, пишу в
&НаКлиенте
Процедура МояТЧПередНачаломДобавления(Элемент,Отказ,Копирование,Родитель,Отказ)

Если Копирование тогда
Элемент.ТекущиеДанные.НужноРедактирРеквизит = "бла бла";
КонецЕсли

КонецПроцедуры

Результат изменит текущее заполнение, так как будущей строки ещё НЕТ
10 IT_PROGRAMMIST
 
30.01.13
21:53
а  ПриНачалеРедактирования() должен сразу отработать после добавления.
ПриНачалеРедактирования(Элемент,НоваяСтрока, Копирование)
<НоваяСтрока>
Тип: Булево. Признак редактирования новой строки. Имеет значение Истина, если строка была добавлена или скопирована.
<Копирование>

Тип: Булево. Определяет режим копирования. Если установлено Истина, то происходит копирование строки.
11 IT_PROGRAMMIST
 
30.01.13
21:54
ребят, где я ошибаюсь? Вроде простой вопрос.
12 DrShad
 
30.01.13
21:54
*рукаяйцо*  что он несет?
13 IT_PROGRAMMIST
 
30.01.13
21:57
(12) по человечески можешь объяснить?
14 DrShad
 
30.01.13
22:00
ты не слушаешь все равно :(
ты зачем при начале добавления текущую строку меняешь?
15 DrShad
 
30.01.13
22:00
[(Элемент,Отказ,Копирование,Родитель,Отказ)] и откуда два отказа!?
16 IT_PROGRAMMIST
 
30.01.13
22:01
(14) Даже если я непишу Элементы.МояТч.ТекущиеДанные.МойРеквизит ничего не поменятеся, так как строки ещё нет
17 IT_PROGRAMMIST
 
30.01.13
22:01
(15)Отказ то при копировании ошибка
18 IT_PROGRAMMIST
 
30.01.13
22:02
(16) в конце нет отказа
19 DrShad
 
30.01.13
22:06
а откуда копировал? ибо код не рабочий совершенно
20 IT_PROGRAMMIST
 
30.01.13
22:06
в ручную набирал
21 DrShad
 
30.01.13
22:08
не хорошо обманывать старших!
22 IT_PROGRAMMIST
 
30.01.13
22:08
(9 ) там Процедура МояТЧПередНачаломДобавления(Элемент,Отказ,Копирование,Родитель,Группа)
23 IT_PROGRAMMIST
 
30.01.13
22:16
может есть кто обходил эту ситуацию?
24 IT_PROGRAMMIST
 
30.01.13
22:30
эх..................
25 servs
 
30.01.13
22:32
поддерживаю (12) :D
26 servs
 
30.01.13
22:33
в базу знаний!))
27 IT_PROGRAMMIST
 
30.01.13
22:37
(26) лучше кодом подскажи.Как выйти из этой ситуации?
28 IT_PROGRAMMIST
 
30.01.13
22:37
хоть примерчек какой-нибудь
29 hhhh
 
30.01.13
22:51
а процедура ПриНачалеРедактирования() привязана к какому-нибудь событию? Или просто так в воздухе висит?
30 IT_PROGRAMMIST
 
30.01.13
23:03
(29)(это событие табличного поля)
31 DrShad
 
30.01.13
23:06
ТабличноеПоле (TableBox)
ПриНачалеРедактирования (OnStartEdit)
Синтаксис:

ПриНачалеРедактирования(<НоваяСтрока>, <Копирование>)
Параметры:

<НоваяСтрока>

Тип: Булево.
Признак редактирования новой строки. Имеет значение Истина, если строка была добавлена или скопирована.
<Копирование>

Тип: Булево.
Если данный параметр имеет значение Истина, то выполняется копирование строки.
Описание:

Возникает при начале редактирования старой или добавленной строки табличного поля. В процедуре - обработчике события нельзя отказаться от редактирования, но могут быть выполнены действия, необходимые при вводе новой строки, например, установка начальных значений.
Примечание:

Возникает, если редактирование производится непосредственно в табличном поле. Перед данным событием возникает событие ПередНачаломИзменения.
См. также:

ТабличноеПоле, событие ПередНачаломИзменения
32 DrShad
 
30.01.13
23:06
если новая строка, то какого же ты берешь текущие данные?
33 IT_PROGRAMMIST
 
30.01.13
23:09
(32) ввобще-то я пример к функции привел ПередНачаломДобавления в (9). ПриНачалеРедактирования() я и использую. Но возникает проблема описаная в (0)
34 DrShad
 
30.01.13
23:12
(33) у тебя в ноль просто поток сознания
35 IT_PROGRAMMIST
 
30.01.13
23:14
в (0) суть в том, что когда заблокирована любая ячейка табличного  поля (только просмотр = истина), то не заходит при копировании в процедуру ПриНачалеРедактирования()
36 DrShad
 
30.01.13
23:17
уверен?
37 IT_PROGRAMMIST
 
30.01.13
23:20
да, отладчиком проверено. 10 раз проверял. Как только ограничение на просморт с ячейки снимается в процедуру заходит.
38 DrShad
 
30.01.13
23:36
ну я не проверяю сейчас, поэтому просто поверю на слово
39 DrShad
 
30.01.13
23:37
а поставь в перед началом добавления Отказ в истину и добавь программно - будешь иметь новую строку
40 hhhh
 
30.01.13
23:47
(37) МояТЧДата.Доступность = ложь  пробовал?
41 IT_PROGRAMMIST
 
30.01.13
23:53
сейчас попробую (39), (40)
42 IT_PROGRAMMIST
 
31.01.13
00:07
Все верно. Сделал как сказал в (39) ПОЛУЧИЛОСЬ. Спасибо тебе большое за помошь.Только так получилось. А по поводу ситуации в (0), напишу в 1С пускай объясняют, видно типовая фигня.

Сделал так:
&НаКлиенте
Процедура ОтработанноеВремяПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
   
   Если Копирование тогда
       Отказ = Истина;
       НоваяСтрока                      = Объект.ОтработанноеВремя.Добавить();
       ЗаполнитьЗначенияСвойств(НоваяСтрока,Элемент.ТекущиеДанные);
       НоваяСтрока.СостояниеОборудования = Справочники.ПереченьСостоянийОборудования.ПустаяСсылка();
   КонецЕсли;        
       
   
КонецПроцедуры