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

Помогите со счетами-фактурами!Пожалуйста!

Автор Иринка-картинка, 19 июл 2011, 15:58

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

Иринка-картинка

Здравствуйте, подскажите, пожалуйста, почему, когда я отправляю на печать счет-фактуру, компьютер пишет:
Кратность = ВалютаДок.Кратность.Получи ть(ДатаДок);
{Документ.СчетФактура.Форм� �.Модуль(1734)}: Значение не представляет агрегатный объект (Кратность)
1с бухгалтерия 7.7. 524 релиз

sergejK74

Либо договор в документе не выбран либо валюта в договоре. смотри где то здесь.
Кнопочка Спасибо - слева!

Иринка-картинка

Дело в том, что мы эти счета-фактуры перегружаем из другой программы в 1с и мне сказали, что при переносе в документ не проставлен реквизит ВерсияОбЪекта. Я знаю, что его надо проставлять в обработке в конфигураторе, но понять не могу КУДА. Буду очень признательна, если Вы мне поможете. Вот часть обработки:
   
   Если Усл1=1 Тогда
      Если ФС.СуществуетФайл(ИмяКаталога+"\SprK1_Tr.DBF")=1 Тогда
         //PN - группа
         //AP - наименование
         //ADR - адрес юрид.
         //INN - ИНН
         //KPP - КПП
         //TEL - телефон
         //PASP - паспорт
         //ADRDOST - адрес физич.
         //CORP_NAM - полное наименование
         Состояние("Загрузка групп контрагентов.");
         ТЗ=СоздатьОбъект("ТаблицаЗначений");
         ТЗ.НоваяКолонка("Наименование","Строка",150);
         Спр=СоздатьОбъект("Справочник.Контрагенты");
         ДБФ=СоздатьОбъект("XBase");
         ДБФ.ОткрытьФайл(ИмяКаталога+"\SprK1_Tr.DBF");
         Пока ДБФ.ВКонце()=0 Цикл
            ТЗ.НоваяСтрока();
            ТЗ.Наименование = Врег(СокрЛП(ДБФ.PN));
            ДБФ.Следующая();
         КонецЦикла;
         ТЗ.Свернуть("Наименование","");
         ТЗ.ВыбратьСтроки();
         Пока ТЗ.ПолучитьСтроку() = 1 Цикл
            Если НайтиГруппуКонтрагентов(Врег(СокрЛП(ТЗ.Наименование)))=0 Тогда
               Спр.НоваяГруппа();
               Спр.Наименование=Врег(СокрЛП(ТЗ.Наименование));
               Спр.Записать();
               Сообщить(Спр);
            КонецЕсли;
         КонецЦикла;
         
         Состояние("Загрузка контрагентов");
         Спр=СоздатьОбъект("Справочник.Контрагенты");
         ДБФ=СоздатьОбъект("XBase");
         ДБФ.ОткрытьФайл(ИмяКаталога+"\SprK1_Tr.DBF");
         Пока ДБФ.ВКонце()=0 Цикл
            Если НайтиКонтрагента("Д"+СокрЛП(ДБФ.KP))=0 Тогда
               Спр.Новый();
               Спр.Код="Д"+СокрЛП(ДБФ.KP);
               Если СокрЛП(ДБФ.PN)<>"" Тогда
                  Спр.Родитель = НайтиГруппуКонтрагентов(Врег(СокрЛП(ДБФ.PN)));
               КонецЕсли;
               Спр.Наименование = Врег(СокрЛП(ДБФ.AP));
               Спр.ВидКонтрагента = Перечисление.ВидыКонтрагентов.Организация;
               Спр.ПолнНаименование = Врег(СокрЛП(ДБФ.CORP_NAM));
               Спр.ЮридическийАдрес = СокрЛП(ДБФ.ADR);
               Спр.ПочтовыйАдрес = СокрЛП(ДБФ.ADRDOST);
               Спр.Телефоны = СокрЛП(ДБФ.TEL);
               Спр.ИНН = СокрЛП(ДБФ.INN);
               Если СокрЛП(ДБФ.KPP)<>"" Тогда
                  Спр.ИНН = Спр.ИНН +"/"+СокрЛП(ДБФ.KPP);
               КонецЕсли;
               Сообщить("Д"+СокрЛП(ДБФ.KP)+" "+Врег(СокрЛП(ДБФ.AP))+" - новый");
               Спр.Записать();
               Дог=СоздатьОбъект("Справочник.Договоры");
               Дог.ИспользоватьВладельца(Спр.ТекущийЭлемент());
               Дог.Новый();
               Дог.Наименование = "Основной";
               Дог.ВалютаДоговора = Константа.ОсновнаяВалюта;
               Дог.ОплатаДоговора = 1;
               Дог.АвтоОбработкаНДС = 1;
               Дог.Записать();
               Спр.ОсновнойДоговор = Дог.ТекущийЭлемент();
               Спр.Записать();
               Сообщить(Спр,"I,");
            Иначе
      //проверка изменения наименования контрагента         
               Если Врег(СокрЛП(Лев(ДБФ.AP,30)))<>НайтиКонтрагента("Д"+СокрЛП(ДБФ.KP)).Наименование Тогда
                  Сообщить("===Д"+СокрЛП(ДБФ.KP)+" "+Врег(СокрЛП(Лев(ДБФ.AP,30)))+"<>"+НайтиКонтрагента("Д"+СокрЛП(ДБФ.KP)).Наименование);
      //установка нового значения контрагента\
                  Спр1=СоздатьОбъект("Справочник.Контрагенты");         
                  Спр1.ВыбратьЭлементы();
                  Спр1.НайтиПоКоду("Д"+СокрЛП(ДБФ.KP));
                  
                  Спр1.Наименование = Врег(СокрЛП(ДБФ.AP));
                  Спр1.ВидКонтрагента = Перечисление.ВидыКонтрагентов.Организация;
                  Спр1.ПолнНаименование = Врег(СокрЛП(ДБФ.CORP_NAM));
                  Спр1.ЮридическийАдрес = СокрЛП(ДБФ.ADR);
                  Спр1.ПочтовыйАдрес = СокрЛП(ДБФ.ADRDOST);
                  Спр1.Телефоны = СокрЛП(ДБФ.TEL);
                  Спр1.ИНН = СокрЛП(ДБФ.INN);
                  Спр1.Записать();
                  Сообщить(Спр1.Наименование);
               КонецЕсли;
               //Сообщить("Д"+СокрЛП(ДБФ.KP)+" "+Врег(СокрЛП(ДБФ.AP))+" - найден.");
            КонецЕсли;
            ДБФ.Следующая();
         КонецЦикла;
      КонецЕсли;
   КонецЕсли;
   //***************************************************
   Если Усл2=1 Тогда
      Если ФС.СуществуетФайл(ИмяКаталога+"\SprGr_Tr.DBF")=1 Тогда
         Состояние("Загрузка групп номенклатуры");
         Спр=СоздатьОбъект("Справочник.Номенклатура");
         ДБФ=СоздатьОбъект("XBase");
         ДБФ.ОткрытьФайл(ИмяКаталога+"\SprGr_Tr.DBF");
         Пока ДБФ.ВКонце()=0 Цикл
            Если НайтиГруппуНоменклатуры(ДБФ.NAM)=0 Тогда
               Спр.НоваяГруппа();
               Спр.Наименование=ДБФ.NAM;
               Спр.Записать();
               Сообщить(Спр);
            КонецЕсли;
            ДБФ.Следующая();
         КонецЦикла;
      КонецЕсли;
      //Если ФС.СуществуетФайл(ИмяКаталога+"\SprTv_Tr.DBF")=1 Тогда
      //   Сообщить("Загрузка элементов номенклатуры.");
      //   ТмпТЗ=СоздатьОбъект("ТаблицаЗначений");
      //   ТмпТЗ.НоваяКолонка("Код","Строка",10);
      //   ДБФ0=СоздатьОбъект("XBase");
      //   ДБФ0.ОткрытьФайл(ИмяКаталога+"\Skl02_Tr.DBF");
      //   Пока ДБФ0.ВКонце()=0 Цикл
      //      ТмпТЗ.НоваяСтрока();
      //      ТмпТЗ.Код = "Д"+СокрЛП(ДБФ0.KM);
      //      ДБФ0.Следующая();
      //   КонецЦикла;
      //   ТмпТЗ.Свернуть("Код","");
      //   
         //KG - группа
         //KM - код
         //NM - наименование
         //EI - единица измерения
         //ARTICUL - артикул
         //Спр=СоздатьОбъект("Справочник.Номенклатура");
         //ДБФ=СоздатьОбъект("XBase");
         //ДБФ.ОткрытьФайл(ИмяКаталога+"\SprTv_Tr.DBF");
         //Пока ДБФ.ВКонце()=0 Цикл
         //   
         //   
         //   ДБФ.Следующая();
         //КонецЦикла;
      //КонецЕсли;
   КонецЕсли;
   //***************************************************
   Если Усл3=1 Тогда
      Если (ФС.СуществуетФайл(ИмяКаталога+"\Skl01_Tr.DBF")=1) И (ФС.СуществуетФайл(ИмяКаталога+"\Skl02_Tr.DBF")=1) Тогда
         Сообщить("Анализ строк документов.");
         ТЗТовары=СоздатьОбъект("ТаблицаЗначений");
         ТЗТовары.НоваяКолонка("PN","Строка",18);//Идентификатор документа
         ТЗТовары.НоваяКолонка("KM","Строка",10);//Товар(Код)
         ТЗТовары.НоваяКолонка("KM1","Строка",60);//Товар(Наименование)
         ТЗТовары.НоваяКолонка("KM2","Строка",30);//Товар(Родитель)
         ТЗТовары.НоваяКолонка("CP","Число",18,2);//Цена отпускная
         ТЗТовары.НоваяКолонка("CO","Число",18,2);//Цена входящяя
         ТЗТовары.НоваяКолонка("QF","Число",18,3);//Количество отпущенное
         ТЗТовары.НоваяКолонка("SMP","Число",18,2);//Сумма отпускная
         ТЗТовары.НоваяКолонка("SMO","Число",18,2);//Сумма входящяя
         
         ДБФ0=СоздатьОбъект("XBase");
         ДБФ0.ОткрытьФайл(ИмяКаталога+"\Skl02_Tr.DBF");
         Пока ДБФ0.ВКонце()=0 Цикл
            ТЗТовары.НоваяСтрока();
            ТЗТовары.PN = СокрЛП(ДБФ0.PN);
            ТЗТовары.KM = "Д"+СокрЛП(ДБФ0.KM);
            ТЗТовары.KM1 = СокрЛП(ДБФ0.NM);
            ТЗТовары.KM2 = СокрЛП(ДБФ0.KG);
            ТЗТовары.CP = ?(Число(ДБФ0.CP)<0,(-1)*Число(ДБФ0.CP),Число(ДБФ0.CP));
            ТЗТовары.CO = ?(Число(ДБФ0.CO)<0,(-1)*Число(ДБФ0.CO),Число(ДБФ0.CO));
            ТЗТовары.QF = ?(Число(ДБФ0.QF)<0,(-1)*Число(ДБФ0.QF),Число(ДБФ0.QF));
            ТЗТовары.SMP = ?(Число(ДБФ0.SMP)<0,(-1)*Число(ДБФ0.SMP),Число(ДБФ0.SMP));
            ТЗТовары.SMO = ?(Число(ДБФ0.SMO)<0,(-1)*Число(ДБФ0.SMO),Число(ДБФ0.SMO));
            ДБФ0.Следующая();
         КонецЦикла;
         Сообщить("Загрузка документов.");
         ДБФ1=СоздатьОбъект("XBase");
         ДБФ1.ОткрытьФайл(ИмяКаталога+"\Skl01_Tr.DBF");
         КолвоСтрокДок=ДБФ1.КоличествоЗаписей();
         Пока ДБФ1.ВКонце()=0 Цикл
            //Документ - ПоступлениеТоваров(ПРИХОД)

Вот где тут проставлять, я не знаю! Вроде все уже и так проставлено...

sergejK74

Это вставить куда - нибудь в начало процедуры.
ВерсияОбъекта = Константа.НомерРелиза;

что-то подобное
Документ.ВерсияОбъекта = ВерсияОбъекта;
нужно вставить после Документ.Новый();
К сожалению точное место указать не смогу, т.к. обработка здесь не вся. Ориентируйся на .Новый();
Кнопочка Спасибо - слева!

Иринка-картинка

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

Иринка-картинка

Перем ИмяКаталога;
Перем локСтавкаНДС;
//*******************************************
Процедура ПриВыбореСчета(ДокСФ)
   
//   НазначитьТип("ДокСФ.Субконто1", ДокСФ.Счет.ВидСубконто(1));
//   НазначитьТип("ДокСФ.Субконто2", ДокСФ.Счет.ВидСубконто(2));
//   НазначитьТип("ДокСФ.Субконто3", ДокСФ.Счет.ВидСубконто(3));
   Если ДокСФ.Счет = СчетПоКоду("90.3") Тогда
      Если ТипЗначения(ДокСФ.Товар) <> 2 Тогда
         Если (ДокСФ.Товар.Вид() = "Номенклатура") и (ДокСФ.Товар.Выбран() = 1) Тогда
            ДокСФ.Субконто1 = ДокСФ.Товар.ВидНоменклатуры;
            ДокСФ.Субконто2 = ДокСФ.Товар.СтавкаНДС.Получить(ДокСФ.ДатаДок);
         КонецЕсли;
      КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры // ПриВыбореСчета()
//*******************************************
Процедура ОткрытьПуть()
   Если ФС.ВыбратьКаталог(ИмяКаталога)=1 Тогда
      Путь=ИмяКаталога;
   КонецЕсли;
КонецПроцедуры
//*******************************************
Функция ДокНовыйНомер(Номер)
   Возврат СтрЗаменить(Номер,"/","_");
КонецФункции
//*******************************************
Функция НайтиГруппуКонтрагентов(Имя)
   возв=0;
   Спр=СоздатьОбъект("Справочник.Контрагенты");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
      Если Спр.ЭтоГруппа()=1 Тогда
         Если Врег(СокрЛП(Спр.Наименование))=Врег(СокрЛП(Имя)) Тогда
            возв=Спр.ТекущийЭлемент();
            Прервать;
         КонецЕсли;
      КонецЕсли;
   КонецЦикла;
   Возврат возв;
КонецФункции

Иринка-картинка

Функция НайтиКонтрагента(Код)
   возв=0;
   Спр=СоздатьОбъект("Справочник.Контрагенты");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
      Если Спр.ЭтоГруппа()=0 Тогда
         Если (СокрЛП(Спр.Код)=СокрЛП(Код)) Тогда
            возв=Спр.ТекущийЭлемент();
            Прервать;
         КонецЕсли;
      КонецЕсли;
   КонецЦикла;
   Возврат возв;
