Имя: Пароль:
1C
1C 7.7
v7: Подключение сканера штрих-кода и принтера штрих-кода в 1C 7.7
,
0 Sergynka01
 
24.02.15
16:22
Требуется помощь в подключении оборудования. Дело в том, что во вкладке "Сервис" - "Настройка оборудования" - в окне "настройки оборудования" - нет ни каких вкладок кроме вкладки "Фискальный регистратор". Что нужно сделать, чтобы вкладки появились для настройки другого оборудования?
1 Neg
 
24.02.15
16:35
наверное для работы со сканером штрих-кода надо зарегистрировать в системе библиотеку к примеру ScanOpos
http://www.scancode.ru/files/2/
а принтер установить в системе и печатать на нем штрих-кода.
Тогда может будет работать....
2 Duke1C
 
24.02.15
19:57
(0) Для начала неплохо бы конфу озвучить. Но судя по: "... нет ни каких вкладок кроме вкладки "Фискальный регистратор" ...", вангую, что это Бухия либо УСН.
А там это дело штатно ваапче не предусмотрено, даже в справочнике Номенклатура реквизитов для ШК нет. Или ты реквизит сам добавил и теперь думаешь, что само все  должно подключиться?
3 Sergynka01
 
25.02.15
05:06
Duke1C - ну умные все, куды деваться
4 Sergynka01
 
25.02.15
05:17
////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ
//
//******************************************************************************
Перем Парам;
Перем ИзмененияЗаписаны;
Перем Вид;
Перем СписокОбработок;


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
//
//******************************************************************************
// ПредставлениеВида()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Формирует полное название вида оборудования на основе краткого
//
Функция ПредставлениеВида()
    
    ВидНРег = НРег(Вид);
    Если ВидНРег = "сканер" Тогда
        Рез = "Сканер штрих-кода";
    ИначеЕсли ВидНРег = "фр" Тогда
        Рез = "Фискальный регистратор";
    ИначеЕсли ВидНРег = "дп" Тогда
        Рез = "Дисплей покупателя";
    ИначеЕсли ВидНРег = "весы" Тогда
        Рез = "Электронные весы";
    ИначеЕсли ВидНРег = "терминал" Тогда
        Рез = "Терминал сбора данных";
    ИначеЕсли ВидНРег = "offline" Тогда
        Рез = "ККМ в режиме Off-Line";
    ИначеЕсли ВидНРег = "online" Тогда
        Рез = "ККМ в режиме On-Line";
    Иначе
        Рез = "Неизвестный вид оборудования";
    КонецЕсли;
    
    Возврат Рез;
    
КонецФункции // ПредставлениеВида()

//******************************************************************************
// ИзмененияВнесены()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  1 - в форме делали изменения, 0 - нет
//
// Описание:
//  Проверяет, были ли изменены интерактивно реквизиты формы.
//
Функция ИзмененияВнесены()
    // изначально считаем, что изменения внесены
    Рез = 1;
    
    ИспОбработка = Обработка;
    
    Если      Модель        <> Парам.Получить("Модель")     Тогда
    ИначеЕсли Компонента    <> Парам.Получить("Компонента") Тогда
    ИначеЕсли ПрогИд        <> Парам.Получить("ПрогИд")     Тогда
    ИначеЕсли ИспОбработка  <> Парам.Получить("Обработка")  Тогда
    Иначе
        Рез = 0;
    КонецЕсли;
    
    Возврат Рез;

КонецФункции // ИзмененияВнесены()

//******************************************************************************
// СохранитьИзменения()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Из значений реквизитов формы формирует список значений для их возврата в
//  качестве результата через параметр формы.
//
Процедура СохранитьИзменения()

    Парам.Установить("Модель"    , Модель);
    Парам.Установить("Компонента", Компонента);
    Парам.Установить("ПрогИд"    , ПрогИд);
    Парам.Установить("Обработка" , Обработка);
    Парам.Установить("Изменено"  , 1);
    
КонецПроцедуры // СохранитьИзменения()

//******************************************************************************
// ПоКнопкеОК()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Выполняет действия при нажатии на кнопку ОК
//
Процедура ПоКнопкеОК()
    Если ИзмененияВнесены() = 1 Тогда
        СохранитьИзменения();
    КонецЕсли;
    ИзмененияЗаписаны = 1;
    
КонецПроцедуры // ПоКнопкеОК()

