![]() |
|
Внешняя обработка. | ☑ | ||
---|---|---|---|---|
0
dos
02.12.18
✎
22:07
|
Помогите плиз начинающему или подскажите ход действий как сделать надо. Есть задание:Создать внешнюю обработку в базе которая будет выводить в табличном документе 1С (через макет) остаток количества и счет по заданному товару (из *.xls) на определенную дату.
Документ *.xls: В 1 колонку с 1 строки. Содержимое - "КодТовара". Форма: -Поле выбора файла *.xls; -дата; -кнопка. Заранее спасибо огромное. |
|||
1
Полбатона
02.12.18
✎
22:10
|
Это задание на собеседование?
|
|||
2
dos
02.12.18
✎
22:11
|
Тут просто печатную форму надо сделать?
|
|||
3
dos
02.12.18
✎
22:11
|
Нет...
|
|||
4
dos
02.12.18
✎
22:14
|
Я с начало сделал процедуру которая считывает данные из Excel...через con объекты Вроде работает что то выводит. Но вот как связать остальное я хз
|
|||
5
dos
02.12.18
✎
22:17
|
Как привязать чтобы в макете выводилось? Одно дело из справочника или документа это сделать понятно как. А из Excel не ясно как.
|
|||
6
hhhh
02.12.18
✎
22:39
|
(5) ну, ничем не отличается. Что из справочника берешь данные, что из excel. Главное, что у тебя эти данные есть. На втором этапе выводишь их в макет.
|
|||
7
dos
03.12.18
✎
11:57
|
как сделать выбор сортировки по дате?
Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка) ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбора.Заголовок = "Выберите файл"; Если ДиалогВыбора.Выбрать() Тогда ИмяФайла = ДиалогВыбора.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры Процедура ПрочитатьНажатие(Элемент) Таблица.Очистить(); Таблица.Колонки.Очистить(); ЭлементыФормы.Таблица.Колонки.Очистить(); Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ИмяФайла); Состояние("Обработка файла Microsoft Excel..."); Исключение Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!"); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Попытка Excel.Sheets(1).Select(); Исключение Excel.ActiveWorkbook.Close(); Excel = 0; Сообщить("Файл "+Строка(ИмяФайла)+" не соответствует необходимому формату! Первый лист не найден!"); ОтменитьТранзакцию(); Возврат; КонецПопытки; Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1); Если Версия = "8" тогда ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count; ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13); Иначе ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row; ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column; Конецесли; Сч = 1; Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл ИмяКолонки = Excel.Cells(1, Сч).Text; ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки); НоваяКолонка = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки); НоваяКолонка.Данные = ИмяБезПробелов; Сч = Сч + 1; КонецЦикла; Для НС = 2 по ФайлСтрок Цикл Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %"); ОбработкаПрерыванияПользователя(); НоваяСтрока = Таблица.Добавить(); Для НомерКолонки = 1 по Таблица.Колонки.Количество() Цикл ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text; ИмяКолонки = Таблица.Колонки[НомерКолонки-1].Имя; НоваяСтрока[ИмяКолонки] = ТекущееЗначение; КонецЦикла; КонецЦикла; КонецПроцедуры Функция ЗагрузитьExcelФайлВМассивЛистов(ИмяФайла, ЗНАЧ СоответствиеФильтраЛистов = Неопределено) Перем МассивЛистов; МассивЛистов = Новый Массив(); Эксель = New COMObject("Excel.Application"); Эксель.visible = false; Книга = Эксель.Workbooks.Open(ИмяФайла); Для НомерЛиста = 1 To Книга.Sheets.Count Цикл Лист = Книга.Sheets(НомерЛиста); ИмяЛиста = Лист.Name; Если СоответствиеФильтраЛистов <> Неопределено Тогда Если СоответствиеФильтраЛистов[НомерЛиста] = Неопределено И СоответствиеФильтраЛистов[ИмяЛиста] = Неопределено Тогда Продолжить; //Если лист грузить не надо КонецЕсли; КонецЕсли; КоличествоСтрок = Лист.UsedRange.Rows.Count; КоличествоКолонок = Лист.UsedRange.Columns.Count; Ячейки = Новый Массив(КоличествоСтрок, КоличествоКолонок); Для Строка = 1 По КоличествоСтрок Цикл Для Колонка = 1 По КоличествоКолонок Цикл Ячейки[Строка - 1][Колонка - 1] = Лист.Cells(Строка, Колонка).Value; КонецЦикла; КонецЦикла; СтруктураЛиста = Новый Структура(); СтруктураЛиста.Вставить("Строк", КоличествоСтрок); СтруктураЛиста.Вставить("Колонок", КоличествоКолонок); СтруктураЛиста.Вставить("Ячейки", Ячейки); СтруктураЛиста.Вставить("Номер", НомерЛиста); СтруктураЛиста.Вставить("Имя", ИмяЛиста); МассивЛистов.Добавить(СтруктураЛиста); КонецЦикла; Книга.Close(); Возврат МассивЛистов; КонецФункции |
|||
8
hhhh
03.12.18
✎
12:18
|
надо определиться какая из колонок у вас колонка даты.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |