Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 ноя 2024, 00:44

Внимание вопрос.

Автор Лейсан, 30 ноя 2011, 11:49

0 Пользователей и 1 гость просматривают эту тему.

Лейсан

да.наименование номенклатуры может быть изменена.но вот код не будет меняться(это постоянная величина).

has

Цитата: Лейсан от 30 ноя 2011, 14:19
да.наименование номенклатуры может быть изменена.но вот код не будет меняться(это постоянная величина).
Только наименование? Вобщем тогда придется находить в справочнике каждый элемент с кодом из файла дбф, сравнивать наименование и прочие реквизиты. Ну если не найден, то новый создавать.

Лейсан

если не сложно,можете сказать как это подробно сделать?:)

Klyacksa

Ну как-то так:
перед загрузкой выносим определения

СпрНоменклатура=Справочники.Номенклатура;
СпрВидыНоменклатуры=Справочники.ВидыНоменклатуры;
СпрЕдиницыИзмерения=Справочники.КлассификаторЕдиницИзмерения;


обработка каждого элемента:
Код=СокрЛП(ДБФ.KOD);
Если СпрНоменклатура.НайтиПоКоду(Код)=Неопределено Тогда
    Номенклатура = СпрНоменклатура.СоздатьЭлемент();
    Номенклатура.Наименование = СокрЛП(ДБФ.NAMEN);
    Номенклатура.Артикул = СокрЛП(ДБФ.ART);
    Номенклатура.ВидНоменклатуры = СпрВидыНоменклатуры.НайтиПоНаименованию(СокрЛП(ДБФ.VID),Истина);
    Номенклатура.БазоваяЕдиницаИзмерения=СпрЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(ДБФ.ED),Истина);  
    Номенклатура.Код=Код;
    Номенклатура.Записать();
КонецЕсли;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Лейсан

спасибо.но почему то когда он видит новый код в дбф-ке,он его видит как определенный и не переносит в 1с(((сразу на конец если переходит...

has

как понять определенный? Т.е. существующий элемент с данным кодом не находит?

Лейсан

то есть элемента в справочнике еще нет,он есть только в дбф.не заходит в если,считая что уже элемент есть в базе

has

А ну да, видимо Klyacksa ошиблась просто))) Попробуй так
Если СпрНоменклатура.НайтиПоКоду(Код) = СпрНоменклатура.ПустаяСсылка() Тогда

Лейсан

вы такие молодцы:)огромное вам спасибо:)

Лейсан

Функция загрузитьДоговора()
      ДБФ = Новый XBase;
      ДБФ.ОткрытьФайл(ПутьКФайлу);
      ДБФ.Кодировка=КодировкаXBase.OEM;
      //Проверка на наличие записей
   Если ДБФ.КоличествоЗаписей() = 0 Тогда
      Сообщить("Файл данных пуст");
      ДБФ.ЗакрытьФайл();
      //Возврат                    
   КонецЕсли;
    СпрДоговоры=Справочники.ДоговорыКонтрагентов;
    ДБФ.Первая();
    Пока Истина Цикл
        Код= СокрЛП(ДБФ.KOD);
      Если СпрДоговоры.НайтиПоКоду(Код)=СпрДоговоры.ПустаяСсылка() Тогда
        НовыйДоговор = СпрДоговоры.СоздатьЭлемент();
      НовыйДоговор.Владелец = Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(ДБФ.KONTR));
      НовыйДоговор.Наименование = СокрЛП(ДБФ.NAMED);
      НовыйДоговор.Номер = СокрЛП(ДБФ.NUMBER);
      НовыйДоговор.ВидДоговора = Вычислить("Перечисления.ВидыДоговоровКонтрагентов."+СокрЛП(ДБФ.VID));
      НовыйДоговор.Дата = СокрЛП(ДБФ.DATE);
      НовыйДоговор.ВалютаВзаиморасчетов=Справочники.Валюты.НайтиПоНаименованию(СокрЛП(ДБФ.VAL));
       НовыйДоговор.Организация =Справочники.Организации.НайтиПоНаименованию(СокрЛП(ДБФ.ORG));
      НовыйДоговор.Код=Код;
      НовыйДоговор.Записать();
      КонецЕсли;
   Если Не ДБФ.Следующая()Тогда
      Прервать;
      КонецЕсли;
      КонецЦикла;

Ошибка...
Ожидается идентификатор
Перечисления.ВидыДоговоровКонтрагентов.<<?>>.Хотя в дбф-ке данные есть...

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск