Имя: Пароль:
1C
1С v8
Конвертация
, ,
0 Aleksei_Pro
 
22.06.13
16:15
Ребят подскажите, мне нужно при загрузке в базу проверять на наличие записей, если их больше 2 то тогда делать отказ от загрузке:
В обработчике: ПередЗагрузкойОбъекта пишу:

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Наименование",Объект.Наименование);
Запрос.УстановитьПараметр("МойРеквизит",Объект.МойРеквизит);
Запрос.Текст =
"ВЫБРАТЬ
|    Номенклатура.Ссылка
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.МойРеквизит = &МойРеквизит
|    И Номенклатура.Наименование = &Наименование";
ТЗ = Новый ТаблицаЗначений;
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество() > = 2 Тогда
   Отказ = истина;
КонецЕсли;

Почему выдает ошибку на данный модуль?
1 Wobland
 
22.06.13
16:18
всё сказано в ошибке, юный падаван
2 Wobland
 
22.06.13
16:18
ах, да. выдаёт ошибку потому, что она случается. вот такое вот поведение платформы
3 Aleksei_Pro
 
22.06.13
16:23
Начало загрузки:   22.06.2013 16:11:18

Ошибка в глобальном обработчике события ПередЗагрузкойОбъекта (конвертация)
   ИмяПКО                 =  Номенклатура
   ТипОбъекта             =  Номенклатура
   Обработчик             =  ПередЗагрузкойОбъекта (глобальный)
   ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(14,23)}: Ошибка в выражении
   ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7021)
   КодСообщения           =  53


Окончание загрузки: 22.06.2013 16:11:18

Загружено объектов: 0
4 Wobland
 
22.06.13
16:25
> Ошибка компиляции при вычислении выражения
всякую херню написал, теперь взрослые нужны?
5 Aleksei_Pro
 
22.06.13
16:25
ясно....спс..прогляд
6 Aleksei_Pro
 
22.06.13
16:26
где тут херня , ну знаки перепутал..
7 Wobland
 
22.06.13
16:26
(6) перепутал знаки - сотворил херню. ну как ребёнок, чессвлово
8 AlexNew
 
22.06.13
16:27
Опять отладчик отобрали? Опять через Мисту быстрее?
9 Aleksei_Pro
 
22.06.13
16:28
Не ему на знаки наплевать , тут не в этом дело...
10 Wobland
 
22.06.13
16:30
(9) ну не в этом, так не в этом. на здоровье
11 ЧашкаЧая
 
22.06.13
16:43
Во-первых, почему в глобальныый загрузчик? Этот код будет выполняться перед загрузкой любого объекта. Во вторых в ПередЗагрузкой нет еще переменной Объект, RTFM! Код нужно запихать в ПоляПоиска, поставить флажки поиска по Наименование, МойРеквизит и юзать СвойстваПоиска. Давай по новой, так работать не будет.
12 Aleksei_Pro
 
22.06.13
16:51
(11) это уже сделано!
СтрокаИменСвойствПоиска = "Наименование, МойРеквизит";

Просто мне нужно при загрузке если по таким параментрам найдено 2 позиции чтоб не замещал или не загружал! Попробовал при загрузке сделано , но он замещается все равно:

Если ОбъектНайден = Истина Тогда
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Наименование",Объект.Наименование);
   Запрос.УстановитьПараметр("ЭКСПЕРТ_Цена",Объект.МойРеквизит);
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Номенклатура.Ссылка
   |ИЗ
   |    Справочник.Номенклатура КАК Номенклатура
   |ГДЕ
   |    Номенклатура.МойРеквизит = &МойРеквизит
   |    И Номенклатура.Наименование = &Наименование";
   ТЗ = Новый ТаблицаЗначений;
   ТЗ = Запрос.Выполнить().Выгрузить();
   Если ТЗ.Количество() >=  2 Тогда
       Сообщить("Невозможно загрузить данную номенклатуру  -  " + Строка(Объект) + " по причине наличия дублирующих записей ");
       НеЗамещатьОбъект = истина;
   КонецЕсли;
КонецЕсли;
13 Aleksei_Pro
 
22.06.13
16:52
(12) +     Запрос.УстановитьПараметр("МойРеквизит",Объект.МойРеквизит);
14 ЧашкаЧая
 
22.06.13
17:03
ОбъектМодифицирован = Ложь;
15 Aleksei_Pro
 
22.06.13
17:03
НеЗамещатьОбъект = истина;
- я же установил почему замещает , сообщения выдает!
16 ЧашкаЧая
 
22.06.13
17:05
(15) Потому что читать нужно доки.
17 Aleksei_Pro
 
22.06.13
17:06
(14) тоже не помогает!
18 Aleksei_Pro
 
22.06.13
17:07
Если ОбъектНайден = Истина ТОгда
Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Наименование",Объект.Наименование);
   Запрос.УстановитьПараметр("МойРеквизит",Объект.МойРеквизит);
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Номенклатура.Ссылка
   |ИЗ
   |    Справочник.Номенклатура КАК Номенклатура
   |ГДЕ
   |    Номенклатура.МойРеквизит = &МойРеквизит
   |    И Номенклатура.Наименование = &Наименование";
   ТЗ = Новый ТаблицаЗначений;
   ТЗ = Запрос.Выполнить().Выгрузить();
   Если ТЗ.Количество() >=  2 Тогда
       Сообщить("Невозможно загрузить данную номенклатуру  -  " + Строка(Объект) + " по причине наличия дублирующих записей ");
       НеЗамещатьОбъект = истина;
       ОбъектМодифицирован  = Ложь;
   КонецЕсли;
КонецЕсли;
19 vicof
 
22.06.13
17:14
Отказ = Истина;
20 vicof
 
22.06.13
17:15
в после загрузки
21 Aleksei_Pro
 
22.06.13
17:15
Ладно не буду мудрить сделал по другому , извините если что!