В начало

Загрузка Услуг из CSV-файла в ТЗ

 

Листинг. Модуль формы внешней обработки

Функция ЗагрузитьУслуги_ИзВремФайла_вТЗ(Знач ИмяВременногоФайла)

           

            Текст = Новый ЧтениеТекста;

            Текст.Открыть(ИмяВременногоФайла, КодировкаТекста.ANSI);

            ТекСтрока = Текст.ПрочитатьСтроку();

           

            ВремяНачала = ТекущаяДата();

            НомерСтроки = 1;

           

            //=============================

            //Наименование колонок файла

            //=============================

            //Код услуги  

            //Наименование услуги       

            //Код поставщика услуги     

            //Поставщик услуги 

            //Тип услуги

            //Код типа услуги

           

            тзУсл = Новый ТаблицаЗначений;//Коды поставщиков услуг

            тзУсл.Колонки.Добавить("КодУслуги");//0

            тзУсл.Колонки.Добавить("НаименованиеУслуги");//1

            тзУсл.Колонки.Добавить("КодПоставщикаУслуги");//2

            тзУсл.Колонки.Добавить("ПоставщикУслуги");//3

            тзУсл.Колонки.Добавить("ТипУслуги");//4

            тзУсл.Колонки.Добавить("КодТипаУслуги");//5

           

            Пока ТекСтрока <> Неопределено Цикл

                       

                        ТекСтрока = Текст.ПрочитатьСтроку();

                        НомерСтроки = НомерСтроки + 1;

                        МассивСтроки = СтрРазделить(ТекСтрока, ";");

                       

                        Если МассивСтроки.Количество() < 6 Тогда   

                                   Сообщить("Строка: " + НомерСтроки + " - Число колонок в строке: " + МассивСтроки.Количество());

                                   Продолжить;               

                        КонецЕсли;

                       

                        Если НЕ ЗначениеЗаполнено(МассивСтроки[0]) Тогда

                                   Продолжить;

                        КонецЕсли;   

                                  

                        СтрокаТЗ = тзУсл.Добавить();   

                        СтрокаТЗ.КодУслуги = МассивСтроки[0];

                        СтрокаТЗ.НаименованиеУслуги = МассивСтроки[1];

                        СтрокаТЗ.КодПоставщикаУслуги = МассивСтроки[2];

                        СтрокаТЗ.ПоставщикУслуги = МассивСтроки[3];

                        СтрокаТЗ.ТипУслуги = МассивСтроки[4];

                        СтрокаТЗ.КодТипаУслуги = МассивСтроки[5];

                       

            КонецЦикла;//ТЗ

           

            ВремяОкончания = ТекущаяДата();

            Сообщить("Загрузка услуг, мин: " + (ВремяОкончания - ВремяНачала)/60 + Символы.ПС +

                                    "Прочитано строк: " + НомерСтроки); 

                       

            Если ЗначениеЗаполнено(тзУсл) Тогда

                        Возврат тзУсл;

            Иначе

                        Возврат Неопределено;

            КонецЕсли;   

                                                                                                         

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

 

&НаСервере

Процедура ЗагрузитьУслуги_НаСервере(Знач ДвоичныеДанныеФайла)

                                          

            ИмяВремФайлаНаСервере = ПолучитьИмяВременногоФайла("csv");

            ДвоичныеДанныеФайла.Записать(ИмяВремФайлаНаСервере);      

           

                        тзУслуги = ЗагрузитьУслуги_ИзВремФайла_вТЗ(ИмяВремФайлаНаСервере);

                       

                        Если ЗначениеЗаполнено(тзУслуги) Тогда

                                   ДобавитьУслугиИПоставщиковИзТЗ(тзУслуги);

                        КонецЕсли;   

                       

            УдалитьФайлы(ИмяВремФайлаНаСервере);

 

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

 

&НаКлиенте

Процедура ЗагрузкаУслугИПоставщиков(Команда)         

           

            Если НЕ ЗначениеЗаполнено(ЭтотОбъект.ФайлСУслугами) И

                         НЕ ЗначениеЗаполнено(ЭтотОбъект.ПоставщикУслугУК) Тогда

                        Сообщить("Не заполнены обязательные поля!");

                        Возврат;

            КонецЕсли;

           

            //При переходе с клиента на сервер

            //или имя файл Иксель не виден

            //или имя временного файла другое

            дд = Новый ДвоичныеДанные(ЭтотОбъект.ФайлСУслугами);

            ЗагрузитьУслуги_НаСервере(дд);

 

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