Имя: Пароль:
1C
 
Табличное Поле, При добавлении новой строки, обработать эту самую строку.
0 suspender
 
03.03.08
12:09
В общем ситуация следующая, при добавлении новой строки необходимо прописать в определённую колонку определённое значение (конкретно - номер, чтобы в других местах ссылаться конкретно на эту строку. Использовать встроенный НомерСтроки и запретить изменение порядка строк - как то фигово).

Посмотрел события, обработку которых предлагает конфигуратор. Из тех что связаны именно с добавлением новой строки - _Я_ увидел только "Перед началом добавления". Как в процедуре обработки этого события получить _новую_добавляемую_ строку. ? .ТекущиеДанные в контексте этой процедуры - не новая строка. Других подобных вещей я, сколько не втыкал в отладчик - не нашёл.
Пока разруливаю так -
Запретил "ДобавитьКопированием":

Процедура БазоваяНоменклатураПередНачаломДобавления(Элемент, Отказ, Копирование)
   Если Копирование Тогда
       Отказ = Истина;
   КонецЕсли;    
КонецПроцедуры

И при изменении, если значение не заполнено, то заполняю:

Процедура БазоваяНоменклатураНоменклатураПриИзменении(Элемент)
   текСтрока = ЭлементыФормы.БазоваяНоменклатура.ТекущиеДанные;
   Если ЗначениеНеЗаполнено(текСтрока.НИН) Тогда
       текСтрока.НИН = ПолучитьНИН();
   КонецЕсли;    
КонецПроцедуры


Но чуствую, что это костыль. А сделать понормальному - базовых знаний не хватает. Подскажите плз, как вообще обрабатывать добавляемую строку в процессе добавления ? Или ткните ссылкой туда где это обсуждалось (самому найти - не удалось).
1 Scooter
 
03.03.08
12:16
смотри как в типовых сделано
2 suspender
 
03.03.08
13:05
Под рукой из типовых - только Управление Торговлей 10.2 (Чуть переделанная - но не суть). Пробовал смотреть. Не нашёл. Навскидку даже и не могу вспомнить типовой документ, в котором вообще нужно обрабатывать строку при добавлении.

Не могли бы вы попробовать на вскидку вспомнить такой документ и указать мне на него ?
3 Michael99
 
03.03.08
13:11
Можно ПриАктивизацииСтроки , значение разумеется надо проверять.
4 Alf06
 
03.03.08
15:28
ПривыводеСтроки не пробовал?
5 Wasssaby
 
03.03.08
17:09
// Извратно, но работать будет =)

Перем Счетчик;

Процедура БазоваяНоменклатураПриПолученииДанных(Элемент, ОформленияСтрок)
   Если Элемент.ТекущаяСтрока.НомСтр<>Счетчик тогда
   
   Элемент.ТекущаяСтрока.НомСтр=Счетчик;
   Счетчик=Счетчик+1;
   КонецЕсли;
КонецПроцедуры
 Счетчик=1;
6 suspender
 
04.03.08
14:49
Спасибо за помощь, но это всё не то.
Я смотрел почти все возможные события в отладчике. И не нашёл такого, которое срабатывает только при добавлении новой строки. (Кроме "Перед началом добавления" - но в его процедуре недоступна эта новая_добавляемая строка. Возможно, недоступна  
только _МНЕ_ :) ).
Остальные события срабатывают во многих случаях, и в любом из них в принципе можно  
проверить незаполненность значения, и заполнять если надо. Но если Строка была добавлена копированием - то всё, ппц.

2 Wassaby : В вашем варианте тоже : Если строка будет добавлена копированием на основе послдней ? НомСтр там будет = НомСтр предыдущей строки = Счётчик, соответственно так и останется.

Единственный вариант, который _Я_ пока что вижу : В событии "Перед началом добавления" запоминать целиком ТабличнуюЧасть и устанавливать флаг в true. В любом последующем событии Если флаг = true сравнивать имеющуюсю Табл. Часть с Сохранённой, находить различающуюся строку, и в ней проставлять нужные мне данные, после чего флаг сбрасывать в false;
Но это как то совсем, имхо, геморройно и замороченно ...


То есть в итоге у меня 2 вопроса по табличным частям документиов:
1. Существует ли событие, которое происходит только в результате добавления новой строки, в котором доступна эта самая, _новая_ строка ?
2. Можно ли для определённой колонки табличной части, установить, чтобы при добавлении новой строки копированием - значение в этой колонке становилось null ?
7 IronDemon
 
04.03.08
15:19
Событие ПриНачалеРедактирования
ЭлементыФормы.ТабличноеПоле.ТекущиеДанные.Реквизит = 0;
8 suspender
 
04.03.08
15:43
Спасибо за помощь, но это всё не то.
Я смотрел почти все возможные события в отладчике. И не нашёл такого, которое срабатывает только при добавлении новой строки. (Кроме "Перед началом добавления" - но в его процедуре недоступна эта новая_добавляемая строка. Возможно, недоступна  
только _МНЕ_ :) ).
Остальные события срабатывают во многих случаях, и в любом из них в принципе можно  
проверить незаполненность значения, и заполнять если надо. Но если Строка была добавлена копированием - то всё, ппц.

2 Wassaby : В вашем варианте тоже : Если строка будет добавлена копированием на основе послдней ? НомСтр там будет = НомСтр предыдущей строки = Счётчик, соответственно так и останется.

Единственный вариант, который _Я_ пока что вижу : В событии "Перед началом добавления" запоминать целиком ТабличнуюЧасть и устанавливать флаг в true. В любом последующем событии Если флаг = true сравнивать имеющуюсю Табл. Часть с Сохранённой, находить различающуюся строку, и в ней проставлять нужные мне данные, после чего флаг сбрасывать в false;
Но это как то совсем, имхо, геморройно и замороченно ...


То есть в итоге у меня 2 вопроса по табличным частям документиов:
1. Существует ли событие, которое происходит только в результате добавления новой строки, в котором доступна эта самая, _новая_ строка ?
2. Можно ли для определённой колонки табличной части, установить, чтобы при добавлении новой строки копированием - значение в этой колонке становилось null ?
9 suspender
 
04.03.08
16:11
Простите за Дабл Постинг, похоже это из за Лагов :)

2 IronDemon: если я начну редактировать уже имеющуюся строку, то Реквизит станет нулём, а этого как раз не надо.
Программист всегда исправляет последнюю ошибку.