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

Создавать документы

Автор Gio, 11 ноя 2024, 13:15

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

Gio

Максим75,

Теоретически это понятно, можете написать мне, что добавить на уровне кода?  :(

Я попробовал это, и документ вообще не создается:
Счет = Счет + 1;                 
               
                 Doc = Неопределено; //    Я добавил это здесь         
                 
                 
            КонецЦикла;
           
                Если Doc <> Неопределено Тогда                                                                     
                Попытка
                     Doc.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
                   
                    Сообщить(НСтр("ru='Документ ""'") + Строка(Doc.Ссылка) + НСтр("ru='"" оформлен удачно!'"));
                Исключение
                    Сообщить(ОписаниеОшибки());
                КонецПопытки;

            КонецЕсли;
           
           
        КонецЕсли;
       
        Excel.Quit();   
   

     Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;

Максим75

Gio, здрасти, и что Вы сделали?
конечно вообще ничего писать не будет.

вот же Вам предлагали где это написать, перед циклом.

Doc = Неопределено; //Добаввить
           
Пока Excel.Sheets(Sheet).Cells(Счет, DateColNum).Value <> Неопределено Цикл

потом там где создаете документ делаете проверку
Если Doc=Неопределено тогда
.... пишите создание документа и заполнение шапки документа

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

Gio

Максим75,  Я пытался записать документ до "КонецЦикла" но результат все тот же. (Справочник созданы, документ не записан)

есть ли еще что-то, что я делаю неправильно?



////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

Функция  CheckExcelValues()
   
    AllIsOk = Истина;
   
    ErrorMessage = "";   
   
    Если FileName = "" Тогда
        AllIsOk = Ложь;
    КонецЕсли;
   
    Если Не ЗначениеЗаполнено(ContractColNum) Тогда
        AllIsOk = Ложь;
    КонецЕсли;       
       
    Если Не ЗначениеЗаполнено(Субконто1ColNum) Тогда
        AllIsOk = Ложь;                                   
    КонецЕсли;
   
    Если Не ЗначениеЗаполнено(DateColNum) Тогда
        AllIsOk = Ложь;
    КонецЕсли;
   
    Если Не ЗначениеЗаполнено(ContrColNum) Тогда
        AllIsOk = Ложь;
    КонецЕсли;
   
    Если Не ЗначениеЗаполнено(AmountColNum) Тогда
        AllIsOk = Ложь;
    КонецЕсли;
   
    Если Не ЗначениеЗаполнено(DescriptionColNum) Тогда
        AllIsOk = Ложь;
    КонецЕсли;
   
    Если AllIsOk = Ложь Тогда
        Предупреждение(НСтр("ru='Заполните обязателные поля:'"));
    КонецЕсли;     
   
    Возврат AllIsOk;
       
КонецФункции

Функция LoadExcel()
   
    Если CheckExcelValues() Тогда
        Попытка
            Excel = Новый  COMОбъект("Excel.Application");
            стр = 1;
        Исключение
            Сообщить(НСтр("ru='Не удалось загрузить файл'"));
            стр = 0;
            Возврат Ложь;
        КонецПопытки;
       
        Попытка
            Excel.Workbooks.Open(FileName);
       
        Исключение
            стр = 0;
            Сообщить(ОписаниеОшибки());
            Excel.Quit();
            Возврат Ложь;
        КонецПопытки;
       
       
        Если стр = 1 Тогда
           
            PrimaryOrgan = глЗначениеПеременной("ОсновнаяОрганизация");           
            Счет = StartingRow; 
           
            Doc = Неопределено;  //////   Я добавил это здесь
           
           
            Пока Excel.Sheets(Sheet).Cells(Счет, DateColNum).Value <> Неопределено Цикл                               
       
                // Дата
                Попытка
                    DateColNumValue = Дата(Excel.Sheets(Sheet).Cells(Счет,DateColNum).Value);
                    Если Не ЗначениеЗаполнено(DateColNumValue) Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. Дата не заполнена ""'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                Исключение
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный формат указанной даты'"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецПопытки;           
                       
               
                //ПодразделенияОрганизаций
                ПодразделенияОрганизацийColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, ПодразделенияОрганизацийColNum).Value),Символ(160),""));
               
                //ОсновныеСредства
                ОсновныеСредстваColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, ОсновныеСредстваColNum).Value),Символ(160),""));

                                                   
            //  сумма полиса
                Попытка
                    PolisAmountColNumValue = Число(Excel.Sheets(Sheet).Cells(Счет,PolisAmountColNum).Value);
                    Если Не ЗначениеЗаполнено(PolisAmountColNumValue) Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. Сумма полиса не заполнена ""'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                Исключение
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный формат указанной суммы '"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецПопытки;     
               
                //счет полиса
                    CreditColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, CreditColNum).Value),Символ(160),""));
                   
                    Если Не ЗначениеЗаполнено(CreditColNumValue)  Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. счет полиса ""'") + CreditColNumValue + НСтр("ru = '"" не найдена в базе'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;                                     
               
                //// Контрагент
                ContrColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, ContrColNum).Value),Символ(160),""));
                Если ЗначениеЗаполнено(ContrColNumValue) Тогда
                   
                    ContrValue  = Справочники.Контрагенты.НайтиПоКоду(ContrColNumValue,,,PrimaryOrgan);
                   
                    Если Не ЗначениеЗаполнено(ContrValue)  Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '.Контрагент ""'") + ContrValue + НСтр("ru = '"" не найдена в базе.'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                   
                Иначе
                    Сообщить(Строка(Счет) + НСтр("ru = '. Не заполнено наименование Контрагент '"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецЕсли;
               
               
                      //// ДоговорыКонтрагентов
                ContractColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, ContractColNum).Value),Символ(160),""));
                Если ЗначениеЗаполнено(ContractColNumValue) Тогда
                   
                    ContractValue  = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(ContractColNumValue);
                   
                    Если Не ЗначениеЗаполнено(ContractValue)  Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '.ДоговорыКонтрагентов ""'") + ContractValue + НСтр("ru = '"" не найдена в базе'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                   
                Иначе
                    Сообщить(Строка(Счет) + НСтр("ru = '. Не заполнено ДоговорыКонтрагентов'"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецЕсли;   
                             
                             
                                                       //////страховой полис  ////
            Субконто1ColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, Субконто1ColNum).Value),Символ(160),""));
                Если ЗначениеЗаполнено(Субконто1ColNumValue) Тогда                           
                             
        Субконто1Value  = Справочники.РасходыБудущихПериодов.НайтиПоНаименованию(Субконто1ColNumValue); 
       
                                              /////// новый полис ///////////////
                   
                        спр = Справочники.РасходыБудущихПериодов.СоздатьЭлемент();
                        спр.Наименование = Субконто1ColNumValue ;
                        спр.СпособПризнанияРасходов = Перечисления.СпособыПризнанияРасходов.ПоКалендарнымДням;
                        спр.Сумма =  PolisAmountColNumValue;   // сумма полиса   
                        спр.ДатаНачалаСписания = ПолеВвода2; //Дата начала учета
                        спр.ДатаОкончанияСписания  = ПолеВвода3; //Дата окончания списания
                        спр.СчетБУ = ПланыСчетов.Хозрасчетный.НайтиПоКоду(CreditColNumValue);
                        спр.СубконтоБУ1 = Справочники.ОсновныеСредства.НайтиПоКоду(ОсновныеСредстваColNumValue);     //ОсновныеСредства
                        спр.СубконтоБУ2 = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(ПодразделенияОрганизацийColNumValue);  //ПодразделенияОрганизаций
                        спр.СубконтоБУ3 = Справочники.СтатьиЗатрат.НайтиПоКоду("000000134");                  //СтатьиЗатрат   
                       
                          спр.Записать();
                                                                           
                    Сообщить(НСтр("ru='полис ""'") + Строка(спр.Наименование ) + НСтр("ru='"" оформлен удачно!'"));
                                 
                    Субконто2Value  = Справочники.РасходыБудущихПериодов.НайтиПоКоду(спр.Код);
                                                                                                                                             
                   
                    Если Не ЗначениеЗаполнено(Субконто1Value)  Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. полис ""'") + Субконто1Value + НСтр("ru = '"" не найдена в базе.'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                                         
                        Продолжить;
                    КонецЕсли;
                   
                Иначе
                    Сообщить(Строка(Счет) + НСтр("ru = '. полис не заполнена'"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецЕсли;     
               
                    // Сумма документа
                Попытка
                    AmountColNumValue = Число(Excel.Sheets(Sheet).Cells(Счет,AmountColNum).Value);
                    Если Не ЗначениеЗаполнено(AmountColNumValue) Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. Сумма не заполнена  ""'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                Исключение
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный формат указанной суммы '"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецПопытки;
           
            //    Курс документа
                Если ЗначениеЗаполнено(КурсColNum) Тогда
                    КурсColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, КурсColNum).Value),Символ(160),""));               
                КонецЕсли;               
       
               
             //Комментарий         
                DescriptionColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, DescriptionColNum).Value),Символ(160),""));

                               
            /////////////////     Формирование документов ////////////////////////////////////////////
                                                                     
                впТекущийПользователь = глЗначениеПеременной("глТекущийПользователь");
                Doc = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();                       
                Doc.ВидОперации  = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;               
                Doc.Дата =  КонецДня(DateColNumValue) - 61 ;               
                Doc.Контрагент = Справочники.Контрагенты.НайтиПоКоду(ContrColNumValue);               
                Doc.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(ContractColNumValue);
                Doc.ВалютаДокумента =   Справочники.Валюты.НайтиПоНаименованию(Doc.ДоговорКонтрагента.ВалютаВзаиморасчетов.Наименование);
                Валюта = ОМОбщегоНазначения.ПолучитьКурсВалюты(Doc.ВалютаДокумента, Doc.Дата );         
                Doc.WS = false;                               
                Doc.СпособЗачетаАвансов =  Перечисления.СпособыЗачетаАвансов.НеЗачитывать;                 
                Doc.Организация = PrimaryOrgan;                 
                Doc.СуммаДокумента = AmountColNumValue;                           
                Doc.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("3190.7");
                Doc.Ответственный =  впТекущийПользователь;
                Doc.Комментарий =  DescriptionColNumValue;
                Doc.УчитыватьНДС = Истина;
               
                //Если в файле указан специальный курс обмена, то в транзакциях будет выбран этот курс
                Если КурсColNumValue = "" Тогда                 
                Doc.КурсВзаиморасчетов = Валюта.Курс;
                 Иначе
                Doc.КурсВзаиморасчетов = КурсColNumValue;
            КонецЕсли;                 
                Doc.КратностьВзаиморасчетов = 1;                 
       
                   
           
            Попытка   
                Если  Doc.ВалютаДокумента  <> Справочники.Валюты.НайтиПоКоду("981")  и 
                 КурсColNumValue  = "1"   Тогда
               
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный курс ""'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                Исключение
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный курс '"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецПопытки; 
           

               
               
                   /////////////////////////////// Табличная часть //////////////////////////////////////////
                // Doc.Неопределено ;                       
                 Doc.Услуги.Добавить();
                 НовыыйТабДолга = Doc.Услуги[0];                 
                 НовыыйТабДолга.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("1710.01");                           
                 НовыыйТабДолга.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Содержание  =  Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Количество =  1; //1;           
                 НовыыйТабДолга.Сумма =  AmountColNumValue;                   
                 НовыыйТабДолга.Цена =   AmountColNumValue;     
                 НовыыйТабДолга.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НайтиПоКоду("3340.01");
                 НовыыйТабДолга.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;                                                     
                 НовыыйТабДолга.Субконто1 = Субконто2Value; // Справочники.РасходыБудущихПериодов.НайтиПоКоду(Субконто1Value.Код);
                 НовыыйТабДолга.Субконто2 = Справочники.Субконто.НайтиПоНаименованию(ПолеВвода1);         //Субконто                 
                                 
               
                           
               Счет = Счет + 1;             
           
           
            КонецЦикла;
           
           
    Если Doc = Неопределено Тогда     
               
        Doc.Записать();            ///      Документ не был записан
             
             
    КонецЕсли;   

                           
               
            //    Попытка
            //         Doc.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
            //       
            //        Сообщить(НСтр("ru='Документ ""'") + Строка(Doc.Ссылка) + НСтр("ru='"" оформлен удачно!'"));
            //    Исключение
            //        Сообщить(ОписаниеОшибки());
            //    КонецПопытки;

            //КонецЕсли;
           
           
        КонецЕсли;
       
        Excel.Quit();   
   

     Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
 

КонецФункции

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
                       

Процедура ПриОткрытии()     
    Sheet = 1;
    StartingRow = 3;
    DateColNum = 1;
    ContrColNum = 2;
    ContractColNum = 3;
    AmountColNum = 4;
    КурсColNum =  5;
    DescriptionColNum = 6;
    Субконто1ColNum = 7;
    ПодразделенияОрганизацийColNum =  8;
    PolisAmountColNum = 9;
    ОсновныеСредстваColNum =  10;
    CreditColNum = 11;

КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ДЕЙСТВИЯ КОМАНДНЫХ ПАНЕЛЕЙ ФОРМЫ

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
    LoadExcel();
   
КонецПроцедуры

Процедура ФайлНачалоВыбора(Элемент, СтандартнаяОбработка)
   
    Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    ДиалогОткрытияФайла.Заголовок = НСтр("en='Select file';ru='Выберите файл'");
    ДиалогОткрытияФайла.Фильтр = "файл Excel (*.xls; *.xlsx)|*.xls; *.xlsx";
    FileName = "";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        FileName =  ДиалогОткрытияФайла.ПолноеИмяФайла;
    КонецЕсли;
   
КонецПроцедуры

Gio


Максим75

Gio, это что такое?

Если Doc = Неопределено Тогда     
               
        Doc.Записать();            ///      Документ не был записан
             
             
    КонецЕсли;

может надо условие изменить на
Если Doc <> Неопределено Тогда     

Gio

Цитата: Максим75 от 14 ноя 2024, 12:27Gio,

может надо условие изменить на
Если Doc <> Неопределено Тогда     

Тогда создается только один документ (последний запись из Excel).

хорошо, спасибо, я попробую изменить другой отработка.

Максим75

Gio, да потому и создается один документ, что у Вас нет проверки при создании документа.
вы просто пишите Doc = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
а это значит, что в записывание попадет самый крайний таким образом созданный документ, Вы их просто перезатираете.
А надо вставить проверку, что
Если Doc = Неопределено тогда
Doc = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
и дальше по тексту...

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

Gio

Максим75,  Да, вы прав, Я добавил это:
Doc = Неопределено;  //////   Я добавил это здесь


           
 Если Doc = Неопределено Тогда
         Doc = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
 КонецЕсли;

//и после цикла

Если Doc <> Неопределено Тогда
                  Doc.Записать();
КонецЕсли;

Все табличные части создаются в документе, но заполнена только первая запись. Следующие строки пусты.

Максим75

Gio, ну давайте сюда код, посмотрим, почему только первая.

Gio

Максим75,

Функция LoadExcel()
   
    Если CheckExcelValues() Тогда
        Попытка
            Excel = Новый  COMОбъект("Excel.Application");
            стр = 1;
        Исключение
            Сообщить(НСтр("ru='Не удалось загрузить файл'"));
            стр = 0;
            Возврат Ложь;
        КонецПопытки;
       
        Попытка
            Excel.Workbooks.Open(FileName);
       
        Исключение
            стр = 0;
            Сообщить(ОписаниеОшибки());
            Excel.Quit();
            Возврат Ложь;
        КонецПопытки;
       
       
        Если стр = 1 Тогда
           
            PrimaryOrgan = глЗначениеПеременной("ОсновнаяОрганизация");           
            Счет = StartingRow; 
           
            Doc = Неопределено;  //////   Я добавил это здесь
           
           
            Пока Excel.Sheets(Sheet).Cells(Счет, DateColNum).Value <> Неопределено Цикл                               
       
                // Дата
                Попытка
                    DateColNumValue = Дата(Excel.Sheets(Sheet).Cells(Счет,DateColNum).Value);
                    Если Не ЗначениеЗаполнено(DateColNumValue) Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. Дата не заполнена ""'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                Исключение
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный формат указанной даты'"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецПопытки;           
                       
               
                //ПодразделенияОрганизаций
                ПодразделенияОрганизацийColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, ПодразделенияОрганизацийColNum).Value),Символ(160),""));
               
                //ОсновныеСредства
                ОсновныеСредстваColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, ОсновныеСредстваColNum).Value),Символ(160),""));

                                                   
            //  сумма полиса
                Попытка
                    PolisAmountColNumValue = Число(Excel.Sheets(Sheet).Cells(Счет,PolisAmountColNum).Value);
                    Если Не ЗначениеЗаполнено(PolisAmountColNumValue) Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. Сумма полиса не заполнена ""'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                Исключение
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный формат указанной суммы '"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецПопытки;     
               
                //счет полиса
                    CreditColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, CreditColNum).Value),Символ(160),""));
                   
                    Если Не ЗначениеЗаполнено(CreditColNumValue)  Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. счет полиса ""'") + CreditColNumValue + НСтр("ru = '"" не найдена в базе'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;                                     
               
                //// Контрагент
                ContrColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, ContrColNum).Value),Символ(160),""));
                Если ЗначениеЗаполнено(ContrColNumValue) Тогда
                   
                    ContrValue  = Справочники.Контрагенты.НайтиПоКоду(ContrColNumValue,,,PrimaryOrgan);
                   
                    Если Не ЗначениеЗаполнено(ContrValue)  Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '.Контрагент ""'") + ContrValue + НСтр("ru = '"" не найдена в базе.'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                   
                Иначе
                    Сообщить(Строка(Счет) + НСтр("ru = '. Не заполнено наименование Контрагент '"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецЕсли;
               
               
                      //// ДоговорыКонтрагентов
                ContractColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, ContractColNum).Value),Символ(160),""));
                Если ЗначениеЗаполнено(ContractColNumValue) Тогда
                   
                    ContractValue  = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(ContractColNumValue);
                   
                    Если Не ЗначениеЗаполнено(ContractValue)  Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '.ДоговорыКонтрагентов ""'") + ContractValue + НСтр("ru = '"" не найдена в базе'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                   
                Иначе
                    Сообщить(Строка(Счет) + НСтр("ru = '. Не заполнено ДоговорыКонтрагентов'"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецЕсли;   
                             
                             
                                                       //////страховой полис  ////
            Субконто1ColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, Субконто1ColNum).Value),Символ(160),""));
                Если ЗначениеЗаполнено(Субконто1ColNumValue) Тогда                           
                             
        Субконто1Value  = Справочники.РасходыБудущихПериодов.НайтиПоНаименованию(Субконто1ColNumValue); 
       
                                              /////// новый полис ///////////////
                   
                        спр = Справочники.РасходыБудущихПериодов.СоздатьЭлемент();
                        спр.Наименование = Субконто1ColNumValue ;
                        спр.СпособПризнанияРасходов = Перечисления.СпособыПризнанияРасходов.ПоКалендарнымДням;
                        спр.Сумма =  PolisAmountColNumValue;   // сумма полиса   
                        спр.ДатаНачалаСписания = ПолеВвода2; //Дата начала учета
                        спр.ДатаОкончанияСписания  = ПолеВвода3; //Дата окончания списания
                        спр.СчетБУ = ПланыСчетов.Хозрасчетный.НайтиПоКоду(CreditColNumValue);
                        спр.СубконтоБУ1 = Справочники.ОсновныеСредства.НайтиПоКоду(ОсновныеСредстваColNumValue);     //ОсновныеСредства
                        спр.СубконтоБУ2 = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(ПодразделенияОрганизацийColNumValue);  //ПодразделенияОрганизаций
                        спр.СубконтоБУ3 = Справочники.СтатьиЗатрат.НайтиПоКоду("000000134");                  //СтатьиЗатрат   
                       
                          спр.Записать();
                                                                           
                    Сообщить(НСтр("ru='полис ""'") + Строка(спр.Наименование ) + НСтр("ru='"" оформлен удачно!'"));
                                 
                    Субконто2Value  = Справочники.РасходыБудущихПериодов.НайтиПоКоду(спр.Код);
                                                                                                                                             
                   
                    Если Не ЗначениеЗаполнено(Субконто1Value)  Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. полис ""'") + Субконто1Value + НСтр("ru = '"" не найдена в базе.'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                                         
                        Продолжить;
                    КонецЕсли;
                   
                Иначе
                    Сообщить(Строка(Счет) + НСтр("ru = '. полис не заполнена'"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецЕсли;     
               
                    // Сумма документа
                Попытка
                    AmountColNumValue = Число(Excel.Sheets(Sheet).Cells(Счет,AmountColNum).Value);
                    Если Не ЗначениеЗаполнено(AmountColNumValue) Тогда
                        Сообщить(Строка(Счет) + НСтр("ru = '. Сумма не заполнена  ""'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                Исключение
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный формат указанной суммы '"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецПопытки;
           
            //    Курс документа
                Если ЗначениеЗаполнено(КурсColNum) Тогда
                    КурсColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, КурсColNum).Value),Символ(160),""));               
                КонецЕсли;               
       
               
             //Комментарий         
                DescriptionColNumValue = СокрЛП(СтрЗаменить(Строка(Excel.Sheets(Sheet).Cells(Счет, DescriptionColNum).Value),Символ(160),""));

                               
            /////////////////     Формирование документов ////////////////////////////////////////////
                                                                     
                впТекущийПользователь = глЗначениеПеременной("глТекущийПользователь");
               
     Если Doc = Неопределено Тогда
         Doc = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
     КонецЕсли;
     
                             
                Doc.ВидОперации  = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;               
                Doc.Дата =  КонецДня(DateColNumValue) - 61 ;               
                Doc.Контрагент = Справочники.Контрагенты.НайтиПоКоду(ContrColNumValue);               
                Doc.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(ContractColNumValue);
                Doc.ВалютаДокумента =   Справочники.Валюты.НайтиПоНаименованию(Doc.ДоговорКонтрагента.ВалютаВзаиморасчетов.Наименование);
                Валюта = ОМОбщегоНазначения.ПолучитьКурсВалюты(Doc.ВалютаДокумента, Doc.Дата );         
                Doc.WS = false;                               
                Doc.СпособЗачетаАвансов =  Перечисления.СпособыЗачетаАвансов.НеЗачитывать;                 
                Doc.Организация = PrimaryOrgan;                 
                Doc.СуммаДокумента = AmountColNumValue;                           
                Doc.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("3190.7");
                Doc.Ответственный =  впТекущийПользователь;
                Doc.Комментарий =  DescriptionColNumValue;
                Doc.УчитыватьНДС = Истина;
               
                //Если в файле указан специальный курс обмена, то в транзакциях будет выбран этот курс
                Если КурсColNumValue = "" Тогда                 
                Doc.КурсВзаиморасчетов = Валюта.Курс;
                 Иначе
                Doc.КурсВзаиморасчетов = КурсColNumValue;
            КонецЕсли;                 
                Doc.КратностьВзаиморасчетов = 1;                 
       
                   
           
            Попытка   
                Если  Doc.ВалютаДокумента  <> Справочники.Валюты.НайтиПоКоду("981")  и 
                 КурсColNumValue  = "1"   Тогда
               
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный курс ""'"), СтатусСообщения.Важное);
                        Счет = Счет + 1;
                        Продолжить;
                    КонецЕсли;
                Исключение
                    Сообщить(Строка(Счет) + НСтр("ru = '. Неверный курс '"), СтатусСообщения.Важное);
                    Счет = Счет + 1;
                    Продолжить;
                КонецПопытки; 
           

       

     
               
                   /////////////////////////////// Табличная часть //////////////////////////////////////////
                         
                 Doc.Услуги.Добавить();
                 НовыыйТабДолга = Doc.Услуги[0];                 
                 НовыыйТабДолга.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("1710.01");                           
                 НовыыйТабДолга.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Содержание  =  Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Количество =  1; //1;           
                 НовыыйТабДолга.Сумма =  AmountColNumValue;                   
                 НовыыйТабДолга.Цена =   AmountColNumValue;     
                 НовыыйТабДолга.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НайтиПоКоду("3340.01");
                 НовыыйТабДолга.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;                                                     
                 НовыыйТабДолга.Субконто1 = Субконто2Value; // Справочники.РасходыБудущихПериодов.НайтиПоКоду(Субконто1Value.Код);
                 НовыыйТабДолга.Субконто2 = Справочники.Субконто.НайтиПоНаименованию(ПолеВвода1);         //Субконто;             

              Счет = Счет + 1;   
             
    КонецЦикла;
       
  Если Doc <> Неопределено Тогда
                  Doc.Записать();
КонецЕсли;


               
            //    Попытка
            //         Doc.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
            //       
            //        Сообщить(НСтр("ru='Документ ""'") + Строка(Doc.Ссылка) + НСтр("ru='"" оформлен удачно!'"));
            //    Исключение
            //        Сообщить(ОписаниеОшибки());
            //    КонецПопытки;

            //КонецЕсли;
            //
           
           
           
           
           
        КонецЕсли;
       
        Excel.Quit();   
   

     Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
 

КонецФункции

Теги:

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

Рейтинг@Mail.ru

Поиск