КонецФункции
//*******************************************
Функция НайтиКонтрагентаПоИмени(Имя)
   возв=0;
   Спр=СоздатьОбъект("Справочник.Контрагенты");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
      Если Спр.ЭтоГруппа()=0 Тогда
         Если СокрЛП(Спр.Наименование)=Имя Тогда
            возв=Спр.ТекущийЭлемент();
            Прервать;
         КонецЕсли;
      КонецЕсли;
   КонецЦикла;
   Возврат возв;
КонецФункции
//*******************************************
Функция НайтиГруппуНоменклатуры(Имя)
   возв=0;
   Спр=СоздатьОбъект("Справочник.Номенклатура");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
      Если Спр.ЭтоГруппа()=1 Тогда
         Если Врег(СокрЛП(Спр.Наименование))=Врег(СокрЛП(Имя)) Тогда
            возв=Спр.ТекущийЭлемент();
            Прервать;
         КонецЕсли;
      КонецЕсли;
   КонецЦикла;
   Возврат возв;
КонецФункции
//*******************************************
Функция НайтиДокумент(ДокВид,ДокНомер,ДокДата)
   возв=0;
   Док=СоздатьОбъект("Документ");
   Док.ВыбратьДокументы(НачГода(ТекущаяДата()),КонГода(ТекущаяДата()));
   Пока Док.ПолучитьДокумент() = 1 Цикл
      Если (СокрЛП(Док.НомерДок)=СокрЛП(ДокНомер)) И (Док.Вид()=СокрЛП(ДокВид)) Тогда
         возв=Док.ТекущийДокумент();
         Сообщить("Документ уже существует: "+Строка(возв));
         Прервать;
      КонецЕсли;
   КонецЦикла;
   Возврат возв;
КонецФункции
//*******************************************
Функция СоздатьТовар(Код,Наименование,Родитель)
   возв=0;
   Код=СтрЗаменить(Код,"/","_");
   Есть=0;
   Спр=СоздатьОбъект("Справочник.Номенклатура");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент()=1 Цикл
      Если СокрЛП(Спр.Код)=СокрЛП(Код) Тогда
         Есть=1;
         возв=Спр.ТекущийЭлемент();
         Прервать;
      КонецЕсли;
   КонецЦикла;
   Если (ПустоеЗначение(возв)=1) И (Есть=0) Тогда
      Спр.Новый();
      Спр.Код = Код;
      Спр.Родитель = НайтиГруппуНоменклатуры(СокрЛП(Родитель));
      Спр.Наименование = СокрЛП(Наименование);
      Спр.ТипТовара = Перечисление.ТипыТоваров.Собственный;
      Спр.ПолнНаименование = СокрЛП(Наименование);
      Спр.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар;
      Спр.ИспользоватьДату(НачГода(ТекущаяДата()));
      Спр.СтавкаНДС = Константа.ОсновнаяСтавкаНДС;
      //Сообщить("Добавлена новая Номенклатурная позиция:"+Спр.Наименование+", код:"+Спр.Код);
      Спр.Записать();
      возв=Спр.ТекущийЭлемент();
   КонецЕсли;
   Возврат возв;
КонецФункции
//*******************************************
Процедура Закр()
   Спр=СоздатьОбъект("Справочник.Номенклатура");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
      Спр.Удалить(0);
   КонецЦикла;
КонецПроцедуры

Иринка-картинка

Процедура Сформировать() 
   ВерсияОбъекта = Константа.НомерРелиза;
   ллл=СоздатьОбъект("Справочник.СтавкиНДС");
   ллл.ВыбратьЭлементы();
   Пока ллл.ПолучитьЭлемент()=1 Цикл
       Если ллл.Ставка=18 Тогда
           локСтавкаНДС=ллл.ТекущийЭлемент();
       КонецЕсли;
   КонецЦикла;
   
   Орг="";
   Если ЕстьНДС=1 Тогда
      Орг="ОО";
   Иначе
      Орг="ИП";
   КонецЕсли;
   
   //Skl01_Tr.DBF - шапка документов
   //Skl02_Tr.DBF - строки документов
   //SprGr_Tr.DBF - номенклатура - группы
   //SprOr_Tr.DBF - контрагенты
   //SprTv_Tr.DBF - номенклатура - элементы
   
   Если Усл1=1 Тогда
      Если ФС.СуществуетФайл(ИмяКаталога+"\SprK1_Tr.DBF")=1 Тогда
         //PN - группа
         //AP - наименование
         //ADR - адрес юрид.
         //INN - ИНН
         //KPP - КПП
         //TEL - телефон
         //PASP - паспорт
         //ADRDOST - адрес физич.
         //CORP_NAM - полное наименование
         Состояние("Загрузка групп контрагентов.");
         ТЗ=СоздатьОбъект("ТаблицаЗначений");
         ТЗ.НоваяКолонка("Наименование","Строка",150);
         Спр=СоздатьОбъект("Справочник.Контрагенты");
         ДБФ=СоздатьОбъект("XBase");
         ДБФ.ОткрытьФайл(ИмяКаталога+"\SprK1_Tr.DBF");
         Пока ДБФ.ВКонце()=0 Цикл
            ТЗ.НоваяСтрока();
            ТЗ.Наименование = Врег(СокрЛП(ДБФ.PN));
            ДБФ.Следующая();
         КонецЦикла;
         ТЗ.Свернуть("Наименование","");
         ТЗ.ВыбратьСтроки();
         Пока ТЗ.ПолучитьСтроку() = 1 Цикл
            Если НайтиГруппуКонтрагентов(Врег(СокрЛП(ТЗ.Наименование)))=0 Тогда
               Спр.НоваяГруппа();
               Спр.Наименование=Врег(СокрЛП(ТЗ.Наименование));
               Спр.Записать();
               Сообщить(Спр);
            КонецЕсли;
         КонецЦикла;
         
         Состояние("Загрузка контрагентов");
         Спр=СоздатьОбъект("Справочник.Контрагенты");
         ДБФ=СоздатьОбъект("XBase");
         ДБФ.ОткрытьФайл(ИмяКаталога+"\SprK1_Tr.DBF");
         Пока ДБФ.ВКонце()=0 Цикл
            Если НайтиКонтрагента("Д"+СокрЛП(ДБФ.KP))=0 Тогда
               Спр.Новый();
               Спр.Код="Д"+СокрЛП(ДБФ.KP);
               Если СокрЛП(ДБФ.PN)<>"" Тогда
                  Спр.Родитель = НайтиГруппуКонтрагентов(Врег(СокрЛП(ДБФ.PN)));
               КонецЕсли;
               Спр.Наименование = Врег(СокрЛП(ДБФ.AP));
               Спр.ВидКонтрагента = Перечисление.ВидыКонтрагентов.Организация;
               Спр.ПолнНаименование = Врег(СокрЛП(ДБФ.CORP_NAM));
               Спр.ЮридическийАдрес = СокрЛП(ДБФ.ADR);
               Спр.ПочтовыйАдрес = СокрЛП(ДБФ.ADRDOST);
               Спр.Телефоны = СокрЛП(ДБФ.TEL);
               Спр.ИНН = СокрЛП(ДБФ.INN);
               Если СокрЛП(ДБФ.KPP)<>"" Тогда
                  Спр.ИНН = Спр.ИНН +"/"+СокрЛП(ДБФ.KPP);
               КонецЕсли;
               Сообщить("Д"+СокрЛП(ДБФ.KP)+" "+Врег(СокрЛП(ДБФ.AP))+" - новый");
               Спр.Записать();
               Дог=СоздатьОбъект("Справочник.Договоры");
               Дог.ИспользоватьВладельца(Спр.ТекущийЭлемент());
               Дог.Новый();
               Дог.Наименование = "Основной";
               Дог.ВалютаДоговора = Константа.ОсновнаяВалюта;
               Дог.ОплатаДоговора = 1;
               Дог.АвтоОбработкаНДС = 1;
               Дог.Записать();
               Спр.ОсновнойДоговор = Дог.ТекущийЭлемент();
               Спр.Записать();
               Сообщить(Спр,"I,");
            Иначе
      //проверка изменения наименования контрагента         
               Если Врег(СокрЛП(Лев(ДБФ.AP,30)))<>НайтиКонтрагента("Д"+СокрЛП(ДБФ.KP)).Наименование Тогда
                  Сообщить("===Д"+СокрЛП(ДБФ.KP)+" "+Врег(СокрЛП(Лев(ДБФ.AP,30)))+"<>"+НайтиКонтрагента("Д"+СокрЛП(ДБФ.KP)).Наименование);
      //установка нового значения контрагента\
                  Спр1=СоздатьОбъект("Справочник.Контрагенты");         
                  Спр1.ВыбратьЭлементы();
                  Спр1.НайтиПоКоду("Д"+СокрЛП(ДБФ.KP));
                  
                  Спр1.Наименование = Врег(СокрЛП(ДБФ.AP));
                  Спр1.ВидКонтрагента = Перечисление.ВидыКонтрагентов.Организация;
                  Спр1.ПолнНаименование = Врег(СокрЛП(ДБФ.CORP_NAM));
                  Спр1.ЮридическийАдрес = СокрЛП(ДБФ.ADR);
                  Спр1.ПочтовыйАдрес = СокрЛП(ДБФ.ADRDOST);
                  Спр1.Телефоны = СокрЛП(ДБФ.TEL);
                  Спр1.ИНН = СокрЛП(ДБФ.INN);
                  Спр1.Записать();
                  Сообщить(Спр1.Наименование);
               КонецЕсли;
               //Сообщить("Д"+СокрЛП(ДБФ.KP)+" "+Врег(СокрЛП(ДБФ.AP))+" - найден.");
            КонецЕсли;
            ДБФ.Следующая();
         КонецЦикла;
      КонецЕсли;
   КонецЕсли;

