
- •Введение
- •Постановка задачи
- •Обзор аналогов
- •1С:Предприятие 8. Pdm
- •Основные сведения о программе «1с:Предприятие»
- •Платформа и конфигурации
- •Язык программирования 1с
- •Типы документов в «компас-3d»
- •Проект системы
- •Описание и структурная схема системы
- •Модель работы с базой данных
- •Взаимодействие программ «1с:Предприятие» и «ms Excel»
- •Основные бизнес-сущности и принципы проектирования приложений с их использованием.
- •Проектирование с использованием справочников
- •Основная информация о справочниках
- •Структура справочника
- •Формы справочника
- •Описание работы с документами
- •Описание работы с регистрами накопления
- •Описание работы с отчетами
- •Описание работы программы
- •Тестирование
- •Заключение
- •Список использованных источников
- •Приложение а (справочное) Листинг модуля обработки
Тестирование
Тест 1.
Входные данные: пустой файл Excel.
Результат теста: программа выдала сообщение о том, что запрашиваемые поля не найдены, то есть файл пустой.
Тест 2.
Входные данные: файл Excel с некорректными данными в виде наборов символов.
Результат теста представлен на рисунке 9.1.
Рисунок 9.1 — Тест 2
При наличии некорректных данных в файле Excel, программа выдает сообщение о невозможности выполнения операции. При этом программа не прибегает к аварийному закрытию.
Тест 3.
Входные данные: файл Excel с 11111 строками.
Результат теста представлен на рисунке 9.2.
Рисунок 9.2 — Тест 3
При загрузке информации из файла, программа не реагировала на действия пользователя 3 минуты.
Примечание: время работы программы зависит от производительности компьютера.
Тест 4.
Входные данные: файл Excel с 1101 строкой.
Результат тестирования представлен на рисунке 9.3.
Рисунок 9.3 — Тест 4
При загрузке данных было произведено удаление файла Excel. При этом вся информация загрузилась без ошибок и аварийных выходов.
Заключение
В результате выполнения курсового проекта была разработана конфигурация, позволяющая удобно вести учет затрат на производство.
Данная конфигурация способна быстро загрузить информацию из выходных файлов «КОМПАС-3D», представить ее в виде удобного списка составляющих элементов, сопоставить элементам их цену, если он существует в базе и посчитать себестоимость изготовленной сборки.
Данный продукт может быть использован на предприятиях занимающихся конструированием или проектированием различных деталей, сборочных единиц и комплексов.
Внедрение данного продукта в типовую конфигурацию «1С:Бухгалтерия» повысит его практическую значимость.
Список использованных источников
PDM-система – Википедия. [Электронный ресурс]. URL: http://ru.wikipedia.org/wiki/PDM (дата обращения 10.03.2014).
«1С:Предприятие» – Википедия. [Электронный ресурс]. URL: http://ru.wikipedia.org/wiki/1С:Предприятие (дата обращения 20.03.2014).
М. Г. Радченко 1С:Предприятие 8.2 практическое пособие разработчика». Издательство: ООО «1С-Паблишинг», Москва 2009. – 874 с.
Разработка нетиповых решений – Аудит софт. [Электронный ресурс]. URL: http://www.auditsoft.com.ua/services/view/4 (дата обращения 20.03.2014).
Встроенный язык программирования «1С:Предприятие» – Википедия. [Электронный ресурс]. URL: http://ru.wikipedia.org/wiki/Встроенный_язык_программирования_1С:Предприятие (дата обращения 10.04.2014).
Общие сведения о САПР КОМПАС-3D. Типы документов – MySapr. [Электронный ресурс]. URL: http://mysapr.com/pages/1_obschie_svedeniya_o_kompas.php (дата обращения 15.03.2014).
Интеграция с другими системами – 1С:Предприятие 8. [Электронный ресурс]. URL: http://www.v8.1c.ru/overview/integration.htm (дата обращения 15.03.2014).
Приложение а (справочное) Листинг модуля обработки
&НаКлиенте
Процедура ЗагрузитьИзФайла(Команда)
Перем _имяФайла, _полноеИмяФайла;
// Выбор файла через диалоговое окно
ВыбратьФайл(_имяФайла, _полноеИмяФайла);
// Выгрузка интересующих колонок из Excel в таблицу значений
ЗагрузитьИзExcel(_полноеИмяФайла);
ПодсчитатьИтоговуюСумму();
Объект.Наименование = _имяФайла;
КонецПроцедуры
// Вернуть из справочников элемент по наименованию
Функция ВернутьИзСправочника(_наименование)
// Просматриваем справочник Болты
_элементСправочника= Справочники.Болты.НайтиПоНаименованию(_наименование);
Если _элементСправочника <> Справочники.Болты.ПустаяСсылка() Тогда
Возврат _элементСправочника;
КонецЕсли;
// Просматриваем справочник Гайки
_элементСправочника= Справочники.Гайки.НайтиПоНаименованию(_наименование);
Если _элементСправочника <> Справочники.Гайки.ПустаяСсылка() Тогда
Возврат _элементСправочника;
КонецЕсли;
// Если ничего не нашли возвращаем Неопределено
Возврат Неопределено;
КонецФункции
// Вернуть цену детали из справочника если она имеется
Функция ВернутьЦену(_наименование)
_элементСправочника = ВернутьИзСправочника(_наименование);
// Если поле «Цена» запонено, то возвращаем её
Если _элементСправочника <> Неопределено Тогда
Возврат _элементСправочника.Цена;
КонецЕсли;
Возврат Неопределено;
КонецФункции
// Добавляем в табличную часть элемент из сборки
Процедура ДобавитьВТабличнуюЧасть(_наименование, _количество)
// СоставляющиеЭлементы - название табличной части
_объектТаблЧасти = Объект.СоставляющиеЭлементы.Добавить();
_объектТаблЧасти.Наименование = _наименование;
_объектТаблЧасти.Количество = _количество;
// Если в справочнике указана цена детали, то записываем ее
// и пожсчитываем сумму
_цена = ВернутьЦену(_наименование);
Если (_цена <> Неопределено) Тогда
_объектТаблЧасти.Цена = _цена;
_объектТаблЧасти.Сумма = _цена * _количество;
КонецЕсли;
КонецПроцедуры
Процедура ПодсчитатьИтоговуюСумму()
Объект.Сумма = Объект.СоставляющиеЭлементы.Итог(«Сумма»);
// Проверяем все ли поля заполнены
Для Каждого _строка Из Объект.СоставляющиеЭлементы Цикл
Если НЕ ЗначениеЗаполнено(_строка.Сумма) Тогда
Сообщить(«Внимание!! Не все поля колонки 'Сумма' заполнены!»);
//ПолнотаЗаполнения.Видимость = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗагрузитьИзExcel(_полноеИмяФайла)
_таблЗначений = Excel_ПолучитьДанные_COM(_полноеИмяФайла, «Лист1»);
// Достаем из таблицы (из Excel) наименования деталей и их количество
Для Каждого _строка Из _таблЗначений Цикл
Если (_строка.К6 <> Неопределено) И (_строка.К6 <> «Количество») Тогда
ДобавитьВТабличнуюЧасть(_строка.К5, _строка.К6);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьФайл(_имяФайла, _полноеИмяФайла) Экспорт
_диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
_диалог.Фильтр = «*.xlsx|*.xls»;
Если _диалог.Выбрать() Тогда
_имяФайла = СтрЗаменить(_диалог.ПолноеИмяФайла,_диалог.Каталог,'''');
_имяФайла = СтрЗаменить(_имяФайла, ''.xls'', '''');
_полноеИмяФайла = _диалог.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
Функция Excel_ПолучитьДанные_COM(пФайл, пЛист, СтруктураКолонок = Неопределено, Знач НачСтрока = 0, Знач КонСтрока = 0, XLSОбъект = Неопределено) Экспорт
#Если Клиент Тогда
Состояние(''Открытие Excel'');
#КонецЕсли
Если XLSОбъект = Неопределено Тогда
XLSОбъект = Новый COMОбъект(«Excel.Application»);
XLSОбъект.Visible = Ложь;
XLSОбъект.DisplayAlerts = Ложь;
КонецЕсли;
Попытка
Book = XLSОбъект.Workbooks.Open(пФайл, , Истина);
Исключение
Сообщить (''Проблемы с подключением к Excel'' );
Возврат Неопределено;
КонецПопытки;
Лист = Book.Sheets(1);
КолвоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
КолвоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Таблица = Новый ТаблицаЗначений;
Если СтруктураКолонок = Неопределено Тогда
Для Счетчик = 1 По КолвоКолонок Цикл
Колонка = Таблица.Колонки.Добавить(«К» + Счетчик);
КонецЦикла;
Иначе
Для каждого КлючИЗначение Из СтруктураКолонок Цикл
Колонка = Таблица.Колонки.Добавить(КлючИЗначение.Ключ);
КонецЦикла;
КонецЕсли;
НачСтрока = ?(НачСтрока = 0, 1, НачСтрока);
КонСтрока = ?(КонСтрока = 0, КолвоСтрок, КонСтрока);
КонСтрока = Мин(КонСтрока, КолвоСтрок);
Для НомерСтроки = НачСтрока По КонСтрока Цикл
#Если Клиент Тогда
Состояние(«Чтение файла: « + Формат(НомерСтроки) + « из « + Формат(КонСтрока));
ОбработкаПрерыванияПользователя();
#КонецЕсли
НоваяСтрока = Таблица.Добавить();
Если СтруктураКолонок = Неопределено Тогда
Для НомерКолонки = 1 По КолвоКолонок Цикл
Поле = Лист.Cells(НомерСтроки, НомерКолонки);
НоваяСтрока[«К» + Формат(НомерКолонки, «ЧГ=0»)] = Поле.Value;
КонецЦикла;
Иначе
Для каждого КлючИЗначение Из СтруктураКолонок Цикл
Поле = Лист.Cells(НомерСтроки, КлючИЗначение.Значение);
НоваяСтрока[КлючИЗначение.Ключ] = Поле.Value;
КонецЦикла;
КонецЕсли;
КонецЦикла;
XLSОбъект.Application.Quit();
Возврат Таблица;
КонецФункции
Томск 2014