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

Обработка для загрузки файла дбф в 1с аптека

Автор ppkmlite, 05 янв 2015, 16:03

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

ppkmlite

Здравствуйте.  Скажите,как записать номенклатуру из дбф в 1с. Я написала таким образом,записывается количество,единица измерения, а номенклатура не записывается. Подскажите, что я не так сделала.

&НаСервере
Процедура ОбработатьНАСервере()
   ДБФ = Новый XBASE;
   FileSystemObject=Новый COMObject("Scripting.FileSystemObject");
   ФайлКор= FileSystemObject.getFile(Файл).ShortPath;
   ДБФ.ОткрытьФайл(ФайлКор);
   ДБФ.Кодировка=КодировкаXBase.OEM;
   Если НЕ ДБФ.Открыта()  Тогда
      Сообщить("Ошибка открытия");
   КонецЕсли;
   Если ДБФ.Первая() = Ложь Тогда
      Сообщить("не найдена первая запись");
      Возврат;
   КонецЕсли;
   Пока Не ДБФ.вконце() Цикл
      НаимНом = Справочники.Номенклатура.НайтиПоНаименованию(дбф.name_post);
      Если Не ЗначениеЗаполнено(НаимНом) Тогда
         НовНом = Справочники.Номенклатура.СоздатьЭлемент();
         НовНом.Наименование = дбф.name_post; 
         НовНом.БазоваяЕдиницаИзмерения = Справочники.ЕдиницыИзмеренияНоменклатуры.НайтиПоНаименованию("уп");
         НовНом.ГруппаБухгалтерскогоУчета = Справочники.ГруппыБухгалтерскогоУчета.НайтиПоНаименованию("Основная");
         НовНом.Записать();
      Иначе
         НовНом = НаимНом;
      КонецЕсли;
      НовДок = Документы.ПоступлениеТоваров.СоздатьДокумент();
      НовДок.Дата = ТекущаяДата();
      НовДок.Организация = Организация;
      НовДок.Контрагент = Контрагент;
      
      НовТаб = НовДок.Товары.Добавить();
      НовТаб.номенклатура = сокрЛП(ДБФ.name_post);
      НовТаб.СерияНоменклатуры = дбф.seria;
      НовТаб.Количество = дбф.kol_tov;
      НовТаб.ЕдиницаИзмерения = Справочники.ЕдиницыИзмеренияНоменклатуры.НайтиПоНаименованию("уп");
      НовТаб.Цена = дбф.prcenabnds;
           ДБФ.Следующая();
      НовДок.Записать(РежимЗаписиДокумента.Запись);
      КонецЦикла;
КонецПроцедуры;

дфтын

  НовТаб.номенклатура = сокрЛП(ДБФ.name_post);
мейби
  НовТаб.номенклатура = НовНом.Ссылка?

ppkmlite


cska-fanat-kz

вы лучше вот это
НаимНом = Справочники.Номенклатура.НайтиПоНаименованию(дбф.name_post);
      Если Не ЗначениеЗаполнено(НаимНом) Тогда
         НовНом = Справочники.Номенклатура.СоздатьЭлемент();
         НовНом.Наименование = дбф.name_post;
         НовНом.БазоваяЕдиницаИзмерения = Справочники.ЕдиницыИзмеренияНоменклатуры.НайтиПоНаименованию("уп");
         НовНом.ГруппаБухгалтерскогоУчета = Справочники.ГруппыБухгалтерскогоУчета.НайтиПоНаименованию("Основная");
         НовНом.Записать();
      Иначе
         НовНом = НаимНом;
      КонецЕсли;
      НовДок = Документы.ПоступлениеТоваров.СоздатьДокумент();
      НовДок.Дата = ТекущаяДата();
      НовДок.Организация = Организация;
      НовДок.Контрагент = Контрагент;
     
      НовТаб = НовДок.Товары.Добавить();
      НовТаб.номенклатура = сокрЛП(ДБФ.name_post);

вот так перепишите
НаимНом = Справочники.Номенклатура.НайтиПоНаименованию(дбф.name_post);
      Если Не ЗначениеЗаполнено(НаимНом) Тогда
         НовНом = Справочники.Номенклатура.СоздатьЭлемент();
         НовНом.Наименование = дбф.name_post;
         НовНом.БазоваяЕдиницаИзмерения = Справочники.ЕдиницыИзмеренияНоменклатуры.НайтиПоНаименованию("уп");
         НовНом.ГруппаБухгалтерскогоУчета = Справочники.ГруппыБухгалтерскогоУчета.НайтиПоНаименованию("Основная");
         НовНом.Записать();
НаимНом = НовНом.Ссылка;
      КонецЕсли;
      НовДок = Документы.ПоступлениеТоваров.СоздатьДокумент();
      НовДок.Дата = ТекущаяДата();
      НовДок.Организация = Организация;
      НовДок.Контрагент = Контрагент;
     
      НовТаб = НовДок.Товары.Добавить();
      НовТаб.номенклатура = НаимНом;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ppkmlite

Хорошо,спасибо,попробую
Добавлено: 08 янв 2015, 19:45


Не удается открыть файл,выходит ошибка., Ошибка-перед выполнением операции установите объект на запись. Меняла путь,расположение файла,но открывается. Подскажите! УпрФормы



&НаСервере
Процедура ОбработатьНаСервере()

ДБФ = Новый XBASE();
   FileSystemObject=Новый COMObject("Scripting.FileSystemObject");
   ФайлКор= FileSystemObject.getFile(Файл).ShortPath;
   ДБФ.ОткрытьФайл(ФайлКор);
 
   ДБФ.Кодировка=КодировкаXBase.OEM;
   Если НЕ ДБФ.Открыта()  Тогда
       Сообщить("неоткрыт");
   КонецЕсли;
   Если ДБФ.Первая() = Ложь Тогда
       Сообщить("не найдена первая запись");
       Возврат;
   КонецЕсли;
    Пока Не ДБФ.вконце() Цикл



//Диалог открытия



&НаКлиенте

Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выберите файл";
   Диалог.ПолноеИмяФайла = "";
   Фильтр = "(*.dbf)|*.dbf";
   Диалог.Фильтр = Фильтр;
   Диалог.МножественныйВыбор = Ложь;
   Диалог.Каталог = "H:\Новая папка\";
   Если Диалог.Выбрать() Тогда
       Файл = Диалог.ПолноеИмяФайла;
   КонецЕсли;
КонецПроцедуры

ppkmlite

Скажите,почему не проставляется серия Номенклатуры в документе? и количество?
НовТаб.СерияНоменклатуры = дбф.seria;
новтаб.количество = ДБФ.Kol_tov
Я меняю тип значения
СТР = число(ДБФ.Kol_tov);
      НовТаб.Количество = стр;
но результата нет.
а в серии встречаются как числа,так и буквы





дфтын

НовТаб.СерияНоменклатуры - это ссылка на справочник вроде. нужно создавать серию, а потом созданный элемент справочника, ну или найденный, присваивать.
С количеством надо в отладчике смотреть.

notaSS

Есть стандартные обработки для загрузки файлов

дфтын

notaSS, блин. мне опять скажут, что я плохо общаюсь с пользователями, но у меня вопрос, вы уверен, что обработки для загрузки файлов помогут в данной ситуации??!?!

Теги:

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

Рейтинг@Mail.ru

Поиск