|
8.1 как из экселя в ТабЧ перенести строки и упорядочить? | ☑ | ||
---|---|---|---|---|
0
Artemy55
01.09.15
✎
07:29
|
Добрый день.
Как примерно в 8.1 перенести из экселя строки во временную таблицу, упорядочить и потом разнести в разные таб.части нескольких документов. |
|||
1
Maniac
01.09.15
✎
07:30
|
Помочь с платной разработкой?
|
|||
2
Maniac
01.09.15
✎
07:30
|
а что разнести то? И зачем.
|
|||
3
Cube
01.09.15
✎
07:30
|
(0) Вот здесь http://www.forum.mista.ru/find.php напиши то же самое и нажми "Найти".
|
|||
7
Maniac
01.09.15
✎
07:37
|
(0)
1) Выгружаешь ТЗ где все данные во временную таблицу. Объект.ОбработкаЗаказаПокупателя.Сортировать("Поле_Контрагент,Размещение,КлючСтроки"); ТаблицаРазделения = Объект.ОбработкаЗаказаПокупателя.Выгрузить(); 2) Сворачиваешь ее по ключевым полям по которым делаешь разделение ТаблицаРазделения.Свернуть("Поле_Контрагент"); 3) теперь бежишь циклом по ТЗ с ключевыми полями. Получаешь значения строки и используешь Отбор и НайтиСтроки из всей общей таблицы где все данные. Для Каждого Шапка Из ТаблицаРазделения Цикл ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Поле_Контрагент", Шапка.Поле_Контрагент); ТаблЧасть = Объект.ОбработкаЗаказаПокупателя.НайтиСтроки(ПараметрыОтбора); 4) в этом цикле создаешь документ а табличную часть заполняешь из полученных данных ТаблЧасть = Объект.ОбработкаЗаказаПокупателя.НайтиСтроки(ПараметрыОтбора); |
|||
8
Maniac
01.09.15
✎
07:39
|
Полная функция которая создает массив документов из одной большой таблицы, в которой например нужно создать множество документов по колонке Контрагент.
Могут быть и множество полей по которым создавать больше документов. Для этого просто сворачиваешь общую таблицы по большему количеству полей и в методе НайтиСтроки используешь в отборе несколько ключевых полей. &НаСервере Функция мЗаказПокупателя() УстановитьПривилегированныйРежим(Истина); МассивДокументов = Новый Массив; Объект.ОбработкаЗаказаПокупателя.Сортировать("Поле_Контрагент,Размещение,КлючСтроки"); ТаблицаРазделения = Объект.ОбработкаЗаказаПокупателя.Выгрузить(); ТаблицаРазделения.Свернуть("Поле_Контрагент"); Для Каждого Шапка Из ТаблицаРазделения Цикл ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Поле_Контрагент", Шапка.Поле_Контрагент); ТаблЧасть = Объект.ОбработкаЗаказаПокупателя.НайтиСтроки(ПараметрыОтбора); НовыйДокумент = Документы.ЗаказКлиента.СоздатьДокумент(); НовыйДокумент.Дата = ДатаДокумента; Если ЗначениеЗаполнено(НомерДокумента) Тогда НовыйДокумент.Номер = НомерДокумента; КонецЕсли; НовыйДокумент.Комментарий = "Импорт из Excel "+Шапка.Поле_Контрагент; НовыйДокумент.Приоритет = Приоритет; НовыйДокумент.Статус = Статус; НовыйДокумент.Менеджер = Менеджер; НовыйДокумент.Организация = Организация; НовыйДокумент.Склад = ОсновнойСклад; НовыйДокумент.Подразделение = Подразделение; НовыйДокумент.ЖелаемаяДатаОтгрузки = ДатаОтгрузки; Если НЕ ЗначениеЗаполнено(Шапка.Поле_Контрагент) Тогда НовыйДокумент.Партнер = Объект.Партнер; Если ЗначениеЗаполнено(Объект.СоглашениеСКлиентом) Тогда НовыйДокумент.Соглашение = Объект.СоглашениеСКлиентом; НовыйДокумент.ЗаполнитьУсловияПродажПоCоглашению(); Иначе НовыйДокумент.ЗаполнитьУсловияПродажПоУмолчанию(); КонецЕсли; Иначе НайтиКонтрагента = Справочники.Контрагенты.НайтиПоНаименованию(Шапка.Поле_Контрагент); НовыйДокумент.Контрагент = НайтиКонтрагента.Ссылка; НовыйДокумент.ЗаполнитьУсловияПродажПоУмолчанию(); КонецЕсли; НовыйДокумент.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту; НеПересчитыватьСуммуЕслиНетЦены = Ложь; Для Каждого Стр из ТаблЧасть Цикл Если НЕ ЗначениеЗаполнено(Стр.Номенклатура) Тогда Продолжить; КонецЕсли; Если Стр.Количество = 0 Тогда Продолжить; КонецЕсли; СтрокаТЧ = НовыйДокумент.Товары.Добавить(); СТрокаТЧ.ВариантОбеспечения = ВариантОбеспечения; СтрокаТЧ.Номенклатура = Стр.Номенклатура; СтрокаТЧ.Характеристика = Стр.ХарактеристикаНоменклатуры; СтрокаТЧ.Упаковка = Стр.Упаковка; СтрокаТЧ.Количество = Стр.Количество; КоэффициентУпаковки = ПолучитьКоэффициентУпаковки(Стр.Упаковка); СтрокаТЧ.КоличествоУпаковок = Стр.Количество / КоэффициентУпаковки; СтрокаТЧ.ВидЦены = Объект.ВидЦенНоменклатурыПродажи; СтрокаТЧ.Склад = ?(ЗначениеЗаполнено(Стр.Размещение),Стр.Размещение,ОсновнойСклад); СтрокаТЧ.ДатаОтгрузки = ДатаОтгрузки; Если Стр.Поле_Сумма > 0 Тогда НеПересчитыватьСуммуЕслиНетЦены = Истина; СтрокаТЧ.Сумма = Стр.Поле_Сумма; СтрокаТЧ.Цена = Стр.Поле_Сумма/СтрокаТЧ.КоличествоУпаковок; Иначе СтрокаТЧ.Цена = Стр.Поле_ЦенаПродажи; СтрокаТЧ.Сумма = Стр.Поле_ЦенаПродажи*СтрокаТЧ.КоличествоУпаковок; КонецЕсли; КонецЦикла; СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(НовыйДокумент); СтруктураДействий = Новый Структура; СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", НовыйДокумент.НалогообложениеНДС); СтруктураДействий.Вставить("ЗаполнитьСодержание", ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(НовыйДокумент, Ложь)); СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц"); СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы); Если НЕ НеПересчитыватьСуммуЕслиНетЦены Тогда СтруктураДействий.Вставить("ПересчитатьСумму"); КонецЕсли; ОбработкаТабличнойЧастиСервер.ОбработатьТЧ(НовыйДокумент.Товары, СтруктураДействий,Неопределено); НовыйДокумент.ЗаполнитьЭтапыГрафикаОплаты(); НовыйДокумент.СуммаДокумента = НовыйДокумент.Товары.Итог("Сумма"); НовыйДокумент.Записать(); МассивДокументов.Добавить(НовыйДокумент.Ссылка); КонецЦикла; Возврат МассивДокументов; КонецФункции |
|||
10
aka AMIGO
модератор
01.09.15
✎
09:15
|
(9) реклама на Мисте платная.
|
|||
11
Vladal
модератор
01.09.15
✎
10:33
|
В тематике флуд запрещен.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |