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

Формирование Exsel-файла с определенными типами данных в ячейках

Автор Mrs.Смит, 05 дек 2012, 08:13

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

Mrs.Смит

Добрый день! Помогите, пожалуйста.
Суть такова. Клиенту необходимо сформировать прайс-лист по определенным параметрам в Exsel-файл.

Обработка работает таким образом.
1. Сначала вводиться фильтр, где определяются: номенклатура, вид цены и т.д.
2. Формируется таблица со значениями:Производитель, Строка(Артикул), Кол-во, Цена и Наименование.
3. Создается Exsel-файл по данным таблицы
Проблема: в самом Exsel-файле в колонке Артикул тип данных разнится, в основном текст, но там где артикул начинается на "0" - тип данных становиться "общий" и при поиске данные не находятся.
Подскажите, как решить проблему. Код прощедурки прилагаю:
Процедура СформироватьПрайс1(ТаблицаОтчета,ПараметрыЗапроса)
   ТаблицаОтчета.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Прайс_Лист";
   ТаблицаОтчета.АвтоМасштаб = Истина;
   ТаблицаОтчета.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
   
   Макет = ПолучитьМакет("Макет");
   
   Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
   КомпоновщикНастроекИзХранилища = ПолучитьИзВременногоХранилища(ПараметрыЗапроса.АдресСхемыВХранилище);

   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроекИзХранилища.Настройки);

   ТЕКСТЗАПРОСА = МакетКомпоновки.НаборыДанных.НаборДанных.Запрос;
   
   Запрос = Новый Запрос;   
   Запрос.Текст = ТЕКСТЗАПРОСА;
   
   Для Каждого ПараметрЗапроса Из МакетКомпоновки.ЗначенияПараметров Цикл
      Если Найти(ТЕКСТЗАПРОСА,"&"+ПараметрЗапроса.Имя) > 0 Тогда
         Запрос.УстановитьПараметр(ПараметрЗапроса.Имя, ПараметрЗапроса.Значение);
      КонецЕсли;
   КонецЦикла;
   
   РезультатЗапроса = Запрос.Выполнить();
   
   Если РезультатЗапроса.Пустой() Тогда
      Возврат;
   КонецЕсли;
   
   Выборка =  РезультатЗапроса.Выбрать();

   
   // Выводим шапку накладной.
   
   Секция = Макет.ПолучитьОбласть("Шапка");
   ТаблицаОтчета.Вывести(Секция);
   Секция = Макет.ПолучитьОбласть("Строка");
   Пока Выборка.Следующий() Цикл
   
      Секция.Параметры.Артикул = Строка(Выборка.Артикул);
      Секция.Параметры.Производитель = Выборка.Родитель;
      Секция.Параметры.Остаток = Выборка.Остаток; //ыборка.Резерв;
      Секция.Параметры.Цена     = Выборка.Цена;
      Секция.Параметры.Номенклатура = Выборка.Номенклатура;
      ТаблицаОтчета.Вывести(Секция);
   КонецЦикла;
   
   
   
КонецПроцедуры

Процедура ПодготовитьФайлыКОтправке(СписокФайлов, ТабличныеДокументы) Экспорт
   
   ИмяВременнойПапки = ПолучитьИмяВременногоФайла();
   СоздатьКаталог(ИмяВременнойПапки);
   
   Для Каждого Элемент Из ТабличныеДокументы Цикл
      ТабДок = Элемент.Значение;
      
      ИмяФайла = "CONOR "+ТекущаяДата()+".xls";
      
      ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла);
      
      ИмяВременногоФайла = ИмяВременнойПапки + "\" + ИмяФайла;
      
      ТабДок.Записать(ИмяВременногоФайла,ТипФайлаТабличногоДокумента.XLS97);
      
      ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
      ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
      СписокФайлов.Добавить(ПутьВоВременномХранилище, ИмяФайла);
      УдалитьФайлы(ИмяВременногоФайла);
   КонецЦикла;
   
   УдалитьФайлы(ИмяВременнойПапки);
         
КонецПроцедуры

Процедура СформироватьВложениеПрайса(Команда)
   
   СформироватьВложениеПрайсаСервер();
   
   Элементы.Закладки.ТекущаяСтраница = Элементы.Закладки.ПодчиненныеЭлементы.Рассылка;
   
   ОбновитьПредставлениеВложений();
      
КонецПроцедуры

Процедура СформироватьВложениеПрайсаСервер()
   
   ТабличныеДокументы = Новый СписокЗначений;
    ТабличныеДокументы.Добавить(ТаблицаОтчета);
   
   СписокВложений = Новый СписокЗначений;

   РеквизитФормыВЗначение("Отчет").ПодготовитьФайлыКОтправке(СписокВложений, ТабличныеДокументы);

   ВложенияВПисьмо = СписокВложений;
   
   // помечаем те вложения, которые являются путями к файлам на клиенте
   Для Каждого ОписаниеВложение из ВложенияВПисьмо Цикл
      Если ТипЗнч(ОписаниеВложение.Значение) = Тип("Строка") Тогда
         Если ЭтоАдресВременногоХранилища(ОписаниеВложение.Значение) Тогда
            ОписаниеВложение.Значение = ПолучитьИзВременногоХранилища(ОписаниеВложение.Значение);
         Иначе
            ОписаниеВложение.Пометка = Истина; // Это путь к файлу в локальной файловой системе
         КонецЕсли;
      КонецЕсли;
   КонецЦикла;
   
КонецПроцедуры

Mrs.Смит

Может, кто сталкивался с обработкой
SubSys: Многофункциональная загрузка в 1С из Excel прайсов, цен, номенклатуры, документов для 1С УТ11 (Управление торговлей 11)
Добавлено: 05 дек 2012, 14:34


Все! Вопрос снят!!! Сделала :zebzdr:

Как закрыть или удалить тему?

Dethmontt

Цитата: Mrs.Смит от 05 дек 2012, 08:13Проблема: в самом Exsel-файле в колонке Артикул тип данных разнится, в основном текст, но там где артикул начинается на "0" - тип данных становиться "общий" и при поиске данные не находятся.
Лучше поделитесь как решили проблему...
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск