Подсистема импорта калькуляций
Материал из MediaWiki
Содержание
Назначение
Импорт калькуляционных карт предназначен для полуавтоматизированного ввода калькуляционных карт из файлов Excel, OpenOffice, DBF, TXT. Позволяет совместить начальный ввод справочника Номенклатура и калькуляционных карт. Может использоваться также, как механизм обмена с внешними программными продуктами.
Структура
Структурная схема обмена представлена ниже. Основными блоками являются:
- Файл с данными (в форматах: Excel, OpenOffice, DBF, TXT)
- Регистр сведений Соответствия Составов Калькуляций
- Общая форма Форма загрузки калькуляций
- Документ Заказ на производство
- Справочник Калькуляционные карты сборка
Алгоритм импорта и его реализация
- В общем модуле КлиентВСВ определить процедуру ИмпортироватьКалькуляционнуюКарту(ФормаВладелец), в которой будет открываться общая форма Форма загрузки калькуляции, которой в параметрах будет передаваться ФормаВладелец
- Из формы элемента справочника Калькуляционные карты сборка, или формы документа Заказ на производство сделать вызов: КлиентВСВ.ИмпортироватьКалькуляционнуюКарту(Элементы.ИмяТабличнойЧастиВКоторуюБудетПроизводитьсяИмпорт)
- Сделать недоступной кнопку Импорт
- Чтение данных файла в таблицу значений.
- При этом должны быть указаны параметры для получения возможности структуризации информации, т.е. Разделители полей, строк, и т.п..
- Должны быть указаны номера колонок для:
- Кода (0 - не использовать)
- Артикула (0 - не использовать)
- Штрихкода (0 - не использовать)
- Наименования (пустая строка - не использовать)
- Количества (должно быть отлично от нуля)
- Могут быть указаны номер начальной и конечной строки
- Определение соответствий
- Для определения соответствий необходимо в общей форме Форма загрузки калькуляции необходимо:
- Определить ключ поиска в регистре Соответствия Составов Калькуляций. Ключем поиска будет набор полей, для которых указан номер колонки. (т.е. если номера колонок указаны для Кода и Штрих кода, при сравнении записей должны совпадать Код и Штрихкод одновременно.)
- Найти соответствия в регистре Соответствия Составов Калькуляций.
- Для определения соответствий необходимо в общей форме Форма загрузки калькуляции необходимо:
- Если в таблице соответствий указаны все соответствия - сделать доступной кнопку Импорт
- После нажатия кнопки импорт таблица соответствий должна быть преобразована в массив структур с полями соответствующими колонкам таблицы.
- Вызвать функцию ОповеститьОВыборе для передачи в форму владельца таблицы-результата
- В общем модуле СерверВСВ определить процедуру ПреобразоватьМассивСтруктурВТаблицуЗначений(МассивСтруктур), которая будет возвращать таблицу значений вместо массива структур, который передается ей в параметре МассивСтруктур. Типы колонок будут определяться типом значений, которые находятся в структуре нулевого элемента массива. Если массив
пуст - будет возвращено значение Неопределено
- В модуле менеджера регистра сведений Штрихкоды номенклатуры определить процедуру ДобавитьШтрихКоды(ТаблицаЗначенийСоШтрихкодами, ПерезаписыватьСуществующие), которая получает на вход таблицу значений с колонками: Штрихкод и Номенклатура. Если таких колонок не найдено - возврат. После этого она будет добавлять только те штрихкоды, которых нет в регистре, если параметр ПерезаписыватьСуществующие равен Ложь, и заменять номенклатуру в существующих, если параметр ПерезаписыватьСуществующие равен Истина
- В вызывающей определить обработчик события ОбработкаВыбора, сделать вызов:
Процедура ОбработкаВыбораСостав(РезультатВыбора,ИсточникВыбора)
- Данные = СерверВСВ.ПреобразоватьМассивСтруктурВТаблицуЗначений(РезультатВыбора);
- Если ТипЗнч(Данные) = Тип("ТаблицаЗначений") Тогда
- РегистрыСведений.ШтрихКодыНоменклатурыВСВ.ДобавитьШтрихКоды(Данные, Ложь);
- КонецЕсли;
КонецПроцедуры
Документы и справочники системы
Данная подсистема может быть использована в следующих документах и справочниках: документ Заказ на производство, документ Отчет о выполненных работах. справочник Калькуляционные карты сборка