Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Поиск значения

Поиск значения
Я
   Валидатор
 
14.01.13 - 11:35
Условие такое: если значение не заполнено в карточке номенклатуры у элемента, то это значение( в нашем случае номер гтд) заполняется тем значением, которое мы передаем.

Если  НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда
ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент();
ГТДОбъект.Код = ГТДссылка;
 ГТДОбъект.Записать();
ГТДссылка = ГТДОбъект.Ссылка;
КонецЕсли;

Но проблема в том, что если значение не заполнено, а в справочнике Номера ГТД уже есть такой элемент, то вылезает ошибка, какую проверку сделать на этот справочник, что ищется то есть номер этот, если не найден, то создается
 
 
   Wobland
 
1 - 14.01.13 - 11:38
это вопрос такой?
   Валидатор
 
2 - 14.01.13 - 11:41
да
   Wobland
 
3 - 14.01.13 - 11:42
найтикакто().пустая()
   Godofsin
 
4 - 14.01.13 - 11:43
нынче никто СП не толкает?
   Maxus43
 
5 - 14.01.13 - 11:43
ГТДОбъект.Код = ГТДссылка;

типы разные же, как ты в код засунешь ссылку?
   Godofsin
 
6 - 14.01.13 - 11:44
(5) с чего ты взял что там ссылка? =)
   Wobland
 
7 - 14.01.13 - 11:44
(5) судя по стилю речи автора в переменной гтдссылка не обязательно лежит ссылка
   Deon
 
8 - 14.01.13 - 11:45
Да я ваще нихера не понял
   Maxus43
 
9 - 14.01.13 - 11:46
Ну хрен знает что там, в итоге там Ссылка должна быть типа..
ГТДссылка = ГТДОбъект.Ссылка;

Короче, автор. Спроси ещё раз внятно
   Валидатор
 
10 - 14.01.13 - 11:48
Переделал, чтобы понятнее было:
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("ПолныйАртикул", ПолныйАртикул);
        ГТДПоискПоСправочнику = Справочники.НомераГТД.НайтиПоКоду(НомерГТД);
        СтранаПоискПоСправочнику = Справочники.КлассификаторСтранМира.НайтиПоНаименованию(Страна);

Если  Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда
 тут создаем новый элемент -\\-
дальше смотрим, если у элемента номенклатуры не заполнен НОМЕР ГТД и страна происхождения, то нужно заполнить ТОЛЬКО их.
ИначеЕсли  НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда
            Если ГТДПоискПоСправочнику.Пустая() Тогда
                 ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент();
                 ГТДОбъект.Код = ГТДПоискПоСправочнику;
                 ГТДОбъект.Записать();
                 ГТДПоискПоСправочнику = ГТДОбъект.Ссылка;
             Иначе
                 НоменклатураОбъект.НомерГТД = ГТДПоискПоСправочнику;
            КонецЕсли ;
                            
       //ИначеЕсли НЕ ЗначениеЗаполнено(СтранаСсылка)  Тогда
 
    ИначеЕсли НЕ ЗначениеЗаполнено(Номенклатура.СтранаПроисхождения) Тогда
        Если СтранаПоискПоСправочнику.Пустая() Тогда
                 СтранаОбъект = Справочники.КлассификаторСтранМира.СоздатьЭлемент();
                 Страна.Наименование = Страна;
                 СтранаПоискПоСправочнику.Записать();
                 СтранаПоискПоСправочнику = СтранаОбъект.Ссылка;
            КонецЕсли ;
 
 Рекламное место пустует
   Валидатор
 
11 - 14.01.13 - 11:48
вот как мне сделать, что если номенклатура найдена, но у нее не заполнены 2 поля, то эти два поля( номер гтд и страна происхождения) заполнялись моими данными?
   Reset
 
12 - 14.01.13 - 11:51
Результат телепатии:

Если  НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда
    ГТДссылка = Справочники.НомераГТД.НайтиПоКоду(НомерГТДСтрокойКоторыйДолженБыть);
    Если ГТДссылка.Пустая() тогда
        ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент();
        ГТДОбъект.Код = НомерГТДСтрокойКоторыйДолженБыть;
         ГТДОбъект.Записать();
         ГТДссылка  = ГТДОбъект.Ссылка;
     КонецЕсли;
    Номенклатура.НомерГТД=ГТДссылка;
КонецЕсли;
   Reset
 
13 - 14.01.13 - 11:53
(12) попытка ответиьть на (0).
(10) не читал
   Валидатор
 
14 - 14.01.13 - 11:54
(12) если такой элемент уже создан, то будет ругаться на поле код, а мне нужно, что если элемент такой уже есть, то он его выбирает
   Reset
 
15 - 14.01.13 - 11:55
(14) Не нужно считать меня придурком
   Reset
 
16 - 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
Но данные не записываются все равно почему то
   Reset
 
22 - 14.01.13 - 13:49
Если НЕ ЗначениеЗаполнено(Номенклатура.НомерГТД) Тогда    // кривой момент с получением реквизита через точку
 
                                                       // по хорошему список нужных ссылок должен быть получен заранее запросом
 
                                                       // да и ссылки на гтд можно было подготовить заранее, а не искать в цикле
 
                                                       // (ведь эта вся лабуда в цикле ведь?)
 
    ГТДссылка = Справочники.НомераГТД.НайтиПоКоду(НомерГТДСтрокойКоторыйДолженБыть);
    Если ГТДссылка.Пустая() тогда
        ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент();
        ГТДОбъект.Код = НомерГТДСтрокойКоторыйДолженБыть;
         ГТДОбъект.Записать();
         ГТДссылка  = ГТДОбъект.Ссылка;
     КонецЕсли;
    НоменклатураОбъект=Номенклатура.ПолучитьОбъект();
    НоменклатураОбъект.НомерГТД=ГТДссылка;
    НоменклатураОбъект.Записать();
КонецЕсли;


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует