|
Поиск значения | ☑ | ||
---|---|---|---|---|
0
Валидатор
14.01.13
✎
11:35
|
Условие такое: если значение не заполнено в карточке номенклатуры у элемента, то это значение( в нашем случае номер гтд) заполняется тем значением, которое мы передаем.
Если НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент(); ГТДОбъект.Код = ГТДссылка; ГТДОбъект.Записать(); ГТДссылка = ГТДОбъект.Ссылка; КонецЕсли; Но проблема в том, что если значение не заполнено, а в справочнике Номера ГТД уже есть такой элемент, то вылезает ошибка, какую проверку сделать на этот справочник, что ищется то есть номер этот, если не найден, то создается |
|||
1
Wobland
14.01.13
✎
11:38
|
это вопрос такой?
|
|||
2
Валидатор
14.01.13
✎
11:41
|
да
|
|||
3
Wobland
14.01.13
✎
11:42
|
найтикакто().пустая()
|
|||
4
Godofsin
14.01.13
✎
11:43
|
нынче никто СП не толкает?
|
|||
5
Maxus43
14.01.13
✎
11:43
|
ГТДОбъект.Код = ГТДссылка;
типы разные же, как ты в код засунешь ссылку? |
|||
6
Godofsin
14.01.13
✎
11:44
|
(5) с чего ты взял что там ссылка? =)
|
|||
7
Wobland
14.01.13
✎
11:44
|
(5) судя по стилю речи автора в переменной гтдссылка не обязательно лежит ссылка
|
|||
8
Deon
14.01.13
✎
11:45
|
Да я ваще нихера не понял
|
|||
9
Maxus43
14.01.13
✎
11:46
|
Ну хрен знает что там, в итоге там Ссылка должна быть типа..
ГТДссылка = ГТДОбъект.Ссылка; Короче, автор. Спроси ещё раз внятно |
|||
10
Валидатор
14.01.13
✎
11:48
|
Переделал, чтобы понятнее было:
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("ПолныйАртикул", ПолныйАртикул); ГТДПоискПоСправочнику = Справочники.НомераГТД.НайтиПоКоду(НомерГТД); СтранаПоискПоСправочнику = Справочники.КлассификаторСтранМира.НайтиПоНаименованию(Страна); Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда тут создаем новый элемент -\\- дальше смотрим, если у элемента номенклатуры не заполнен НОМЕР ГТД и страна происхождения, то нужно заполнить ТОЛЬКО их. ИначеЕсли НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда Если ГТДПоискПоСправочнику.Пустая() Тогда ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент(); ГТДОбъект.Код = ГТДПоискПоСправочнику; ГТДОбъект.Записать(); ГТДПоискПоСправочнику = ГТДОбъект.Ссылка; Иначе НоменклатураОбъект.НомерГТД = ГТДПоискПоСправочнику; КонецЕсли ; //ИначеЕсли НЕ ЗначениеЗаполнено(СтранаСсылка) Тогда ИначеЕсли НЕ ЗначениеЗаполнено(Номенклатура.СтранаПроисхождения) Тогда Если СтранаПоискПоСправочнику.Пустая() Тогда СтранаОбъект = Справочники.КлассификаторСтранМира.СоздатьЭлемент(); Страна.Наименование = Страна; СтранаПоискПоСправочнику.Записать(); СтранаПоискПоСправочнику = СтранаОбъект.Ссылка; КонецЕсли ; |
|||
11
Валидатор
14.01.13
✎
11:48
|
вот как мне сделать, что если номенклатура найдена, но у нее не заполнены 2 поля, то эти два поля( номер гтд и страна происхождения) заполнялись моими данными?
|
|||
12
Reset
14.01.13
✎
11:51
|
Результат телепатии:
Если НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда ГТДссылка = Справочники.НомераГТД.НайтиПоКоду(НомерГТДСтрокойКоторыйДолженБыть); Если ГТДссылка.Пустая() тогда ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент(); ГТДОбъект.Код = НомерГТДСтрокойКоторыйДолженБыть; ГТДОбъект.Записать(); ГТДссылка = ГТДОбъект.Ссылка; КонецЕсли; Номенклатура.НомерГТД=ГТДссылка; КонецЕсли; |
|||
13
Reset
14.01.13
✎
11:53
|
(12) попытка ответиьть на (0).
(10) не читал |
|||
14
Валидатор
14.01.13
✎
11:54
|
(12) если такой элемент уже создан, то будет ругаться на поле код, а мне нужно, что если элемент такой уже есть, то он его выбирает
|
|||
15
Reset
14.01.13
✎
11:55
|
(14) Не нужно считать меня придурком
|
|||
16
Reset
14.01.13
✎
11:58
|
(14) в (12) пояснение к ответу в (3)
|
|||
17
Паланик
14.01.13
✎
12:00
|
ГТДПоискПоСправочнику = Справочники.НомераГТД.НайтиПоКоду(НомерГТД);
... ГТДОбъект.Код = ГТДПоискПоСправочнику; Коду присваиваешь ссылку/неопределено? |
|||
18
Валидатор
14.01.13
✎
12:00
|
НомерГТД - переменная, числовой тип, грузится из дбф файла
|
|||
19
Паланик
14.01.13
✎
12:03
|
(18) ответ в (12)
|
|||
20
Валидатор
14.01.13
✎
13:35
|
Если НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда
Если ГТДПоискПоСправочнику.Пустая() Тогда ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент(); ГТДОбъект.Код = НомерГТД; ГТДОбъект.Записать(); ГТДПоискПоСправочнику = ГТДОбъект.Ссылка; Иначе НоменклатураОбъект = Номенклатура.ПолучитьОбъект(); НоменклатураОбъект.НомерГТД = ГТДПоискПоСправочнику; КонецЕсли; Попытка НоменклатураОбъект.Записать(); Номенклатура = НоменклатураОбъект.Ссылка; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; Если НЕ ЗначениеЗаполнено(Номенклатура.СтранаПроисхождения) Тогда НоменклатураОбъект = Номенклатура.ПолучитьОбъект(); НоменклатураОбъект.СтранаПроисхождения = СтранаПоискПоСправочнику; КонецЕсли; Попытка НоменклатураОбъект.Записать(); Номенклатура = НоменклатураОбъект.Ссылка; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; |
|||
21
Валидатор
14.01.13
✎
13:35
|
Но данные не записываются все равно почему то
|
|||
22
Reset
14.01.13
✎
13:49
|
Если НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда // кривой момент с получением реквизита через точку
// по хорошему список нужных ссылок должен быть получен заранее запросом // да и ссылки на гтд можно было подготовить заранее, а не искать в цикле // (ведь эта вся лабуда в цикле ведь?) ГТДссылка = Справочники.НомераГТД.НайтиПоКоду(НомерГТДСтрокойКоторыйДолженБыть); Если ГТДссылка.Пустая() тогда ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент(); ГТДОбъект.Код = НомерГТДСтрокойКоторыйДолженБыть; ГТДОбъект.Записать(); ГТДссылка = ГТДОбъект.Ссылка; КонецЕсли; НоменклатураОбъект=Номенклатура.ПолучитьОбъект(); НоменклатураОбъект.НомерГТД=ГТДссылка; НоменклатураОбъект.Записать(); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |