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

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

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

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

Максим75

Gio, ну в коде где-то не доходит до ввода новой строки в документ.
Сообщить вставьте вот прямо перед созданием новой строки в документе и посмотрите, сколько раз вывод будет. у Вас много продолжить стоит в коде, видимо какое-то срабатывает всегда, кроме последней строки.

Gio

Короче говоря, я попробовал все. когда я пытаюсь записать документ до "КонецЦикла" , Все записи указанные в Excel, создаются в отдельном документе и  когда я записать документ после цикла,(как LexaK мне посоветовал ) там создано только одно последняя запись из Excel.

Вот такой результат  :( 

LexaK

, вставьте код процедуры, где вы записываете документ ПОСЛЕ цикла
если помогло нажмите: Спасибо!

Gio

LexaK, здравствуйте, в этом случае создаются в отдельном документе.
Функция LoadExcel()
   
    Если CheckExcelValues() Тогда
        Попытка
            Excel = Новый  COMОбъект("Excel.Application");
            стр = 1;
        Исключение
            Сообщить(НСтр("ru='Не удалось загрузить файл'"));
            стр = 0;
            Возврат Ложь;
        КонецПопытки;
       
        Попытка
            Excel.Workbooks.Open(FileName);
       
        Исключение
            стр = 0;
            Сообщить(ОписаниеОшибки());
            Excel.Quit();
            Возврат Ложь;
        КонецПопытки;
       
       
        Если стр = 1 Тогда
           
            PrimaryOrgan = глЗначениеПеременной("ОсновнаяОрганизация");           
            Счет = StartingRow;       
            Пока 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.УчитыватьНДС = Истина;
               
               
                   /////////////////////////////// Табличная часть //////////////////////////////////////////
                                         
                 Doc.Услуги.Добавить();
                 НовыыйТабДолга = Doc.Услуги[0];                 
                 НовыыйТабДолга.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("1710.01");                           
                 НовыыйТабДолга.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Содержание  =  Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Количество =  1; //1;           
                 НовыыйТабДолга.Сумма =  AmountColNumValue;                   
                 НовыыйТабДолга.Цена =   AmountColNumValue;     
                 НовыыйТабДолга.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НайтиПоКоду("3340.01");
                 НовыыйТабДолга.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;                                                     
                 НовыыйТабДолга.Субконто1 = Субконто2Value; // Справочники.РасходыБудущихПериодов.НайтиПоКоду(Субконто1Value.Код);
                 НовыыйТабДолга.Субконто2 = Справочники.Субконто.НайтиПоНаименованию(ПолеВвода1);         //Субконто                 
                 
                                       
                Попытка
                        Doc.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
                   
                    Сообщить(НСтр("ru='Документ ""'") + Строка(Doc.Ссылка) + НСтр("ru='"" оформлен удачно!'"));
                Исключение
                    Сообщить(ОписаниеОшибки());
                КонецПопытки;
                   
               
                           
                Счет = Счет + 1;
                 
            КонецЦикла;
           
        КонецЕсли;
       
        Excel.Quit();   
   

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

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

как вы мне сказал, там создано только одно последняя запись из Excel. (после цикла)

/////////////////     Формирование документов ////////////////////////////////////////////
            Если 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.УчитыватьНДС = Истина;
            Иначе 
                Doc.СуммаДокумента = Doc.СуммаДокумента  + AmountColNumValue;                           
            КонецЕсли;   
               
                   /////////////////////////////// Табличная часть //////////////////////////////////////////
                                         
                 
                 НовыыйТабДолга = Doc.Услуги.Добавить(); //Doc.Услуги[0];                 
                 
                 НовыыйТабДолга.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("1710.01");                           
                 НовыыйТабДолга.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Содержание  =  Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Количество =  1; //1;           
                 НовыыйТабДолга.Сумма =  AmountColNumValue;                   
                 НовыыйТабДолга.Цена =   AmountColNumValue;     
                 НовыыйТабДолга.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НайтиПоКоду("3340.01");
                 НовыыйТабДолга.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;                                                     
                 НовыыйТабДолга.Субконто1 = Субконто2Value; // Справочники.РасходыБудущихПериодов.НайтиПоКоду(Субконто1Value.Код);
                 НовыыйТабДолга.Субконто2 = Справочники.Субконто.НайтиПоНаименованию(ПолеВвода1);         //Субконто                 
                 
                                         
                Счет = Счет + 1;
                 
            КонецЦикла;
           
            //Одна запись после цикла
            Если Doc <> Неопределено Тогда                                                                     
                Попытка
                     Doc.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
                   
                    Сообщить(НСтр("ru='Документ ""'") + Строка(Doc.Ссылка) + НСтр("ru='"" оформлен удачно!'"));
                Исключение
                    Сообщить(ОписаниеОшибки());
                КонецПопытки;

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

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

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

Максим75

Gio, а дайте ка еще раз весь код, у меня есть подозрение, что Вы не там присваиваете 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;       
            Пока 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.УчитыватьНДС = Истина;
               
               
                   /////////////////////////////// Табличная часть //////////////////////////////////////////
                                         
                 Doc.Услуги.Добавить();
                 НовыыйТабДолга = Doc.Услуги[0];                 
                 НовыыйТабДолга.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("1710.01");                           
                 НовыыйТабДолга.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Содержание  =  Справочники.Номенклатура.НайтиПоКоду("000000000089");
                 НовыыйТабДолга.Количество =  1; //1;           
                 НовыыйТабДолга.Сумма =  AmountColNumValue;                   
                 НовыыйТабДолга.Цена =   AmountColNumValue;     
                 НовыыйТабДолга.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НайтиПоКоду("3340.01");
                 НовыыйТабДолга.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;                                                     
                 НовыыйТабДолга.Субконто1 = Субконто2Value; // Справочники.РасходыБудущихПериодов.НайтиПоКоду(Субконто1Value.Код);
                 НовыыйТабДолга.Субконто2 = Справочники.Субконто.НайтиПоНаименованию(ПолеВвода1);         //Субконто                 
                 
                                       
                Попытка
                        Doc.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
                   
                    Сообщить(НСтр("ru='Документ ""'") + Строка(Doc.Ссылка) + НСтр("ru='"" оформлен удачно!'"));
                Исключение
                    Сообщить(ОписаниеОшибки());
                КонецПопытки;
                   
               
                           
                Счет = Счет + 1;
                 
            КонецЦикла;
           
        КонецЕсли;
       
        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 =  ДиалогОткрытияФайла.ПолноеИмяФайла;
    КонецЕсли;
   
КонецПроцедуры

Максим75

Gio, и здесь создает несколько документов, так?
Вам же давали вариант, чтобы один документ делался.

Afinogen

А вы саму процедуру проведения документа не смотрели? Может у вас проблема не в обработке экселя а в самом документе. Поставьте точку останова на строке где вы делаете запись документа и проверьте что у вас заполнилось ДО проведения.

Gio

Цитата: Максим75 от 12 ноя 2024, 20:14Gio, и здесь создает несколько документов, так?  - Да
Вам же давали вариант, чтобы один документ делался.  - (Я отправляю вам результат для этого варианта)
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

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

Максим75

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

У Вас в этом варианте нет проверки на то, создан уже документ или нет, создается всегда новый,
вот здесь - Doc = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
и не понимаю, как с таким кодом у Вас создается несколько документов? по коду у Вас должен создаться один документ с самой последней строкой из екселя, потому как Вы документ пишите один раз после цикла обхода строк екселя.

Вам же вроде немного не так предлагали сделать.
Перед циклом Doc=Неопределено сделать, потом при создании документа проверить и создавать документ только когда он равен Неопределено.

Теги:

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

Рейтинг@Mail.ru

Поиск