Выгрузка-загрузка для терминала сбора данных OPTICON PHL OPN 2001
Обработка написана под платформу 1c v8.x v7.7 Драйвер для Opticon и внешняя обработка ert и epfКАК УСТАНОВИТЬ ДРАЙВЕР
скачать по ссылке http://old.opticon.com/uploads/Software/USB/Drivers/Installer.exe или выбрать продукт из Opticon Software Download и скачать необходимое
ПРОЧИТАТЬ ДАННЫЕ В ФАЙЛ
Запустить файл EGFS0080.exe и нажать СТАРТ (это прога в аттаче или на Opticon Software Download)
ЗАГРУЗИТЬ ДАННЫЕ
Запустить обработку, выбрать скачанный файл и нажать ВЫПОЛНИТЬ .
Можете скачать файл за SM или улучшить обработку с таким кодом:
Перем гПолучТекст,СтрЧислоСтрок ;
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
Если НЕ ЗначениеЗаполнено(ПолеВводаОрганизация) Тогда
Предупреждение("Заполнить ПолеВводаОрганизация");
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ПолеВводаСклад) Тогда
Предупреждение("Заполнить ПолеВводаСклад");
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ПолеВводаККМ) Тогда
Предупреждение("Заполнить ПолеВводаККМ");
Возврат;
КонецЕсли;
ЧтениеФайлаЗагрузки();
КонецПроцедуры
//*******************************************
Функция ПреобразоватьДатуВидаИзСтроки(СтрокаДата)
//Истина=-1;
//Ложь=0;
Разделитель="/";
RegExp = Новый COMОбъект("VBScript.RegExp");
//Параметры:
RegExp.MultiLine = Ложь; // истина — текст многострочный, ложь — одна строка
RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения
RegExp.IgnoreCase = Ложь; // истина — игнорировать регистр строки при поиске
//Разбор строки вида 1,СЛОВО,(1+2); Маска для разделителя ',' [^\,]*"
RegExp.Pattern = "[^\" + Разделитель + "]+";
Matches = RegExp.Execute (СтрокаДата);
//Сообщить(Matches.Item(0).Value+"="+Matches.Item(1).Value+"="+Matches.Item(2).Value);
ДатаДок=Дата("20"+Matches.Item(2).Value,Matches.Item(0).Value,Matches.Item(1).Value) ;
Возврат ДатаДок;
КонецФункции
Функция строкуВМассив(СтрокаП,СтрокаРазделитель,СтрЧислоСтрок)
Разделитель=";";
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.MultiLine = Ложь; // истина — текст многострочный, ложь — одна строка
RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения
RegExp.IgnoreCase = Ложь; // истина — игнорировать регистр строки при поиске
RegExp.Pattern = "[^\" + Разделитель + "]+";
Matches = RegExp.Execute (СтрокаП);
//Сообщить(Matches.Item(0).Value+"="+Matches.Item(1).Value);
// ТабЗнач.НоваяСтрока();
//ТабЗнач.Ид = Matches.Item(0).Value;
//ТабЗнач.Штрих = СокрЛП(Matches.Item(1).Value);
//ТабЗнач.Тайм1 = СокрЛП(Matches.Item(2).Value);
//ТабЗнач.Тайм2 = СокрЛП(Matches.Item(3).Value);
Для Сч = 0 По Matches.Count - 1 Цикл
// Сообщить(Matches.Item(Сч).Value);
КонецЦикла;
ДатаВФормате=ПреобразоватьДатуВидаИзСтроки(Matches.Item(3).Value);
Запр = Новый Запрос("
| ВЫБРАТЬ
| Штрихкоды.Штрихкод,
| Штрихкоды.ХарактеристикаНоменклатуры,
| Штрихкоды.Владелец.Ссылка
| ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
| ГДЕ
| Штрихкоды.Штрихкод= &ТоварШК ");
Запр.УстановитьПараметр("ТоварШК", СокрЛП(Matches.Item(1).Value));
Выб = Запр.Выполнить().Выбрать();
РезультатЗапроса=Запр.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ВремТоварТ = РезультатЗапроса.Выгрузить()[0];
ВремТовар=ВремТоварТ.ВладелецСсылка;
Если ВремТовар.ЕдиницаХраненияОстатков.Пустая() Тогда
Сообщить(" необходимо исправить единицы измерения у "+ВремТовар+"!") ;
КонецЕсли;
ВремЕдиница=ВремТовар.ЕдиницаХраненияОстатков;
ХарактеристикаШК=Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();//ВремХарактеристика=ВремТовар.ХарактеристикаНоменклатуры;
Иначе
ВремКод = "0"+СокрЛП(Matches.Item(1).Value);
//Пока СтрДлина(ВремКод) 0 Тогда
Поз = Найти(СтрКаталог, "\");
Пока Поз > 0 Цикл
СтрКаталог = Прав(СтрКаталог, СтрДлина(СтрКаталог)-Поз);
Поз2 = Найти(ИсхСтр, СтрКаталог);
НовыйКаталог = Лев(ИсхСтр, Поз2-1);
Поз = Найти(СтрКаталог, "\");
КонецЦикла;
КонецЕсли;
Возврат НовыйКаталог;
КонецФункции
Функция ВыборФайла(ВыбФайл, СтрЗаголовок, СтрПриглашение)
СтандартнаяОбработка=ложь;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.ПолноеИмяФайла = "";
Фильтр = "csv (*.csv)|*.csv";
Диалог.Фильтр = Фильтр;
Диалог.МножественныйВыбор = Ложь;
Диалог.Каталог = "C:\base1c\Retail_ToDay\";
Если Диалог.Выбрать() Тогда
ВыбФайлЗагрузки = Диалог.ПолноеИмяФайла;
КонецЕсли;
КонецФункции
Процедура ВыборФайлаЗагрузки()
ВыборФайла(ВыбФайлЗагрузки, "Выберете файл для загрузки", "Файл для загрузки");
КонецПроцедуры
Функция ОбработкаСтроки(СтрокаВх)
СтрокаВх=СтрЗаменить(СтрокаВх,"PM ","PM;");//AM
СтрокаВх=СтрЗаменить(СтрокаВх,"AM ","AM;");//AM
СтрокаВх=СтрЗаменить(СтрокаВх,", ",";");
СтрокаВх=СтрЗаменить(СтрокаВх,",",";");
// Сообщить(СтрокаВх);
строкуВМассив(СтрокаВх,";",0) ;
КонецФункции
Функция ПолучитьИмяФайла(ВыбФайл, Имя)
КонецФункции
Функция ЧтениеФайлаЗагрузки()
Перем Имя;
Если СокрЛП(ВыбФайлЗагрузки) = "" Тогда
Сообщить("не выбран файл...") ;
Возврат 0;
КонецЕсли;
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(СокрЛП(ВыбФайлЗагрузки));
Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
ТекСтр = Текст.ПолучитьСтроку(НомерСтроки);
Состояние("В файле прочитано строк "+НомерСтроки+" из "+Текст.КоличествоСтрок());
ОбработкаСтроки(СокрЛП(ТекСтр));
КонецЦикла;
КонецФункции
Процедура Сформировать()
ЧтениеФайлаЗагрузки();
КонецПроцедуры
Процедура ПриОткрытии()
КонецПроцедуры