Иринка-картинка

   Если Усл2=1 Тогда
      Если ФС.СуществуетФайл(ИмяКаталога+"\SprGr_Tr.DBF")=1 Тогда
         Состояние("Загрузка групп номенклатуры");
         Спр=СоздатьОбъект("Справочник.Номенклатура");
         ДБФ=СоздатьОбъект("XBase");
         ДБФ.ОткрытьФайл(ИмяКаталога+"\SprGr_Tr.DBF");
         Пока ДБФ.ВКонце()=0 Цикл
            Если НайтиГруппуНоменклатуры(ДБФ.NAM)=0 Тогда
               Спр.НоваяГруппа();
               Спр.Наименование=ДБФ.NAM;
               Спр.Записать();
               Сообщить(Спр);
            КонецЕсли;
            ДБФ.Следующая();
         КонецЦикла;
      КонецЕсли;
      //Если ФС.СуществуетФайл(ИмяКаталога+"\SprTv_Tr.DBF")=1 Тогда
      //   Сообщить("Загрузка элементов номенклатуры.");
      //   ТмпТЗ=СоздатьОбъект("ТаблицаЗначений");
      //   ТмпТЗ.НоваяКолонка("Код","Строка",10);
      //   ДБФ0=СоздатьОбъект("XBase");
      //   ДБФ0.ОткрытьФайл(ИмяКаталога+"\Skl02_Tr.DBF");
      //   Пока ДБФ0.ВКонце()=0 Цикл
      //      ТмпТЗ.НоваяСтрока();
      //      ТмпТЗ.Код = "Д"+СокрЛП(ДБФ0.KM);
      //      ДБФ0.Следующая();
      //   КонецЦикла;
      //   ТмпТЗ.Свернуть("Код","");
      //   
         //KG - группа
         //KM - код
         //NM - наименование
         //EI - единица измерения
         //ARTICUL - артикул
         //Спр=СоздатьОбъект("Справочник.Номенклатура");
         //ДБФ=СоздатьОбъект("XBase");
         //ДБФ.ОткрытьФайл(ИмяКаталога+"\SprTv_Tr.DBF");
         //Пока ДБФ.ВКонце()=0 Цикл
         //   
         //   
         //   ДБФ.Следующая();
         //КонецЦикла;
         
         
         
      //КонецЕсли;
      
      
      
   КонецЕсли;
   //***************************************************
   Если Усл3=1 Тогда
      Если (ФС.СуществуетФайл(ИмяКаталога+"\Skl01_Tr.DBF")=1) И (ФС.СуществуетФайл(ИмяКаталога+"\Skl02_Tr.DBF")=1) Тогда
         Сообщить("Анализ строк документов.");
         ТЗТовары=СоздатьОбъект("ТаблицаЗначений");
         ТЗТовары.НоваяКолонка("PN","Строка",18);//Идентификатор документа
         ТЗТовары.НоваяКолонка("KM","Строка",10);//Товар(Код)
         ТЗТовары.НоваяКолонка("KM1","Строка",60);//Товар(Наименование)
         ТЗТовары.НоваяКолонка("KM2","Строка",30);//Товар(Родитель)
         ТЗТовары.НоваяКолонка("CP","Число",18,2);//Цена отпускная
         ТЗТовары.НоваяКолонка("CO","Число",18,2);//Цена входящяя
         ТЗТовары.НоваяКолонка("QF","Число",18,3);//Количество отпущенное
         ТЗТовары.НоваяКолонка("SMP","Число",18,2);//Сумма отпускная
         ТЗТовары.НоваяКолонка("SMO","Число",18,2);//Сумма входящяя
         
         ДБФ0=СоздатьОбъект("XBase");
         ДБФ0.ОткрытьФайл(ИмяКаталога+"\Skl02_Tr.DBF");
         Пока ДБФ0.ВКонце()=0 Цикл
            ТЗТовары.НоваяСтрока();
            ТЗТовары.PN = СокрЛП(ДБФ0.PN);
            ТЗТовары.KM = "Д"+СокрЛП(ДБФ0.KM);
            ТЗТовары.KM1 = СокрЛП(ДБФ0.NM);
            ТЗТовары.KM2 = СокрЛП(ДБФ0.KG);
            ТЗТовары.CP = ?(Число(ДБФ0.CP)<0,(-1)*Число(ДБФ0.CP),Число(ДБФ0.CP));
            ТЗТовары.CO = ?(Число(ДБФ0.CO)<0,(-1)*Число(ДБФ0.CO),Число(ДБФ0.CO));
            ТЗТовары.QF = ?(Число(ДБФ0.QF)<0,(-1)*Число(ДБФ0.QF),Число(ДБФ0.QF));
            ТЗТовары.SMP = ?(Число(ДБФ0.SMP)<0,(-1)*Число(ДБФ0.SMP),Число(ДБФ0.SMP));
            ТЗТовары.SMO = ?(Число(ДБФ0.SMO)<0,(-1)*Число(ДБФ0.SMO),Число(ДБФ0.SMO));
            ДБФ0.Следующая();
         КонецЦикла;
         Сообщить("Загрузка документов.");
         ДБФ1=СоздатьОбъект("XBase");
         ДБФ1.ОткрытьФайл(ИмяКаталога+"\Skl01_Tr.DBF");
         КолвоСтрокДок=ДБФ1.КоличествоЗаписей();
         Пока ДБФ1.ВКонце()=0 Цикл
            //Документ - ПоступлениеТоваров(ПРИХОД)
            Если Число(СокрЛП(ДБФ1.KO))=1 Тогда
               //ПоступлениеТоваров
//               Если НайтиДокумент("ПоступлениеТоваров",СокрЛП(ДокНовыйНомер(ДБФ1.ND)),Дата(ДБФ1.DO))=1 Тогда
//                  Сообщить("Поступление товаров номер "+СокрЛП(ДокНовыйНомер(ДБФ1.ND))+" от "+Дата(ДБФ1.DO)+ "уже загружено");   
//               КонецЕсли;
               Если НайтиДокумент("ПоступлениеТоваров",СокрЛП(ДокНовыйНомер(ДБФ1.ND)),Дата(ДБФ1.DO))=0 Тогда
                  //Нет 
                  Док=СоздатьОбъект("Документ.ПоступлениеТоваров");
                  Док.Новый(); 
                  Док.ВерсияОбъекта = ВерсияОбъекта;
                  Док.НомерДок = СокрЛП(ДокНовыйНомер(ДБФ1.ND));
                  Док.ДатаДок = Дата(ДБФ1.DO);
                  Док.Контрагент = НайтиКонтрагентаПоИмени(Врег(СокрЛП(Лев(ДБФ1.PK,30))));
                  Дог=СоздатьОбъект("Справочник.Договоры");
                  Дог.ИспользоватьВладельца(Док.Контрагент);
                  Дог.ВыбратьЭлементы();
                  Пока Дог.ПолучитьЭлемент() = 1 Цикл
                     Док.Договор = Дог.ТекущийЭлемент();
                  КонецЦикла;
                  //Док.ДатаНомерСчетаФактуры = ;
                  Док.МестоХранения = Константа.ОсновнойСклад;
                  Док.ВидПоступления = 1;
                  Док.ЗачитыватьАванс = 0;
                  Если ЕстьНДС=1 Тогда
                     Док.ВариантРасчетаНалогов = Константа.ОсновнойВариантРасчетаНалогов;
                     Док.НДСвключатьВСтоимость = 1;
                  КонецЕсли;
                  Док.Курс = 1;
                  Док.Комментарий = "Выгрузка из Дока-Склад";
                  ТЗТовары.ВыбратьСтроки();
                  Пока ТЗТовары.ПолучитьСтроку() = 1 Цикл
                     Если ТЗТовары.PN=СокрЛП(ДБФ1.PN2) Тогда
                        Док.НоваяСтрока();
                        Док.Товар = СоздатьТовар(ТЗТовары.KM,ТЗТовары.KM1,ТЗТовары.KM2);
                        Док.Количество = ТЗТовары.QF;
                        Если ЕстьНДС=1 Тогда
                           Док.Цена = ТЗТовары.CO/1.18;
                           Док.Сумма = ТЗТовары.SMO/1.18;
                           Док.НДС = ТЗТовары.SMO-ТЗТовары.SMO/1.18;
                           Док.Всего = ТЗТовары.SMO;
                        Иначе
                           Док.Цена = ТЗТовары.CO;
                           Док.Сумма = ТЗТовары.SMO;
                           Док.Всего = ТЗТовары.SMO;
                        КонецЕсли;
                     КонецЕсли;
                  КонецЦикла;
                   Сообщить(Док);
                  Док.Записать();
               Иначе
                  //Есть
                  
               КонецЕсли;
            КонецЕсли;

Иринка-картинка

   //Документ - РасходнаяНакладная
            Если (Число(СокрЛП(ДБФ1.KO))=8) ИЛИ (Число(СокрЛП(ДБФ1.KO))=2) Тогда
//               Если НайтиДокумент("РасходнаяНакладная",СокрЛП(ДокНовыйНомер(ДБФ1.ND)),Дата(ДБФ1.DO))=1 Тогда
//                  Сообщить("Реализация номер "+СокрЛП(ДокНовыйНомер(ДБФ1.ND))+" от "+Дата(ДБФ1.DO)+ "уже загружена");   
//               КонецЕсли;
               Если НайтиДокумент("РасходнаяНакладная",СокрЛП(ДокНовыйНомер(ДБФ1.ND)),Дата(ДБФ1.DO))=0 Тогда
                  Док=СоздатьОбъект("Документ.РасходнаяНакладная");
                  Док.Новый();
                  Док.ВерсияОбъекта = ВерсияОбъекта;
                  Док.НомерДок = СокрЛП(ДокНовыйНомер(ДБФ1.ND));
                  Док.ДатаДок = Дата(ДБФ1.DO);
                  Док.Контрагент = НайтиКонтрагентаПоИмени(Врег(СокрЛП(Лев(ДБФ1.PK,30))));
                  Дог=СоздатьОбъект("Справочник.Договоры");
                  Дог.ИспользоватьВладельца(Док.Контрагент);
                  Дог.ВыбратьЭлементы();
                  Пока Дог.ПолучитьЭлемент() = 1 Цикл
                     Док.Договор = Дог.ТекущийЭлемент();
                  КонецЦикла;
                  Док.МестоХранения = Константа.ОсновнойСклад;
                  Док.ВидОтгрузки = 1;
                  Док.УчитыватьНП = 0;
                  Док.ЗачитыватьАванс = 0;
                  Док.Курс = 1;
                  Док.ВариантРасчетаНалогов = Константа.ОсновнойВариантРасчетаНалоговОтгрузки;
                  Док.РасчетныйСчет = Константа.ОсновнойБанковскийСчет;
                  Док.ВерсияОбъекта = Константа.НомерРелиза;
                  Если ЕстьНДС=1 Тогда
                     Док.НДСвключатьВСтоимость = 1;
                  КонецЕсли;
                  //Док.ТипЦен = ;
                  Док.Грузоотправитель = "";
                  Док.Грузополучатель = Док.Контрагент;
                  Док.Комментарий = "Выгрузка из Дока-Склад";
                  ТЗТовары.ВыбратьСтроки();
                  Пока ТЗТовары.ПолучитьСтроку() = 1 Цикл
                     Если ТЗТовары.PN=СокрЛП(ДБФ1.PN2) Тогда
                        Док.НоваяСтрока();
                        Док.Товар = СоздатьТовар(ТЗТовары.KM,ТЗТовары.KM1,ТЗТовары.KM2);
                        Док.Количество = ТЗТовары.QF;
                        Если ЕстьНДС=1 Тогда
                           Док.Цена = ТЗТовары.CP/1.18;
                           Док.Сумма = ТЗТовары.SMP/1.18;
                           Док.НДС = ТЗТовары.SMP-ТЗТовары.SMP/1.18;
                           Док.Всего = ТЗТовары.SMP;
                        Иначе
                           Док.Цена = ТЗТовары.CP;
                           Док.Сумма = ТЗТовары.SMP;
                           Док.Всего = ТЗТовары.SMP;
                        КонецЕсли;
                     КонецЕсли;
                  КонецЦикла;
//                  Сообщить("Записываю документ: "+Док);
                  Док.Записать();
                  ДокОсн=Док.ТекущийДокумент();
                  ДокСФ=СоздатьОбъект("Документ.СчетФактура");
                  ДокСФ.Новый();
                  Док.ВерсияОбъекта = ВерсияОбъекта;
                  ДокСФ.НомерДок=СокрЛП(ДокНовыйНомер(ДБФ1.ND));
                  ДокСФ.ДатаДок = Дата(ДБФ1.DO);
                  ДокСФ.ДокументОснование=ДокОсн;
               //%%%%%%
                  СчетАкциза = 1;
                  ВариантОтправки = 1;
                  Грузоотправитель = ПолучитьПустоеЗначение();
                  // Если основание - это документ отгрузки, то введем
                  // значения реквизитов счета-фактуры на основании данного документа.
                     СчетНДС = 1;
                     ДокСФ.Договор = ДокОсн.Договор;
                     ДокСФ.Контрагент=ДокОсн.Контрагент;
                     ДокСФ.ТипЦен = ДокОсн.ТипЦен;
                     // Заполнение грузополучателя и грузоотправителя
                     ДокСФ.Грузополучатель=ДокОсн.Контрагент;
                          Если ПустоеЗначение(ДокОсн.Грузополучатель) = 0 Тогда
                           ДокСФ.Грузополучатель = ДокОсн.Грузополучатель;
                        КонецЕсли;
                        
                          Если ПустоеЗначение(ДокОсн.Грузоотправитель) = 0 Тогда
                            ВариантОтправки  = 0;
                           ДокСФ.Грузоотправитель = ДокОсн.Грузоотправитель;
                        КонецЕсли;
                     ДокСФ.Аванс = 0;
                     ДокСФ.Курс=1;
                     ДокОсн.ВыбратьСтроки();
                     Пока ДокОсн.ПолучитьСтроку()=1 Цикл
                        ДокСФ.НоваяСтрока();
                        ДокСФ.НазначитьТип("Товар", "Справочник.Номенклатура");
                        ДокСФ.Товар=ДокОсн.Товар;
                        //СтранаПроисхождения = Товар.СтранаПроисхождения;
                        ДокСФ.Количество=ДокОсн.Количество;
                        ДокСФ.СтавкаНДС = глСтавкаНалога(ДокОсн, "НДС");
                        Кол = ?(ДокСФ.Количество = 0, 1, ДокСФ.Количество);
                        ДокСФ.Цена = ДокОсн.Цена;
                        ДокСФ.Сумма = ДокОсн.Всего - ДокОсн.НДС - ДокОсн.НП;
                        ДокСФ.НДС=ДокОсн.НДС;
                        ДокСФ.Счет = СчетПоКоду("90.3");
                        ПриВыбореСчета(ДокСФ);
                        ДокСФ.Всего=ДокСФ.Сумма+ДокСФ.НДС;
                      КонецЦикла;
                     ДокСФ.СчетНДС = 1;
                     ДокСФ.ОтключитьНП = 1;
                     ДокСФ.ОтключитьАкциз = 1;
                     ДокСФ.Записать();
                  КонецЕсли;

Теги:

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

Рейтинг@Mail.ru

Поиск