//******************************************************************************
// ПроверкаРасположенияКомпоненты(ИмяФайла)
//
// Параметры:
//  ИмяФайла
//
// Возвращаемое значение:
//  1 - внешняя компонента находится в каталоге, из которого ее можно загрузить.
//  0 - внешняя компонента отсутствует каталогах, из которых ее можно загрузить.
//
// Описание:
//  Ищет по имени файл внешней компонеты в каталогах (ИБ, 1С:Предприятия, Windows)
//  Если файл ИмяФайла есть хотя бы в одном из указнных каталогов, то функция
//  возвращает 1, иначе 0.
//
Функция ПроверкаРасположенияКомпоненты(ИмяФайла)
    Рез = 1;
    
    Если (ФС.СуществуетФайл(КаталогИБ() + ИмяФайла) = 1)
     или (ФС.СуществуетФайл(КаталогПрограммы() + ИмяФайла) = 1)
     или (ФС.СуществуетФайл(ФС.WindowsКаталог() + "\" + ИмяФайла) = 1)
    Тогда
        Рез = 1;
    Иначе
        Рез = 0;
    КонецЕсли;
    
    Возврат Рез;
КонецФункции // ПроверкаРасположенияКомпоненты()

////////////////////////////////////////////////////////////////////////////////
// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ
//
//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
    Парам = Форма.Параметр;
    
    Если ТипЗначенияСтр(Парам) <> "СписокЗначений" Тогда
        Возврат;
    КонецЕсли;
    
    Вид        = Парам.Получить("Вид");
    Компонента = Парам.Получить("Компонента");
    ПрогИд     = Парам.Получить("ПрогИд");
    Обработка  = Парам.Получить("Обработка");
    Модель     = Парам.Получить("Модель");
    
    Если ПустоеЗначение(Модель) = 1 Тогда
        Модель = ПредставлениеВида();
    КонецЕсли;
    
    СписокОбработок = Парам.Получить("СписокОбработок");
КонецПроцедуры // ПриОткрытии()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
    Перем ВыбЗнач;
    
    Если ИдентЭлемДиалога = "Компонента" Тогда
        Если ФС.ВыбратьФайл(0, ВыбЗнач, КаталогИБ(), "", "Внешние компоненты (*.dll)|*.dll", 60) = 1 Тогда
            Если ПроверкаРасположенияКомпоненты(ВыбЗнач) = 0 Тогда
                Предупреждение("Файл внешней компоненты должен быть расположен в одном из следущих каталогов:" +
                               РазделительСтрок + "- каталог информационной базы" +
                               РазделительСтрок + "- каталог 1С:Предприятия" +
                               РазделительСтрок + "- системный каталог Windows",
                               60);
            Иначе
                Компонента = ВыбЗнач;
            КонецЕсли;
        КонецЕсли;
    ИначеЕсли ИдентЭлемДиалога = "Обработка" Тогда
        СтатусВозврата(0);
        Если СписокОбработок.ВыбратьЗначение(ВыбЗнач, , , , 2) = 1 Тогда
            Обработка = ВыбЗнач;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры // ПриНачалеВыбораЗначения()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриЗакрытии()
    
    Если ИзмененияЗаписаны = 0 Тогда
        Если ИзмененияВнесены() = 1 Тогда
            // внесли изменения и нажали Закрыть
            
            НеЗаполненоПоле = 1;
            
            // проверка заполнения реквизитов
            Если ПустоеЗначение(Модель) = 1 Тогда
                ТекстПредупр = "Не задана модель.";
            ИначеЕсли ПустоеЗначение(Обработка) = 1 Тогда
                ТекстПредупр = "Не задана модель.";
            КонецЕсли;
            
            // 3 - "Да+Нет+Отмена"
            Рез = Вопрос("Записать изменения?", 3, 60);
            Если Рез = 6 Тогда
                // Да
                СохранитьИзменения();
            ИначеЕсли Рез = 2 Тогда
                // Отмена
                СтатусВозврата(0);
            ИначеЕсли Рез = -1 Тогда
                // вышел таймаут. также, как и при отмене
                СтатусВозврата(0);
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры // ПриЗакрытии()

////////////////////////////////////////////////////////////////////////////////
// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
//
//******************************************************************************
ИзмененияЗаписаны = 0;
5 Sergynka01
 
25.02.15
05:21
////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ
//
// Описание последней ошибки
Перем ОшибкаОписание;
// Модели торгового оборудования
Перем Модели;
// Строка содержит названия параметров модели, разделенные запятыми;
// используется для проверки при чтении файла описания модели
Перем ИменаПараметровМодели;
// Полный путь к файлу, в котором храняться настройки
Перем ИмяФайлаНастройки;
// Количество строк в файле для одной настройки
Перем СтрокВнастройке;
// Для оповещения об успешно подключенном оборудовании
Перем ТаблицаТОДоПодключения, ТаблицаТОПослеПодключения;
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
//
//******************************************************************************
// ПолучитьПервуюМодель()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  0 - список моделей пуст
//  
// Описание:
//  Получет позицию первой модели
//
Функция ПолучитьПервуюМодель()
    Модели.ВыбратьСтроки();
    Возврат Модели.ПолучитьСтроку();
КонецФункции // ПолучитьПервуюМодель()

//******************************************************************************
// ПолучитьСледующуюМодель()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Позиция следующей модели или 0
//  
// Описание:
//  Получет позицию следующей модели. Перед вызовом функции нужно обязательно
//  вызывать функцию ПолучитьПервуюМодель
//
Функция ПолучитьСледующуюМодель()
    Если Модели.ПолучитьСтроку() = 1 Тогда
        Рез = Модели.НомерСтроки;
    Иначе
        Рез = 0;
    КонецЕсли;
    
    Возврат Рез;
КонецФункции // ПолучитьСледующуюМодель()

//******************************************************************************
// НайтиМодель(Модель)
//
// Параметры:
//  Модель - идентификатор модели
//
// Возвращаемое значение:
//  Позицию модели или 0, если модель не найдена
//  
// Описание:
//  Ищет модель по ее идентификатору
//
Функция НайтиМодель(Модель)
    
    Поз = 0;
    Модели.НайтиЗначение(Модель, Поз, "Модель");
    Возврат Поз;
    
КонецФункции // НайтиМодель()

//******************************************************************************
// ПолучитьПараметрМодели(Поз, Параметр, Значение)
//
// Параметры:
//  Поз      - позиция модели
//  Параметр - идентификатор параметра
//  Значение - значение параметра
//
// Возвращаемое значение:
//  1 - значения переданных параметров верны и через формальный параметр Значение
//  вернулось значение запрашиваемого параметра, 0 - в случае ошибки.
//  Сейчас всегда возвращается 1.
//  
// Описание:
//  для модели с заданной позицией возвращает значение требуемого параметра
//
Функция ПолучитьПараметрМодели(Поз, Параметр, Значение)
    
    Значение = Модели.ПолучитьЗначение(Поз, Параметр);
    Возврат 1;
    
КонецФункции // ПолучитьПараметрМодели()

//******************************************************************************
// УстановитьПараметрМодели(Поз, Параметр, Значение)
//
// Параметры:
//  Поз - позиция модели
//  Параметр - идентификатор параметра
//  Значение - значение параметра
//
// Возвращаемое значение:
//  0, если неверно задан идентификатор параметра или модели в заданной позиции
//  не существует
//  
// Описание:
//  Для модели с заданной позицией устанавливает значение требуемого параметра
//
Функция УстановитьПараметрМодели(Поз, Параметр, Значение)
    Модели.УстановитьЗначение(Поз, Параметр, Значение);
    Возврат 1;
КонецФункции // УстановитьПараметрМодели()

//******************************************************************************
// ДобавитьМодель(Вид, Модель, Компонента, ПрогИд, Обработка, ФайлОписаний)
//
// Параметры:
//  Вид - вид торгового оборудования
//  Модель - идентификатор модели
//  Компонента - имя файла внешней компонеты
//  ПрогИд - программный идентификатор внешней компоненты
//  Обработка - имя файла обработки обслуживания
//  ФайлОписаний - имя файла описания модели
//
// Возвращаемое значение:
//  Позиция добавленной модели
//  
// Описание:
//  Добавляет описание модели
//
Функция ДобавитьМодель(Вид, Модель, Компонента, ПрогИд, Обработка, ФайлОписаний)
    
    Модели.НоваяСтрока();
        
    Модели.Вид          = Вид;
    Модели.Модель       = Модель;
    Модели.Компонента   = Компонента;
    Модели.ПрогИд       = ПрогИд;
    Модели.Обработка    = Обработка;
    Модели.ФайлОписаний = ФайлОписаний;
    
    Возврат Модели.КоличествоСтрок();
        
КонецФункции // ДобавитьМодель()

//******************************************************************************
// УдалитьМодель(Поз)
//
// Параметры:
//  Поз -
//
// Возвращаемое значение:
//  1 - модель удалена, 0 - ошибка
//
// Описание:
//  Удаляет модель с заданной позицией
//
Функция УдалитьМодель(Поз)
    
    Если (Поз > 0) И (Поз < Модели.КоличествоСтрок()) Тогда
        Модели.УдалитьСтроку(Поз);
        Рез = 1;
    Иначе
        Рез = 0;
        ОшибкаОписание = "Модель с заданной позицией отсутствует";
    КонецЕсли;
    
    Возврат Рез;
    
КонецФункции // УдалитьМодель()

//******************************************************************************
// ЗагрузитьМодельИзФайла(ИмяФайла, Параметры)
//
// Параметры:
//  ИмяФайла - имя файла описания модели
//  Параметры - список значений с параметрами описания модели
//
// Возвращаемое значение:
//  1 - удалось загрузить описание, 0 - нет
//  
// Описание:
//  Загружает описание модели из файла описаний
//
Функция ЗагрузитьМодельИзФайла(ИмяФайла, Параметры)
    Перем Рез;
    
    
    Если ФС.СуществуетФайл(ИмяФайла) = 0 Тогда
        ОшибкаОписание = "Отсутствет файл " + ИмяФайла;
        Рез = 0;
    Иначе
        ФайлОписаний = СоздатьОбъект("Текст");
        ФайлОписаний.Открыть(ИмяФайла);
        
        // заполним список значениями из файла описаний
        Для Счетчик = 1 по ФайлОписаний.КоличествоСтрок() Цикл
            Стр = ФайлОписаний.ПолучитьСтроку(Счетчик);
            Поз = Найти(Стр, "=");
            Если Поз > 0 Тогда
                Ид = СокрЛП(Лев(Стр, Поз - 1));
                Если Найти(ИменаПараметровМодели, ИД) > 0 Тогда
                    // правильный идентификатор параметра
                    Параметры.Установить(Ид, СокрЛП(Сред(Стр, Поз + 1)));
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        
        Рез = 1;
    КонецЕсли;
    
    Возврат Рез;
    
КонецФункции // ЗагрузитьМодельИзФайла()

//******************************************************************************
// СохранитьМодельВфайл(Поз, ИмяФайла)
//
// Параметры:
//  Поз      - позиция модели
//  ИмяФайла - имя файла описания
//
// Возвращаемое значение:
//  1 - удалось сохранить описание в файл, 0 - нет
//  
// Описание:
//  Сохраняет описание модели в файл
//
Функция СохранитьМодельВфайл(Поз, ИмяФайла)
    Перем Зн, Ид;
    
    ФайлОписаний = СоздатьОбъект("Текст");
    
    ПолучитьПараметрМодели(Поз, "Вид", Зн);
    ФайлОписаний.ДобавитьСтроку("Вид=" + Зн);
    
    ПолучитьПараметрМодели(Поз, "Модель", Зн);
    ФайлОписаний.ДобавитьСтроку("Модель=" + Зн);
    
    ПолучитьПараметрМодели(Поз, "Компонента", Зн);
    ФайлОписаний.ДобавитьСтроку("Компонента=" + Зн);
    
    ПолучитьПараметрМодели(Поз, "ПрогИд", Зн);
    ФайлОписаний.ДобавитьСтроку("ПрогИд=" + Зн);
    
    ПолучитьПараметрМодели(Поз, "Обработка", Зн);
    ФайлОписаний.ДобавитьСтроку("Обработка=" + Зн);
    
    Если ФС.СуществуетФайл(глКаталогОписаний + ИмяФайла) = 1 Тогда
        Рез = Вопрос("Файл описаний торгового оборудования " + ИмяФайла + " существует. Переписать?", "Да+Нет+Отмена", 60);
        Если Рез = "Отмена" Тогда
            Возврат 1;
        ИначеЕсли Рез = "Нет" Тогда
            ИмяФайла = "новое описание.efd";
            Если ВвестиСтроку(ИмяФайла, "Введите имя файла описаний", 25, 0, 60) <> 1 Тогда
                Возврат 1;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
    Попытка
        ФайлОписаний.Записать(глКаталогОписаний + ИмяФайла);
        Рез = 1;
    Исключение
        ОшибкаОписание = "Не удалось записать описание модели в файл " + ИмяФайла;
        Рез = 0;
    КонецПопытки;
    
    Возврат Рез;
    
КонецФункции // СохранитьМодельВфайл()

//******************************************************************************
// ЗагрузитьВсеМодели()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  1 - удалось выполнить загрузку, 0 - нет
//  
// Описание:
//  Загружает модели из всех файлов описаний
//
Функция ЗагрузитьВсеМодели()
    Перем Рез;
    
    // настройки из внешних файлов
    Кат = Лев(глКаталогОписаний, СтрДлина(глКаталогОписаний) - 1);
    
    Если ФС.СуществуетФайл(Кат) = 0 Тогда
        ОшибкаОписание = "Отсутствуют каталог " + глКаталогОписаний + " c описаниями моделей торгового оборудования";
        Рез = 0;
    Иначе
        Параметры = СоздатьОбъект("СписокЗначений");
        
        ТекКат = ФС.ТекКаталог();
        ФС.УстТекКаталог(глКаталогОписаний);
        
        Имяфайла = ФС.НайтиПервыйФайл("*.efd");
        
        Пока ПустоеЗначение(ИмяФайла) = 0 Цикл
            Параметры.УдалитьВсе();
            ЗагрузитьМодельИзФайла(глКаталогОписаний + ИмяФайла, Параметры);
            Модель = Параметры.Получить("Модель");
            
            // проверка дублей.
            Если НайтиМодель(Модель) = 0 Тогда
                ДобавитьМодель(Параметры.Получить("Вид"),
                               Модель,
                               Параметры.Получить("Компонента"),
                               Параметры.Получить("ПрогИд"),
                               Параметры.Получить("Обработка"),
                               Имяфайла
                               );
            КонецЕсли;
            
            ИмяФайла = ФС.НайтиСледующийФайл();
        КонецЦикла;
        
        ФС.УстТекКаталог(ТекКат);
        
        Если Модели.КоличествоСтрок() = 0 Тогда
            ОшибкаОписание = "Отсутствуют описания торгового оборудования";
            Рез = 0;
        Иначе
            Рез = 1;
        КонецЕсли;
    КонецЕсли;
    
    Возврат Рез;
        
КонецФункции // ЗагрузитьВсеМодели()

//******************************************************************************
// ДоступностьПолейФР()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//  
// Описание:
//  Управляет доступностью полей в форме, связанных с настроками фискального
//  регистратора
//
Процедура ДоступностьПолейФР()
    
    Форма.ТекстФРМодель.Доступность(ФРВкл);
    Форма.ФРМодель.Доступность(ФРВкл);
    Форма.ТекстФРПарольАдминистратора.Доступность(ФРВкл);
    Форма.ФРПарольАдминистратора.Доступность(ФРВкл);
    Форма.ТекстФРПарольПользователя.Доступность(ФРВкл);
    Форма.ФРПарольПользователя.Доступность(ФРВкл);
        
    Форма.кнФРДобавитьМодель.Доступность(ФРВкл);
    Форма.кнФРРедактироватьМодель.Доступность(ФРВкл);
    
КонецПроцедуры // ДоступностьПолейФР()

//******************************************************************************
// ИнициализацияНастройки()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//  
// Описание:
//  Инициализирует настройки торгового оборудования
//
Функция ИнициализацияНастройки()
    
    // фискальный регистратор
    
    глФРВкл        = 0;
    глФРМодель     = "";
    глФРОбработка  = "";
    глФРКомпонента = "";
    глФРПрогИд     = "";
    
    глФРПарольАдминистратора = "";
    глФРПарольПользователя   = "";
    глФРДляПриемаНаличныхОтЮрЛиц   = 1;
    
КонецФункции // ИнициализацияНастройки()

//******************************************************************************
// ПоискСохрНастройки()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Номер строки в файле настроек, или 0, если настройка отсутствует.
//  
// Описание:
//  Ищет в файле настроек торгового оборудования настройки текущей конфигурации
//
Функция ПоискСохрНастройки(Файл)
    Рез        = 0;
    Счетчик    = 1;
    ВсегоСтрок = Файл.КоличествоСтрок();
    
    Пока Счетчик <= ВсегоСтрок Цикл
        Стр = Файл.ПолучитьСтроку(Счетчик);
        
        Если СокрЛП(Стр) = КаталогИБ() Тогда
            Рез = Счетчик;
        КонецЕсли;
        
        Счетчик = Счетчик + СтрокВнастройке;
    КонецЦикла;
    
    Возврат Рез;
КонецФункции // ПоискСохрНастройки()

//******************************************************************************
// ЗагрузитьНастройку()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  1 - загрузка прошла успешно, 0 - нет
//  
// Описание:
//  Загружает из файла настроек торгового оборудования настройки текущей конфигурации
//
Функция ЗагрузитьНастройку()
    
    Перем ВрОбработка;
    Перем ВрКомпонента;
    Перем ВрПрогИд;
    
    Рез = 1;
    
    Если ФС.СуществуетФайл(ИмяФайлаНастройки) <> 0 Тогда
        ТекстНастройки = СоздатьОбъект("Текст");
        ТекстНастройки.Открыть(ИмяФайлаНастройки);
        НомСтр = ПоискСохрНастройки(ТекстНастройки);
        
        Если НомСтр > 0 Тогда
            Настройка = ЗначениеИзСтроки(ТекстНастройки.ПолучитьСтроку(НомСтр + 1));
            
            Если ТипЗначенияСтр(Настройка) <> "СписокЗначений" Тогда
                Рез = 0;
                ОшибкаОписание = "Неверный формат файла настроек";
            Иначе
                
                // ФР
                глФРВкл    = Настройка.Получить("ФРВкл");
                глФРМодель = Настройка.Получить("ФРМодель");
                глФРПарольАдминистратора = Настройка.Получить("ФРПарольАдминистратора");
                глФРПарольПользователя   = Настройка.Получить("ФРПарольПользователя");
                глФРДляПриемаНаличныхОтЮрЛиц = 1;
                
                Поз = НайтиМодель(глФРМодель);
                Если Поз > 0 Тогда
                    ПолучитьПараметрМодели(Поз, "Обработка" , глФРОбработка);
                    ПолучитьПараметрМодели(Поз, "Компонента", глФРКомпонента);
                    ПолучитьПараметрМодели(Поз, "ПрогИд"    , глФРПрогИд);
                КонецЕсли;
                                
            КонецЕсли;
                        
        КонецЕсли;
    КонецЕсли;
    
    Возврат Рез;
    
КонецФункции // ЗагрузитьНастройку()

//******************************************************************************
// ДобавитьТОвТаблицу(ТаблицаТО, ТОНаименование, ТОВключено, ТОМодель, ТОПоследняяБуква = "")
//
// Параметры:
//  ТаблицаТО        - ТаблицаЗначений - , в которую будет добавлено торговое оборудование
//  ТОНаименование   - Строка          - наименование торгового оборудования
//  ТОВключено       - флаг            - , 1 - торговое оборудование включено, 0 - нет
//  ТОМодель         - Строка          - модель торгового оборудования
//  ТОПоследняяБуква - Строка          - , которая будет добавлена к слову "включен", при выводе сообщения
//                                       "а", "о", "ы" и пр.
//
// Возвращаемое значение:
//  Нет
//  
// Описание:
//  Добавляет строку в переданную таблицу торгового оборудования
//
Процедура ДобавитьТОвТаблицу(ТаблицаТО, ТОНаименование, ТОВключено, ТОМодель, ТОПоследняяБуква = "")
    
    ТаблицаТО.НоваяСтрока();
    ТаблицаТО.ТОНаименование   = ТОНаименование;
    ТаблицаТО.ТОВключено       = ТОВключено;
    ТаблицаТО.ТОМодель         = ТОМодель;
    ТаблицаТО.ТОПоследняяБуква = ТОПоследняяБуква;
    
КонецПроцедуры // ДобавитьТОвТаблицу()

//******************************************************************************
// ПолучитьНастройку()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  1 - настрайки получены, 0 - нет
//  
// Описание:
//  Получает из файла настроек торгового оборудования настройки текущей конфигурации
//
Функция ПолучитьНастройку()
    
    Рез = 1;
    
    Если ФС.СуществуетФайл(ИмяФайлаНастройки) <> 0 Тогда
        ТекстНастройки = СоздатьОбъект("Текст");
        ТекстНастройки.Открыть(ИмяФайлаНастройки);
        НомСтр = ПоискСохрНастройки(ТекстНастройки);
        
        Если НомСтр > 0 Тогда
            Настройка = ЗначениеИзСтроки(ТекстНастройки.ПолучитьСтроку(НомСтр + 1));
            
            Если ТипЗначенияСтр(Настройка) <> "СписокЗначений" Тогда
                Рез = 0;
                ОшибкаОписание = "Неверный формат файла настроек";
            Иначе
                ТаблицаТОДоПодключения.УдалитьСтроки();
                
                // ФР
                ДобавитьТОвТаблицу(ТаблицаТОДоПодключения, "Фискальный регистратор", Настройка.Получить("ФРВкл")      , Настройка.Получить("ФРМодель"));
            КонецЕсли;
                        
        КонецЕсли;
    КонецЕсли;
    
    Возврат Рез;
    
КонецФункции // ПолучитьНастройку()

//******************************************************************************
// СохранитьНастройку()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  1 - сохранение прошло успешно, 0 - нет
//  
// Описание:
//  Сохраняет в файле настроек торгового оборудования настройки текущей конфигурации
//
Функция СохранитьНастройку()
    
    Перем ТекстНастройки;
    
    ТекстНастройки = СоздатьОбъект("Текст");
    Если ФС.СуществуетФайл(ИмяФайлаНастройки) = 0 Тогда
        НомСтр = 0;
    Иначе
        ТекстНастройки.Открыть(ИмяФайлаНастройки);
        НомСтр = ПоискСохрНастройки(ТекстНастройки);
    КонецЕсли;
    
    Настройка = СоздатьОбъект("СписокЗначений");
    
    // параметры фискального регистратора
    
    Настройка.Установить("ФРВкл"        , глФРВкл);
    Настройка.Установить("ФРМодель"     , глФРМодель);
    Настройка.Установить("ФРПарольАдминистратора", глФРПарольАдминистратора);
    Настройка.Установить("ФРПарольПользователя"  , глФРПарольПользователя);
    Настройка.Установить("ФРДляПриемаНаличныхОтЮрЛиц", 1);

    СтрНастройки = ЗначениеВстроку(Настройка);
                    
    Если НомСтр = 0 Тогда
        ТекстНастройки.ДобавитьСтроку(КаталогИБ());
        ТекстНастройки.ДобавитьСтроку(СтрНастройки);
    Иначе
        ТекстНастройки.ЗаменитьСтроку(НомСтр + 1, СтрНастройки);
    КонецЕсли;
    
    Рез = 1;
    Попытка
        ТекстНастройки.Записать(ИмяФайлаНастройки);
    Исключение
        Рез = 0;
        ОшибкаОписание = "Не удалось сохранить настройки торгового оборудования";
    КонецПопытки;
    
    Возврат Рез;
    
КонецФункции // СохранитьНастройку()

//******************************************************************************
// ПодключитьОборудование()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//  
// Описание:
//  Подключает торговое оборудование
//
Процедура ПодключитьОборудование()
    
    Параметры = СоздатьОбъект("СписокЗначений");
    ТаблицаТОПослеПодключения.УдалитьСтроки();
    
    // подключаем ФР
    Если глФРВкл = 1 Тогда
        Параметры.Установить("Процесс", "подключить");
        Параметры.Установить("Компонента"          , глФРКомпонента);
        Параметры.Установить("ПрогИд"              , глФРПрогИд);
        Параметры.Установить("ПарольПользователя"  , глФРПарольПользователя);
        
        глОборудованиеКоманда("ФР", глФРОбработка, Параметры);
        
        глФРВкл = Параметры.Получить("Результат");
        Если глФРВкл = 1 Тогда
            глФР = Параметры.Получить("Объект");
        Иначе
            Сообщить("Фискальный регистратор: ошибка при подключении", "!");
            Сообщить("    " + Параметры.Получить("ОписаниеРезультата"));
        КонецЕсли;
        ДобавитьТОвТаблицу(ТаблицаТОПослеПодключения, "Фискальный регистратор", глФРВкл, глФРМодель);
    КонецЕсли;
    Параметры.УдалитьВсе();
        
КонецПроцедуры // ПодключитьОборудование()

//******************************************************************************
// ОтключитьОборудование()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//  
// Описание:
//  Отключает торговое оборудование
//
Процедура ОтключитьОборудование()
    
    Параметры = СоздатьОбъект("СписокЗначений");
    Параметры.Установить("Процесс", "отключить");
    
    // отключаем фискальный регистратор
    Если глФРВкл = 1 Тогда
        Параметры.Установить("ПарольПользователя", глФРПарольПользователя);
        глОборудованиеКоманда("ФР", глФРОбработка, Параметры);
        глФРВкл = 0;
        глФР    = 0;
    КонецЕсли;
        
КонецПроцедуры // ОтключитьОборудование()

//******************************************************************************
// СообщитьОПодключении()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//  
// Описание:
//  Сообщает об успешно подключенном оборудовании.
//
Процедура СообщитьОПодключении()
    
    ПодключилиНовоеТО = 0;
    ТаблицаТОПослеПодключения.ВыбратьСтроки();
    Пока ТаблицаТОПослеПодключения.ПолучитьСтроку() = 1 Цикл
        
        Если ТаблицаТОПослеПодключения.ТОВключено = 1 Тогда
            
            СообщитьОПодключении = 1;
            ТаблицаТОДоПодключения.ВыбратьСтроки();
            Пока ТаблицаТОДоПодключения.ПолучитьСтроку() = 1 Цикл
                Если (ТаблицаТОДоПодключения.ТОНаименование = ТаблицаТОПослеПодключения.ТОНаименование) И
                     (ТаблицаТОДоПодключения.ТОМодель       = ТаблицаТОПослеПодключения.ТОМодель) И
                     (ТаблицаТОДоПодключения.ТОВключено = 1) Тогда
                    СообщитьОПодключении = 0;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
            
            Если СообщитьОПодключении = 1 Тогда
                ПодключилиНовоеТО = 1;
                Сообщить(ТаблицаТОПослеПодключения.ТОНаименование+
                         " (модель: "+ТаблицаТОПослеПодключения.ТОМодель+") успешно подключен"+ТаблицаТОПослеПодключения.ТОПоследняяБуква+".");
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    Если ПодключилиНовоеТО = 1 Тогда
        Предупреждение("Параметры компонент устанавливаются на
                       |соответствующей закладке (меню Сервис\Параметры).", 60);
    КонецЕсли;
    
КонецПроцедуры // СообщитьОПодключении()

//******************************************************************************
// СохранитьИзменения()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//  
// Описание:
//  Переносит парметры торгового оборудования из элементов формы в настройки.
//
Процедура СохранитьИзменения()
    
    Перем Компонента, ПрогИд, Обработка;
    
    // отключаем все используемое оборудование
    ОтключитьОборудование();
    
    // фискальный регистратор
    
    ТекСтр = ФРМодель.ТекущаяСтрока();
    Модель = "";
    Если ТекСтр > 0 Тогда
        Модель = ФРМодель.ПолучитьЗначение(ТекСтр);
    КонецЕсли;
            
    Если ПустоеЗначение(Модель) = 0 Тогда
            
        Поз = НайтиМодель(Модель);
        Если Поз = 0 Тогда
            глФРВкл    = 0;
            глФРМодель = "";
        Иначе
            глФРВкл    = ФРВкл;
            глФРМодель = Модель;
            глФРПарольАдминистратора = СокрЛП(ФРПарольАдминистратора);
            глФРПарольПользователя   = СокрЛП(ФРПарольПользователя);
            глФРДляПриемаНаличныхОтЮрЛиц = 1;
            
            ПолучитьПараметрМодели(Поз, "Компонента" , глФРКомпонента);
            ПолучитьПараметрМодели(Поз, "ПрогИд"     , глФРПрогИд);
            ПолучитьПараметрМодели(Поз, "Обработка"  , глФРОбработка);
        КонецЕсли;
    КонецЕсли;
    
    // Получаем настройку до подключения
    ПолучитьНастройку();
        
    // Сохраняем настройки
    СохранитьНастройку();
    
    // Подключаем оборудование
    ПодключитьОборудование();
    
    // Сообщаем об успешно подключенном оборудовании
    СообщитьОПодключении();
    
КонецПроцедуры // СохранитьИзменения()

//******************************************************************************
// ИнициализироватьДиалог()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//  
// Описание:
//  Инициализирует элементы диалога формы из настроек торгового оборудования
//
Процедура ИнициализироватьДиалог()
    Перем Вид, Модель, Поз;
    
    // заполним списки моделями
    
    Поз = ПолучитьПервуюМодель();
    Пока Поз <> 0 Цикл
        
        ПолучитьПараметрМодели(Поз, "Вид", Вид);
        
        Если НРег(Вид) = "фр" Тогда
            ПолучитьПараметрМодели(Поз, "Модель", Модель);
            ФРМодель.ДобавитьЗначение(Модель);
        КонецЕсли;
        
        Поз = ПолучитьСледующуюМодель();
    КонецЦикла;
    
    // фискальный регистартор
    Если ФРМодель.РазмерСписка() = 0 Тогда
        // нет модели. делаем недоступными элементы управления
        ФРВкл = 0;
    Иначе
        ФРВкл = глФРВкл;
        ФРПарольАдминистратора = глФРПарольАдминистратора;
        ФРПарольПользователя   = глФРПарольПользователя;
        ФРДляПриемаНаличныхОтЮрЛиц = 1;
        
        Поз   = ФРМодель.НайтиЗначение(глФРМодель);
        Если Поз > 0 Тогда
            ФРМодель.ТекущаяСтрока(Поз);
        КонецЕсли;
    КонецЕсли;

    ДоступностьПолейФР();
        
КонецПроцедуры // ИнициализироватьДиалог()

//******************************************************************************
// СформироватьСписокОбработок(СписокОбработок)
//
// Параметры:
//  СписокОбработок
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Формирует список значений, состоящий из названий файлов обработок
//  для работы с торговым оборудованием
//
Функция СформироватьСписокОбработок(СписОбработок)
    
    // уберем слэш
    Кат = Лев(глКаталогОписаний, СтрДлина(глКаталогОписаний) - 1);
    
    Если ФС.СуществуетФайл(Кат) = 0 Тогда
        ОшибкаОписание = "Отсутствуют каталог " + Кат;
        Рез = 0;
    Иначе
        СписОбработок = СоздатьОбъект("СписокЗначений");
        ТекКат        = ФС.ТекКаталог();
        
        ФС.УстТекКаталог(глКаталогОписаний);
6 VladZ
 
25.02.15
05:33
(5) Спамер?
Или предлагаешь твоим кодом "восхищаться"?
7 VladZ
 
25.02.15
05:34
Вот ты враг... Я тебе ща глобальник ЗИКа по почте скину. Сиди и читай...
8 Sergynka01
 
25.02.15
07:07
Ну в общем спасибо всем за помощь, кроме негатива в последнее время на форумах не встретишь. Я не программист и с 1C связан только в качестве потребителя. Но как многие настройщики из фирм, предлагающие свои услуги по настройке 1C, как оказалось тоже ни чего не понимают, что настраивают, для чего это они делают!

Удачи вашему форуму!!!
9 Web00001
 
25.02.15
07:18
(8)Какие мы нежные, тебе 16что ли? Обиделся, что никто не стелепатировал как тебе помочь? Если вдруг (не обязательно здесь) тебе захочется еще раз что то спросить, для того, что бы не получить вот такие вот ответы внимательно изучи вот этот материал
OFF: Подсказка новичкам - как правильно задать вопрос
поверь, в будущем это сэкономит кучу времени и не только тебе.
10 DenLaDen
 
25.02.15
07:22
(8) Не тем звонил! Компания ВТБ, 20-501-20, они помогут, за деньги.
11 Эмбеддер
 
25.02.15
07:25
(8) с вашей проблемой на месте разобрался бы любой 1Сник. и только тот, кто занимается торговым оборудованием, сделал бы очень быстро, другие бы потратили время чтобы разобраться, но сделали бы все равно!
12 VladZ
 
25.02.15
07:46
(8)  Какой негатив? По сканерам инфы - вагон. Ты даже не потрудился поискать.
13 VladZ
 
25.02.15
07:47
+12 Это было во-первых. Во-вторых, если ты "с 1C связан только в качестве потребителя" - зачем лезешь туда, чего не понимаешь?