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

Обработка выгрузки в xls

Автор AlisaGuzel, 27 янв 2016, 16:19

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

AlisaGuzel

Имеется внешняя обработка для создания 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);
   
КонецПроцедуры

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

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

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

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

дфтын

вот поверте не кто даже вникать не будет
характиристики ето левое соедниение
Помог? Нажми - Спасибо :)
skype: Soprov1C

cska-fanat-kz

1) надо смотреть регистр сведений КодыТоваровSKU, есть ли там характеристика
2) если вы бухгалтер, то позовите программиста 1С. Или вы сантехнику тоже сами чините? ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Цитата: cska-fanat-kz от 28 янв 2016, 09:02Или вы сантехнику тоже сами чините?

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

Теги: весы XLS 

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

Рейтинг@Mail.ru

Поиск