Имя: Пароль:
1C
1С v8
Проверка на наличие данные в ТЧ
, ,
0 Валидатор
 
17.02.14
13:23
управляемое приложение, самописная конфа. Есть справочник контрагенты, у него есть ТП - транспортные средства, и нужно, чтобы при добавлении нового транспортного средства, если такое уже есть у контрагента, вылезала ошибка, в обычном приложении можно было просто циклом пройтись по строкам это ТЧ и условие прописать, а как в управляемом приложении сделать это?
1 Wobland
 
17.02.14
13:24
так же
2 1Сергей
 
17.02.14
13:24
так же, на сервере
3 butterbean
 
17.02.14
13:24
зачем циклом если есть Найти()??
4 Godofsin
 
17.02.14
13:25
(3) +
5 Валидатор
 
17.02.14
13:25
а в каком событии использовать этот поиск у этой ТЧ?
6 Godofsin
 
17.02.14
13:25
И НайтиСтроки()
7 Enders
 
17.02.14
13:26
(3) Что б было больше строк кода :)
8 Валидатор
 
17.02.14
13:27
Сейчас делаю в событии
НаКлиенте
Процедура ТранспортныеСредстваПриИзменении(Элемент)
    //тут по идее нужно получить нашу ТЧ, но код вида:
//ТранспортныеСредства.НайтиСтроки() не дает использовать
КонецПроцедуры
9 Валидатор
 
17.02.14
13:31
ТранспортноеСредствоПоискПоНаименованию = ЭтаФорма.Элементы.ТранспортныеСредства
так тоже не получить ТЧ
10 Валидатор
 
17.02.14
13:41
как проверку то поставить?
11 Wobland
 
17.02.14
13:43
найти на сервере
12 Валидатор
 
17.02.14
13:45
(11) в каком событии ТЧ ?
13 Feunoir
 
17.02.14
13:46
(11) Ну формально ДанныеФормыКоллекция НайтиСтроки() доступно втонком клиенте. ТС не колется какая у него ошибка.

(9) Почему не даёт. Ошибка какая?
14 Валидатор
 
17.02.14
13:47
(13) мне тупо не выбрать таблицу, чтобы для нее делать манипуляции какие-либо
15 Wobland
 
17.02.14
13:50
(14) мож, лучше поискать?
16 Валидатор
 
17.02.14
13:51
(15) в обычном можно было просто сразу написать имя таблицы и делать с ней, что хочешь, тут так не работает
17 Feunoir
 
17.02.14
13:51
(14) Сегодня понедельник. Пожалей мой мозг, напиши подробнее. Мне достаточно ребусов генерального.
18 Feunoir
 
17.02.14
13:51
(16) Объект.ТранспортныеСредства
19 Wobland
 
17.02.14
13:53
(16) а тут часто иногда всё находится в объекте
20 Валидатор
 
17.02.14
13:55
просто Объект, вот теперь нашлось, теперь надо сообразить, как задать ново вводимую строку?
21 Валидатор
 
17.02.14
13:56
НоваяСтрока = ЭтаФорма.Элементы.ТекущиеДанные так будет ново вводимая строка?
22 Feunoir
 
17.02.14
13:59
(21) Элементы.<имя_элемента_формы_с_ТЧ>.ТекущиеДанные
23 Валидатор
 
17.02.14
14:26
ТекДанные = Элементы.ТранспортныеСредства.ТекущиеДанные;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ТранспортноеСредство", ТекДанные);
НайденныеСтроки = Объект.ТранспортныеСредства.НайтиСтроки(ПараметрыОтбора);
не получается найти значение среди уже имеющихся
24 Wobland
 
17.02.14
14:28
ТекДанные - это что?
25 Валидатор
 
17.02.14
14:29
(24)
ТекДанные = Элементы.ТранспортныеСредства.ТекущиеДанные;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ТранспортноеСредство", ТекДанные.ТранспортныеСредства);
НайденныеСтроки = Объект.ТранспортныеСредства.НайтиСтроки(ПараметрыОтбора);
26 Валидатор
 
17.02.14
14:39
&НаКлиенте
Процедура ТранспортныеСредстваПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ТекДанные = Элементы.ТранспортныеСредства.ТекущиеДанные;
Если ТекДанные = Неопределено Тогда
Возврат
КонецЕсли;

ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ТранспортноеСредство", ТекДанные.ТранспортноеСредство);
НайденныеСтроки = Объект.ТранспортныеСредства.НайтиСтроки(ПараметрыОтбора);
Для каждого строка из НайденныеСтроки Цикл
Если строка.ТранспортноеСредство = ТекДанные.ТранспортноеСредство Тогда
Сообщить("такая запись уже есть");
КонецЕсли;
КонецЦикла;
КонецПроцедуры


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

Для каждого Строка из Объект.ТранспортныеСредства Цикл
Если Строка.ТранспортноеСредство = ТекДанные.ТранспортноеСредство Тогда
  Тогда
Сообщить("такая запись уже есть");
Возврат
КонецЕсли;
КонецЦикла;
КонецПроцедуры

так тоже проверка не срабатывает
28 Валидатор
 
17.02.14
14:55
Текущие данные у нас буду определяться той строкой, на которой мышка стоит, а нужно как то отследить значение, которое было добавлено, и потом сделать проверку, есть это значение у нас или нет еще
29 Валидатор
 
17.02.14
15:06
ап
30 Валидатор
 
17.02.14
15:14
Как получить строку, которую только добавили? а то текущие данные это строка, которая у нас выделена(
31 DrLekter
 
17.02.14
15:18
Если методом Добавить(), то это будет последняя строка ТЧ
32 Валидатор
 
17.02.14
15:20
(31) зачем мне последняя строка тч?
33 ДенисЧ
 
17.02.14
15:21
Попробуй на номер строки
34 DrLekter
 
17.02.14
16:27
(32) потому что это и будет та, которую только что добавили