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

создание документа

Автор studentca, 09 июл 2012, 09:25

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

nn68

Давайте просто проверим находится ли номенклатура из дбф-файла. Для проверки я завела 2 товара с кодами 800001235 - Товар1
800001240 - Товар2
Затем создала внешнюю обработку, которая читает Ваш дбф-файл
Добавила команду "загрузить", вывела кнопку на форму внешней обработки.
&НаКлиенте
Процедура Загрузить(Команда)
   ЗагрузитьНаСервере();
КонецПроцедуры

Процедура ЗагрузитьНаСервере()
ДБФС = Новый XBase;

   ДБФС.Кодировка = КодировкаXBase.OEM;
   ВыбФайлСостав = "C:\Contents.dbf";
   ДБФС.ОткрытьФайл(ВыбФайлСостав, ,Истина);
   КЗ= ДБФС.КоличествоЗаписей();
     
   Для Инд = 1 По КЗ  Цикл
      ДБФС.Перейти(Инд);
     КодТовара = Формат(ДБФС.GOOD_ID, "ЧГ=");
     Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
     Если Не Товар.Пустая() Тогда
          Сообщить(Товар.Наименование);
     Иначе
        Сообщить("Не найден товар с кодом" + КодТовара);
     КонецЕсли;
    КонецЦикла;
КонецПроцедуры

В результате Эти 2 товара, которые я добавляла - находятся. По остальным выводятся сообщения, что не найдены.
Обработку вышлю Вам на почту.

studentca

к сожалению, обработка не открылась, другая обработка практически  с таким же кодом из Вашей обработочки проверила данные и все нашла


Процедура КнопкаВыполнитьНажатие(Кнопка)
   ЗагрузитьНаСервере();
КонецПроцедуры
//   
//&НаКлиенте
//Процедура Загрузить(Команда)
//   ЗагрузитьНаСервере();
//КонецПроцедуры

Процедура ЗагрузитьНаСервере()
ДБФС = Новый XBase;

   ДБФС.Кодировка = КодировкаXBase.OEM;
   ВыбФайлСостав = "C:\Contents.dbf";
   ДБФС.ОткрытьФайл(ВыбФайлСостав, ,Истина);
   КЗ= ДБФС.КоличествоЗаписей();
     
   Для Инд = 1 По КЗ  Цикл
      ДБФС.Перейти(Инд);
     КодТовара = Формат(ДБФС.GOOD_ID, "ЧГ=");
     Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
     Если Не Товар.Пустая() Тогда
          Сообщить(Товар.Наименование);
     Иначе
        Сообщить("Не найден товар с кодом" + КодТовара);
     КонецЕсли;
    КонецЦикла;
КонецПроцедуры

абсолютно все 19

studentca

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

nn68

Я частично взяла строчки из Ваших кодов.

Процедура КнопкаВыполнитьНажатие(Кнопка)
   ДБФС = Новый XBase;

   ДБФС.Кодировка = КодировкаXBase.OEM;
   ТЗСост = Новый ТаблицаЗначений;
   ТЗСост.Колонки.Добавить("НомерСтроки",         Новый ОписаниеТипов("Число"));
   ТЗСост.Колонки.Добавить("Количество",         Новый ОписаниеТипов("Число"));
   ТЗСост.Колонки.Добавить("Сумма",            Новый ОписаниеТипов("Число"));
   ТЗСост.Колонки.Добавить("Цена",                Новый ОписаниеТипов("Число"));
   ТЗСост.Колонки.Добавить("Договор",            Новый ОписаниеТипов("Строка"));
   ТЗСост.Колонки.Добавить("Номенклатура",         Новый ОписаниеТипов("Строка"));
   ТЗСост.Колонки.Добавить("НДС",                  Новый ОписаниеТипов("Строка"));

   
   ВыбФайлСостав = "C:\Обменник\Contents.dbf";
   ДБФС.ОткрытьФайл(ВыбФайлСостав, ,Истина);
   КолЗаписей = ДБФС.КоличествоЗаписей();
     
   Для Инд = 1 По КолЗаписей  Цикл
      ДБФС.Перейти(Инд);
      НС = ТЗСост.Добавить();
      НС.Количество = Формат(ДБФС.AMOUNT, "ЧГ=0");
      НС.Сумма = Формат(ДБФС.SUMMA, "ЧГ=0");
      НС.Цена = Формат(ДБФС.PRICE, "ЧГ=0");
      НС.Номенклатура = Формат(ДБФС.GOOD_ID, "ЧГ=0");
      НС.НДС = Формат(ДБФС.NDS, "ЧГ=0");
   КонецЦикла;
   
   
   Прих = Документы.РеализацияТоваровУслуг;
      Контр = Прих.СоздатьДокумент();
      Контр.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия;
      Контр.Дата = ТекущаяДата();
      Контр.Организация = Справочники.Организации.НайтиПоКоду("000000001");
      Контр.Склад = Справочники.Склады.НайтиПоКоду("000000001");
      Контр.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;
      Для Каждого ТекКонтр Из ТЗСост Цикл
                  ТоварКод = ТекКонтр.Номенклатура;
               Номенкл = Справочники.Номенклатура.НайтиПоКоду(ТоварКод);
         
               Если НЕ Номенкл.Пустая() Тогда
                Объект = Контр.Товары.Добавить();
                 
               Объект.Номенклатура = Номенкл;
                  Объект.Количество = ТекКонтр.Количество;
               Объект.Цена = ТекКонтр.Цена;
               Объект.Сумма = ТекКонтр.Сумма;
               Объект.СтавкаНДС = ТекКонтр.НДС;
            //ЗаполнитьЗначенияСвойств(Объект, ТекКонтр);
         Иначе
            
               Сообщить("Не найден товар с кодом "+ ТоварКод);
                КонецЕсли;
         КонецЦикла;
           
         Контр.Записать();
         Контр.ПолучитьФорму().Открыть();
КонецПроцедуры

Добавила в базу Бухгалтерия предприятия, редакция 2.0 (2.0.37.8) 3 товара с кодами из Вашего ДБФ-файла

Документ создается - там 3 строки с найденной номенклатурой. Номенклатура в табличной части заполнена.

Может у ВАс в коде номенклатуры пробелы впереди какие-нибудь?

studentca

Не знаю в чем причина, я исправила коды в номенклатуре, там действительно были проблемы. Сейчас он мне сообщает все данные из справочника "Номенклатура", но записывать не хочет, при чем когда я пользовалась отладкой и пыталась сообщить именно ту часть табл части, которая должна быть записана туда, он все правильно сообщает, НО НЕ ЗАПИСЫВАЕТ(((((((((((((
Объект.Номенклатура = Номенкл.Ссылка;
Сообщить(Объект.Номенклатура);

studentca

Нашла ошибку. оказалось все дело в одной строчке
ЗаполнитьЗначенияСвойств(Объект, ТекКонтр);
как только я ее убрала, номенклатура стала заполняться. спасибо всем за советы.

Теги:

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

Рейтинг@Mail.ru

Поиск