![]() |
![]() |
![]() |
|
Табличное Поле, При добавлении новой строки, обработать эту самую строку. | ☑ | ||
---|---|---|---|---|
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: если я начну редактировать уже имеющуюся строку, то Реквизит станет нулём, а этого как раз не надо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |