Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Янв 2017, 10:56
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Обработка выгрузки в xls  (Прочитано 833 раз)

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

Оффлайн AlisaGuzel

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-01-27
  • Сайт: 
  • Профессия: Бухгалтер
Имеется внешняя обработка для создания xls файла (макет) для дальнейшей загрузки его в весы.
Как верно добавить дополнительное значение для выгрузки (именно характеристика номенклатуры) и привязать к определенному столбцу макета.
Спасибо. (не ругайте меня, я всего лишь бухгалтер с малыми навыками)

&НаКлиенте
Перем ЭлементОтбора;


&НаКлиенте
Процедура ФайлВыгрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   
   ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   
   ДиалогВыбора.Фильтр                      = "Текстовый файл (*.xlsx)|*.xlsx";
   ДиалогВыбора.Заголовок                   = "Выберите файл для выгрузки данных";
   ДиалогВыбора.ПредварительныйПросмотр     = Ложь;
   ДиалогВыбора.Расширение                  = "xlsx";
   ДиалогВыбора.ИндексФильтра               = 0;
   ДиалогВыбора.ПолноеИмяФайла              = ФайлВыгрузки;
   ДиалогВыбора.ПроверятьСуществованиеФайла = Ложь;
   
   Если ДиалогВыбора.Выбрать() Тогда
      ФайлВыгрузки = ДиалогВыбора.ПолноеИмяФайла;
   КонецЕсли;

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

&НаСервере
Функция ПолучитьДанныеПоТоварам()
   

   
   
   Запрос = Новый Запрос("ВЫБРАТЬ
                     |   КодыТоваровSKU.SKU,
                     |   КодыТоваровSKU.Номенклатура
                     |ИЗ
                     |   РегистрСведений.КодыТоваровSKU КАК КодыТоваровSKU");   
                     

   ТаблицаВыборка = Запрос.Выполнить().Выгрузить();                     
                     
   Для каждого Выборка из ТаблицаВыборка цикл
      НовСтр = Таблица.Добавить();
      НовСтр.SKU = Выборка.SKU;
      НовСтр.Номенклатура = Выборка.Номенклатура;
   КонецЦикла;
                     
КонецФункции


&НаКлиенте
Процедура Заполнить(Команда)
   
   ПолучитьДанныеПоТоварам();
   
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетНаСервере(ТЗ)
   
   //формируем табличный документ для дальнейшего сохранения в формате Excel
   ТабДокумент = Новый ТабличныйДокумент;
   Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
   
   ТабДокумент.Вывести(ОбластьШапка);
   Сч=0;
   
   Для каждого Стр из ТЗ цикл
      Сч = Сч+1;
      ОбластьСтрока.Параметры.Заполнить(Стр);
      ОбластьСтрока.Параметры.НомСтр       = Сч;
      ОбластьСтрока.Параметры.ТипТовара   = ?(Стр.Номенклатура.Весовой,1,2);
      
      НомерСимвола=40;
      Часть1=Лев(Стр.Номенклатура.Наименование,НомерСимвола);
      
      Поз=0;
      Счетчик=НомерСимвола;
      Пока Поз=0 Цикл
         Символ=Сред(Часть1,Счетчик,1);
         Если Символ=" " Тогда
            Поз=Счетчик;
         КонецЕсли;
         Счетчик=Счетчик-1;
         Если Счетчик=0 Тогда
            Прервать;
         КонецЕсли;   
      КонецЦикла;
      
      Если Поз>0 Тогда
         Часть1=Лев(Стр.Номенклатура.Наименование,Поз);
         Часть2=Прав(Стр.Номенклатура.Наименование,СтрДлина(Стр.Номенклатура.Наименование)-Поз);
      Иначе
         Часть1=СокрЛП(Стр.Номенклатура.Наименование);
         Часть2="";
      КонецЕсли;   
      
      ОбластьСтрока.Параметры.Номенклатура1 = Часть1;
      ОбластьСтрока.Параметры.Номенклатура2 = Часть2;
      ОбластьСтрока.Параметры.ФорматШК    = ?(Стр.Номенклатура.Весовой,"",2);
      Попытка
         Срок=Число(Стр.Номенклатура.Описание);
      Исключение
         Срок=0;
      КонецПопытки;   
      ОбластьСтрока.Параметры.СрокГодности=Срок;
      ТабДокумент.Вывести(ОбластьСтрока);
   КонецЦикла;
   
   //Элементы.Товары.ТекущаяСтрока = 1;
   //Пока Элементы.Товары.ТекущаяСтрока <> Неопределено цикл
   //   
   //   Сч = Сч+1;
   //   ОбластьСтрока.Параметры.Заполнить(Элементы.Товары.Текущиеданные);
   //   ОбластьСтрока.Параметры.НомСтр = Сч;
   //   ТабДокумент.Вывести(ОбластьСтрока);

   //   Элементы.Товары.ТекущаяСтрока = Элементы.Товары.ТекущаяСтрока + 1;
   //   
   //КонецЦикла;   
   
   Возврат ТабДокумент;
   
КонецФункции


&НаКлиенте
Процедура Выгрузить(Команда)
   
   ТаблицаДанных.Очистить();
   
   ТЗ = ТаблицаДанных;
   
   Элементы.Товары.ТекущаяСтрока = 1;
   Пока Элементы.Товары.ТекущаяСтрока <> Неопределено цикл
      
      НовСтр = ТЗ.Добавить();
      НовСтр.SKU = Элементы.Товары.Текущиеданные.SKU;
      НовСтр.Номенклатура = Элементы.Товары.Текущиеданные.Номенклатура;
      НовСтр.Цена = Элементы.Товары.Текущиеданные.Цена * 100;
      
      Элементы.Товары.ТекущаяСтрока = Элементы.Товары.ТекущаяСтрока + 1;
      
   КонецЦикла;   

   
   
   //получаем табличный документ и сохраняем его
   Макет = ПолучитьМакетНаСервере(ТЗ);
   Макет.Записать(ФайлВыгрузки, ТипФайлаТабличногоДокумента.XLSX);
   
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
                                          


Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2640
  • РЕПУТАЦИЯ: 318
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
вот поверте не кто даже вникать не будет
характиристики ето левое соедниение
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1095
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
1) надо смотреть регистр сведений КодыТоваровSKU, есть ли там характеристика
2) если вы бухгалтер, то позовите программиста 1С. Или вы сантехнику тоже сами чините? ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Или вы сантехнику тоже сами чините?

Да ладно сантехника... сантехника током не хреначит, а вот проводка - это даааааааа. :)


Теги: весы XLS 
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
155 Сообщений
alex0402
74 Сообщений
alexandr_ll
38 Сообщений
LexaK
31 Сообщений
crow1983
31 Сообщений
MuI_I_Ika MuI_I_Ika
26 Сообщений
sertak sertak
23 Сообщений
BuhRust
18 Сообщений
дфтын дфтын
17 Сообщений
Vzonder
16 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal