Показаны сообщения с ярлыком 1C. Показать все сообщения
Показаны сообщения с ярлыком 1C. Показать все сообщения

пятница, 26 июня 2015 г.

Обработка прайса для 1С



//Перем ExcelПриложение;


&НаКлиенте
Процедура ФайлЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
 
 СтандартнаяОбработка = Ложь;
    ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ВыборФайла.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|Документ Excel (*.xlsx)|*.xlsx";
    ВыборФайла.ПроверятьСуществованиеФайла = Истина;
    ВыборФайла.ПолноеИмяФайла = Объект.ФайлЗагрузки;
    Выбор = ВыборФайла.Выбрать();
    Если НЕ Выбор Тогда
        Возврат;
    КонецЕсли;
    Объект.ФайлЗагрузки = ВыборФайла.ВыбранныеФайлы[0];

 
КонецПроцедуры



&НаКлиенте
Процедура Загрузить(Команда)
 
 ВыгрузкаДанныхИзЕксель();
 
КонецПроцедуры


&НаКлиенте
Процедура ВыгрузкаДанныхИзЕксель()
 
 Если ПустаяСтрока(Объект.ФайлЗагрузки) Тогда
      Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
      Возврат;
    КонецЕсли;
   
   Попытка
      // Загрузка Microsoft Excel
      Состояние("Загрузка Microsoft Excel...");
      ExcelПриложение = Новый COMОбъект("Excel.Application");
   Исключение
      Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      Возврат;
   КонецПопытки;
   
   Попытка
      // Открытие файла Microsoft Excel
      Состояние("Открытие файла Microsoft Excel...");
      ExcelФайл = ExcelПриложение.WorkBooks.Open(Объект.ФайлЗагрузки);
   Исключение
      Сообщить("Ошибка открытия файла Microsoft Excel." + Объект.ФайлЗагрузки + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
   КонецПопытки;
   
   Попытка
      // Обработка файла Microsoft Excel
      Состояние("Обработка файла Microsoft Excel...");
      // Читаем данные первого листа книги
   
      ExcelЛист = ExcelФайл.Sheets(1);  // Какой лист читаем
   ЧтениеИзФайлаСервера(ExcelЛист);
   ПрошлоЧтение = Истина;
  
   Исключение
      Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      // Закрыть COM соединение для экономии памяти
      ExcelПриложение.Quit();
   ПрошлоЧтение = Ложь;
   КонецПопытки;
   Если ПрошлоЧтение Тогда
    ExcelПриложение.Quit();
   КонецЕсли;
   
КонецПроцедуры 

&НаКлиенте
Процедура ЧтениеИзФайлаСервера(ExcelЛист)
 
 Если не ЗначениеЗаполнено(Объект.ФайлЗагрузки) Тогда
  Сообщить("Может сначала выбрать файл!");
  Возврат;
 КонецЕсли;
 АнализВыполнен = 1;
 Лист = ExcelЛист;//.WorkSheets(1);
 
 НомПоляАртикул = 1;
 НомПоляНаим = 2;
 НомПоляЦена = 5;
 ПолеДо = 5;
 НомСтроки = 8;
 Артикул = СокрЛП(Лист.Cells(НомСтроки, НомПоляАртикул).Text);
 
 Пока  Артикул <> "" И НомСтроки<6000 data-blogger-escaped--="" data-blogger-escaped-ells="" data-blogger-escaped-ext=""> 0 Тогда 
   КолСимволов = (СтрДлина(ЦенаНом)+1)-НайдСимвол;
   ЦенаНом = Лев(ЦенаНом, СтрДлина(ЦенаНом)-КолСимволов);
  КонецЕсли; 
  Если ЗначениеЗаполнено(Артикул) Тогда
   НайденаяНоменклатура = ПоискЭлементаСпрНоменклатуры(Артикул);
   
   Если НайденаяНоменклатура <> Неопределено Тогда
    
    ЗаписьЦен(НайденаяНоменклатура, ЦенаНом);
    //ОбновитьЦеныНоменклатуры(НайденаяНоменклатура);
    //НайденаПозиция = Истина;
   Иначе
    НовНомеклатура = ЗаписьНовогоЭлемНоменклатуры(НаимНом, Артикул);
   // ЭлемФормы =  НовНомеклатура.ПолучитьФорму("ФормаЭлемента");
   //ЭлемФормы.ОсновнаяЦенаПродажи = 15;
   // УправлениеСвойствами.ПередЗаписьюНаСервере(ЭлемФормы, НовНомеклатура);
    ЗаписьЦен(НовНомеклатура, ЦенаНом);
    
    
    //Сообщить(Артикул);
   КонецЕсли;
   
   //ПустыеКолонки = ПустыеКолонки + 1;
   //
   //Если ПустыеКолонки < 10 Тогда
   // Продолжить;
   //Иначе
   // Прервать;
   //КонецЕсли;
   
  КонецЕсли;

  НомСтроки = НомСтроки + 1;   

 КонецЦикла;
 
 
 
КонецПроцедуры 


&НаСервере
Функция ПоискЭлементаСпрНоменклатуры(ПоискПоАртиклу)

 Запрос = Новый Запрос;
 Запрос.Текст = 
 "ВЫБРАТЬ
 | Номенклатура.Ссылка КАК Ссылка,
 | Номенклатура.Наименование КАК Наименование,
 | Номенклатура.Артикул
 | 
 |ИЗ
 | Справочник.Номенклатура КАК Номенклатура
 |ГДЕ
 | Номенклатура.Артикул = &Артикул";
 Запрос.УстановитьПараметр("Артикул", ПоискПоАртиклу);
 Рез = Запрос.Выполнить();
 Если Рез.Пустой() Тогда
  Возврат(Неопределено);
 ИначеЕсли Рез.Выбрать().Количество() = 1 Тогда
  Выборка = Рез.Выбрать();
  Выборка.Следующий();
  Возврат(Выборка.Ссылка);
 КонецЕсли; 

КонецФункции

&НаСервере
Процедура ОбновитьЦеныНоменклатуры(НайденаяНоменклатура)
 
 
 
КонецПроцедуры 


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

КонецФункции 


Процедура ЗаписьЦен(ЭлемНом, ЦенаНом)
 
 НаборЗап = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
 НаборЗап.Отбор.Номенклатура.Установить(ЭлемНом);
 НаборЗап.Отбор.Период.Установить(ТекущаяДата());
 НовЗапись = НаборЗап.Добавить();
 НовЗапись.Номенклатура = ЭлемНом.Ссылка;
 НовЗапись.Период = ТекущаяДата();
 НовЗапись.ВидЦен = Справочники.ВидыЦен.Оптовая;
 НовЗапись.Цена = ЦенаНом;
 НовЗапись.ЕдиницаИзмерения = ЭлемНом.ЕдиницаИзмерения;
 НаборЗап.Записать(Истина);
 
 
КонецПроцедуры 
Структура прайса


Обработка прайса для 1С


//Перем ExcelПриложение;


&НаКлиенте
Процедура ФайлЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
 
 СтандартнаяОбработка = Ложь;
    ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ВыборФайла.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|Документ Excel (*.xlsx)|*.xlsx";
    ВыборФайла.ПроверятьСуществованиеФайла = Истина;
    ВыборФайла.ПолноеИмяФайла = Объект.ФайлЗагрузки;
    Выбор = ВыборФайла.Выбрать();
    Если НЕ Выбор Тогда
        Возврат;
    КонецЕсли;
    Объект.ФайлЗагрузки = ВыборФайла.ВыбранныеФайлы[0];

 
КонецПроцедуры



&НаКлиенте
Процедура Загрузить(Команда)
 
 ВыгрузкаДанныхИзЕксель();
 
КонецПроцедуры


&НаКлиенте
Процедура ВыгрузкаДанныхИзЕксель()
 
 Если ПустаяСтрока(Объект.ФайлЗагрузки) Тогда
      Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
      Возврат;
    КонецЕсли;
   
   Попытка
      // Загрузка Microsoft Excel
      Состояние("Загрузка Microsoft Excel...");
      ExcelПриложение = Новый COMОбъект("Excel.Application");
   Исключение
      Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      Возврат;
   КонецПопытки;
   
   Попытка
      // Открытие файла Microsoft Excel
      Состояние("Открытие файла Microsoft Excel...");
      ExcelФайл = ExcelПриложение.WorkBooks.Open(Объект.ФайлЗагрузки);
   Исключение
      Сообщить("Ошибка открытия файла Microsoft Excel." + Объект.ФайлЗагрузки + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
   КонецПопытки;
   
   Попытка
      // Обработка файла Microsoft Excel
      Состояние("Обработка файла Microsoft Excel...");
      // Читаем данные первого листа книги
   
      ExcelЛист = ExcelФайл.Sheets(Объект.НомерЛиста);  // Какой лист читаем
   ЧтениеИзФайлаСервера(ExcelЛист);
   ПрошлоЧтение = Истина;
  
   Исключение
      Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      // Закрыть COM соединение для экономии памяти
      ExcelПриложение.Quit();
   ПрошлоЧтение = Ложь;
   КонецПопытки;
   Если ПрошлоЧтение Тогда
    ExcelПриложение.Quit();
   КонецЕсли;
   
КонецПроцедуры 

&НаКлиенте
Процедура ЧтениеИзФайлаСервера(ExcelЛист)
 
 Если не ЗначениеЗаполнено(Объект.ФайлЗагрузки) Тогда
  Сообщить("Может сначала выбрать файл!");
  Возврат;
 КонецЕсли;
 АнализВыполнен = 1;
 Лист = ExcelЛист;//.WorkSheets(1);
 
 НомПоляАртикул = 1;
 НомСтрокиАртикул = 1;
 КолАрт = 0 ;
 КатНом = "";
 ПерКатНом = "";
 НайденАртикул = ПоискСтрокиПоляАртикула(ExcelЛист, НомСтрокиАртикул, НомПоляАртикул);
 Пока НайденАртикул Цикл
     КолАрт = КолАрт + 1;
  Артикул = СокрЛП(Лист.Cells(НомСтрокиАртикул+1, НомПоляАртикул).Text);
  СледСтрока = Ложь;  
  Пока Артикул <> "" Цикл
   Если Не СледСтрока Тогда
    НомПоляЦена = НомПоляАртикул;
    НайденаЦена = ПоискСтрокиПоляЦена(ExcelЛист, НомСтрокиАртикул, НомПоляЦена);
    Если НайденаЦена Тогда
     ЦенаНом = СокрЛП(Лист.Cells(НомСтрокиАртикул+1, НомПоляЦена).Text);
     НайдСимвол = Найти(ЦенаНом, "р");
     Если НайдСимвол <> 0 Тогда 
      КолСимволов = (СтрДлина(ЦенаНом)+1)-НайдСимвол;
      ЦенаНом = Лев(ЦенаНом, СтрДлина(ЦенаНом)-КолСимволов);
     КонецЕсли;
    Иначе
     ЦенаНом = 0;
    КонецЕсли;
   КонецЕсли; 
   НайденаяНоменклатура = ПоискЭлементаСпрНоменклатуры(Артикул);
   Если Не СледСтрока Тогда
    НаимНом = СокрЛП(Лист.Cells(НомСтрокиАртикул-1, НомПоляАртикул).Text); 
    КатНом = СокрЛП(Лист.Cells(НомСтрокиАртикул-2, НомПоляАртикул).Text);
    Если КатНом <>"" Тогда
     ПерКатНом = КатНом;
    КонецЕсли; 
   КонецЕсли;
   Если НайденаяНоменклатура <> Неопределено Тогда
    ЗаписьЦен(НайденаяНоменклатура, ЦенаНом);
   Иначе
    НПоля = НомПоляАртикул + 1;
    ОписаниеНом = "";
    Пока НПоля < НомПоляЦена Цикл
     ОписаниеНом = ОписаниеНом + СокрЛП(Лист.Cells(НомСтрокиАртикул+1, НПоля).Text)+"/";  
     НПоля = НПоля + 1; 
    КонецЦикла;  
    НовНомеклатура = ЗаписьНовогоЭлемНоменклатуры(НаимНом, Артикул, ОписаниеНом, ПерКатНом);
    ЗаписьЦен(НовНомеклатура, ЦенаНом);
    
   КонецЕсли;
            НомСтрокиАртикул = НомСтрокиАртикул + 1;
   Артикул = СокрЛП(Лист.Cells(НомСтрокиАртикул+1, НомПоляАртикул).Text);
   СледСтрока = Истина;
  КонецЦикла; 
  //
  НомСтрокиАртикул = НомСтрокиАртикул + 1;
  НайденАртикул = ПоискСтрокиПоляАртикула(ExcelЛист, НомСтрокиАртикул, НомПоляАртикул);
 КонецЦикла; 
  
 Сообщить(КолАрт);
 
  
 
КонецПроцедуры 


&НаКлиенте
Функция  ПоискСтрокиПоляЦена(Лист, НомСтрокиАртикул, НомПоляЦена)
 
 ПустыеСтроки = 0;
 ПустыеПоля = 0;
 
 Пока  ПустыеПоля < 3 Цикл //+3 - ??????????  ИЛИ НомСтроки<24 
  
  НаверноеЦена = СокрЛП(Лист.Cells(НомСтрокиАртикул, НомПоляЦена).Text); 
  ТутЦена = Найти(НРег(НаверноеЦена), "цен");
   
  Если ТутЦена <> 0 Тогда
   Возврат(Истина);
  ИначеЕсли НаверноеЦена = "" Тогда
   ПустыеПоля = ПустыеПоля + 1;
   
  Иначе 
   НомПоляЦена = НомПоляЦена + 1;
     
  КонецЕсли; 
   
 КонецЦикла; 
 Возврат(Ложь);
 
КонецФункции 


&НаКлиенте
Функция  ПоискСтрокиПоляАртикула(Лист, НомСтрокиАртикул, НомПоляАртикул)
 
 ПустыеСтроки = 0;
 ПустыеПоля = 0;
 
 Пока  ПустыеСтроки < 7 ИЛИ ПустыеПоля < 7 Цикл //+3 - ??????????  ИЛИ НомСтроки<24 
  
  НаверноеАртикул = СокрЛП(Лист.Cells(НомСтрокиАртикул, НомПоляАртикул).Text); 
  ТутАрт = Найти(НРег(НаверноеАртикул), "арт");
   
  Если ТутАрт <> 0 Тогда
   Возврат(Истина);
  ИначеЕсли НаверноеАртикул = "" Тогда
   ПустыеСтроки = ПустыеСтроки + 1;
   НомСтрокиАртикул = НомСтрокиАртикул + 1;
   Если ПустыеСтроки = 7 Тогда
    Если ПустыеПоля < 8 Тогда
     ПустыеСтроки = 0;
    КонецЕсли; 
    ПустыеПоля = ПустыеПоля + 1;
    НомПоляАртикул = НомПоляАртикул + 1;
    НомСтрокиАртикул = 1;
   КонецЕсли; 
  Иначе 
   НомСтрокиАртикул = НомСтрокиАртикул + 1;
     
  КонецЕсли; 
   
 КонецЦикла; 
 Возврат(Ложь);
 
КонецФункции 

&НаСервере
Функция ПоискЭлементаСпрНоменклатуры(ПоискПоАртиклу)

 Запрос = Новый Запрос;
 Запрос.Текст = 
 "ВЫБРАТЬ
 | Номенклатура.Ссылка КАК Ссылка,
 | Номенклатура.Наименование КАК Наименование,
 | Номенклатура.Артикул
 | 
 |ИЗ
 | Справочник.Номенклатура КАК Номенклатура
 |ГДЕ
 | Номенклатура.Артикул = &Артикул";
 Запрос.УстановитьПараметр("Артикул", ПоискПоАртиклу);
 Рез = Запрос.Выполнить();
 Если Рез.Пустой() Тогда
  Возврат(Неопределено);
 ИначеЕсли Рез.Выбрать().Количество() = 1 Тогда
  Выборка = Рез.Выбрать();
  Выборка.Следующий();
  Возврат(Выборка.Ссылка);
 КонецЕсли; 

КонецФункции

&НаСервере
Процедура ОбновитьЦеныНоменклатуры(НайденаяНоменклатура)
 
 
 
КонецПроцедуры 


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

КонецФункции 


Процедура ЗаписьЦен(ЭлемНом, ЦенаНом)
 
 НаборЗап = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
 НаборЗап.Отбор.Номенклатура.Установить(ЭлемНом);
 НаборЗап.Отбор.Период.Установить(ТекущаяДата());
 НовЗапись = НаборЗап.Добавить();
 НовЗапись.Номенклатура = ЭлемНом.Ссылка;
 НовЗапись.Период = ТекущаяДата();
 НовЗапись.ВидЦен = Справочники.ВидыЦен.Оптовая;
 НовЗапись.Цена = ЦенаНом;
 НовЗапись.ЕдиницаИзмерения = ЭлемНом.ЕдиницаИзмерения;
 НаборЗап.Записать(Истина);
 
 
КонецПроцедуры 

&НаКлиенте
Процедура ПриОткрытии(Отказ)
 Объект.НомерЛиста = 1;
КонецПроцедуры



Структура прайса


Обработка прайса для 1С



//Перем ExcelПриложение;


&НаКлиенте
Процедура ФайлЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
 
 СтандартнаяОбработка = Ложь;
    ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ВыборФайла.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|Документ Excel (*.xlsx)|*.xlsx";
    ВыборФайла.ПроверятьСуществованиеФайла = Истина;
    ВыборФайла.ПолноеИмяФайла = Объект.ФайлЗагрузки;
    Выбор = ВыборФайла.Выбрать();
    Если НЕ Выбор Тогда
        Возврат;
    КонецЕсли;
    Объект.ФайлЗагрузки = ВыборФайла.ВыбранныеФайлы[0];

 
КонецПроцедуры



&НаКлиенте
Процедура Загрузить(Команда)
 
 //Если Объект.НомерЛиста > 3 И Объект.НомерЛиста < 9 Тогда
  ВыгрузкаДанныхИзЕксель();
 //Иначе
 // Сообщить("Укажите номера листов от 4х до 8ми!");
 //КонецЕсли;
 
КонецПроцедуры


&НаКлиенте
Процедура ВыгрузкаДанныхИзЕксель()
 
 Если ПустаяСтрока(Объект.ФайлЗагрузки) Тогда
      Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
      Возврат;
    КонецЕсли;
   
   Попытка
      // Загрузка Microsoft Excel
      Состояние("Загрузка Microsoft Excel...");
      ExcelПриложение = Новый COMОбъект("Excel.Application");
   Исключение
      Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      Возврат;
   КонецПопытки;
   
   Попытка
      // Открытие файла Microsoft Excel
      Состояние("Открытие файла Microsoft Excel...");
      ExcelФайл = ExcelПриложение.WorkBooks.Open(Объект.ФайлЗагрузки);
   Исключение
      Сообщить("Ошибка открытия файла Microsoft Excel." + Объект.ФайлЗагрузки + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
   КонецПопытки;
   
   Попытка
      // Обработка файла Microsoft Excel
      Состояние("Обработка файла Microsoft Excel...");
      // Читаем данные первого листа книги
   
      ExcelЛист = ExcelФайл.Sheets(1); // Какой лист читаем
   ЧтениеИзФайлаСервера(ExcelЛист);
   ПрошлоЧтение = Истина;
  
   Исключение
      Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      // Закрыть COM соединение для экономии памяти
      ExcelПриложение.Quit();
   ПрошлоЧтение = Ложь;
   КонецПопытки;
   Если ПрошлоЧтение Тогда
    ExcelПриложение.Quit();
   КонецЕсли;
   
КонецПроцедуры 

&НаКлиенте
Процедура ЧтениеИзФайлаСервера(ExcelЛист)
 
 Если не ЗначениеЗаполнено(Объект.ФайлЗагрузки) Тогда
  Сообщить("Может сначала выбрать файл!");
  Возврат;
 КонецЕсли;
 АнализВыполнен = 1;
 Лист = ExcelЛист;//.WorkSheets(1);
 
 НомПоляАртикул1 = 4;
 НомПоляАртикул2 = 5;
 
 НомПоляНаим = 9;
 НомПоляЦена = 11;
 //ПолеДо = 5;
 НомСтроки = 3;
 Артикул1 = СокрЛП(Лист.Cells(НомСтроки, НомПоляАртикул1).Text);
 Артикул2 = СокрЛП(Лист.Cells(НомСтроки, НомПоляАртикул2).Text);
 Артикул = Артикул1 + Артикул2;
 ПустыеСтроки = 0;
 КодГр = 0;
 ЗаписьЭлемСпр = Ложь;
 Пока  ПустыеСтроки < 7  Цикл // И НомСтроки<27  +3 - ??????????  ИЛИ НомСтроки<24 
  Артикул1 = СокрЛП(Лист.Cells(НомСтроки, НомПоляАртикул1).Text);
  Артикул2 = СокрЛП(Лист.Cells(НомСтроки, НомПоляАртикул2).Text);
  Артикул = Артикул1 + Артикул2;
  НаимНом = СокрЛП(Лист.Cells(НомСтроки, НомПоляНаим).Text); 
  ЦенаНом = СокрЛП(Лист.Cells(НомСтроки, НомПоляЦена).Text); 
  ОписНом = СокрЛП(Лист.Cells(НомСтроки, 6).Text) + " / "+СокрЛП(Лист.Cells(НомСтроки, 7).Text);
  НайдСимвол = Найти(ЦенаНом, "р");
  Если НайдСимвол <> 0 Тогда 
   КолСимволов = (СтрДлина(ЦенаНом)+1)-НайдСимвол;
   ЦенаНом = Лев(ЦенаНом, СтрДлина(ЦенаНом)-КолСимволов);
  КонецЕсли; 
  ТутАрт = Найти(НРег(Артикул), "арт");
  ТутНаим = Найти(Нрег(НаимНом), "наим");
   
  Если ТутАрт <> 0 ИЛИ ТутНаим <> 0 Тогда
   НомСтроки = НомСтроки + 1;
   ПустыеСтроки = ПустыеСтроки + 1;
   Продолжить;
  КонецЕсли; 
  // тут записываем элементы ном-ры
  Если ЗначениеЗаполнено(Артикул) и ЗначениеЗаполнено(НаимНом) Тогда
   НайденаяНоменклатура = ПоискЭлементаСпрНоменклатуры(Артикул);
   ЗаписьЭлемСпр = Истина;
   Если НайденаяНоменклатура <> Неопределено Тогда
    ЗаписьЦен(НайденаяНоменклатура, ЦенаНом);
   Иначе
    НовНомеклатура = ЗаписьНовогоЭлемНоменклатуры(НаимНом, Артикул, ОписНом);
    ЗаписьЦен(НовНомеклатура, ЦенаНом);
   КонецЕсли;
   Иначе 
    ПустыеСтроки = ПустыеСтроки + 1;
  // КонецЕсли;
  КонецЕсли;

  НомСтроки = НомСтроки + 1;   

 КонецЦикла;
 
 
 
КонецПроцедуры 

&НаСервере
Функция ПоискРодГруппы(КодГр)
 
 НайдГр = Справочники.Номенклатура.НайтиПоКоду(КодГр).Родитель;
 Возврат(НайдГр);
 
КонецФункции 

&НаСервере
Функция ПоискЭлементаСпрНоменклатуры(ПоискПоАртиклу)

 Запрос = Новый Запрос;
 Запрос.Текст = 
 "ВЫБРАТЬ
 | Номенклатура.Ссылка КАК Ссылка,
 | Номенклатура.Наименование КАК Наименование,
 | Номенклатура.Артикул
 | 
 |ИЗ
 | Справочник.Номенклатура КАК Номенклатура
 |ГДЕ
 | Номенклатура.Артикул = &Артикул";
 Запрос.УстановитьПараметр("Артикул", ПоискПоАртиклу);
 Рез = Запрос.Выполнить();
 Если Рез.Пустой() Тогда
  Возврат(Неопределено);
 ИначеЕсли Рез.Выбрать().Количество() = 1 Тогда
  Выборка = Рез.Выбрать();
  Выборка.Следующий();
  Возврат(Выборка.Ссылка);
 КонецЕсли; 

КонецФункции

&НаСервере
Процедура ОбновитьЦеныНоменклатуры(НайденаяНоменклатура)
 
 
 
КонецПроцедуры 


&НаСервере
Функция ЗаписьНовогоЭлемНоменклатуры(НаимНом, Артикул, ОписНом) //
 
 Группа = Справочники.Номенклатура.НайтиПоНаименованию("Категория4");
 Если Группа.Пустая() Тогда
  СоздГруппы = Справочники.Номенклатура.СоздатьГруппу();
  СоздГруппы.Наименование = "Категория4";
  СоздГруппы.Записать();
 КонецЕсли;
 Если Не Артикул="" Тогда
  НовЭлСпрНоменклатуры = Справочники.Номенклатура.СоздатьЭлемент();
  НовЭлСпрНоменклатуры.Наименование = НаимНом;
  НовЭлСпрНоменклатуры.НаименованиеПолное =  НаимНом;
  НовЭлСпрНоменклатуры.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");  // будет наверное меняться
  НовЭлСпрНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Запас; 
  НовЭлСпрНоменклатуры.НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Товары"); // будет меняться
  НовЭлСпрНоменклатуры.Комментарий = ОписНом;
  НовЭлСпрНоменклатуры.Артикул = Артикул;
  НовЭлСпрНоменклатуры.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Категория4"); 
  
   
  Попытка
    НовЭлСпрНоменклатуры.Записать();
   Сообщить("Записана номенклатура: "+ НовЭлСпрНоменклатуры.Наименование);
   Возврат(НовЭлСпрНоменклатуры.Ссылка);
  Исключение
   Сообщить(ОписаниеОшибки());
  КонецПопытки;
 КонецЕсли; 

КонецФункции 

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

КонецФункции 



Процедура ЗаписьЦен(ЭлемНом, ЦенаНом)
 
 НаборЗап = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
 НаборЗап.Отбор.Номенклатура.Установить(ЭлемНом);
 НаборЗап.Отбор.Период.Установить(ТекущаяДата());
 НовЗапись = НаборЗап.Добавить();
 НовЗапись.Номенклатура = ЭлемНом.Ссылка;
 НовЗапись.Период = ТекущаяДата();
 НовЗапись.ВидЦен = Справочники.ВидыЦен.Оптовая;
 НовЗапись.Цена = ЦенаНом;
 НовЗапись.ЕдиницаИзмерения = ЭлемНом.ЕдиницаИзмерения;
 НаборЗап.Записать(Истина);
 
 
КонецПроцедуры 


Структура прайса



четверг, 7 мая 2015 г.

Мастер-класс по интеграции Битрикс с 1С

Добавить справочник "Производители" в "Управление торговлей" 10


1) Открыть конфигуратор.
2) Конфигурация -> Открыть конфигурацию.
3) Справочники -> Правая кнопка -> Добавить справочник.
4) Откроется форма нового справочника -> Наименование (пишем) мегапрайсПроизводителиНоменклатуры
5) Закладка данные -> Длина кода 11
6) Готово! Справочник готов. Вы получили первый опыт конфигурирования 1С!

Теперь нужно добавить реквизит в номенклатуре.
1) Справочники -> Ищем Номенклатура.
2) Раскрываем -> Реквизиты -> Добавить
3) Внизу на щелкаем на Новый1 -> Свойства
4) Наименование -> мегапрайсПроизводитель
5) Тип (жмем кнопку выбора) -> Ищем и выбираем Справочники -> мегапрайсПроизводители
6) Готово!

Для вывода в форму списка (чтобы в справочнике было видно поле, можно делать сортировки и всегда работать с этим полем):
1) Там же в справочнике номенклатура Формы
2) ФормаСписка -> Щелкаем.
3) Открывается форма -> На ней правой кнопкой Размещение данных.
4) Ставим галочку на мегапрайсПроизводитель. ОК
5) Готово!

Вы все сделали! Нажимаем теперь кнопку F5 для принятия изменений (в базе никого не должно быть). На все вопросы надимаем ОК.
ГОТОВО! Теперь вы можете полноценно работать с производителями номенклатуры в своей базе.
Справочник и реквизит дадут больше возможностей работать со всеми вашими задачами.

Почему не через механизм дополнительных свойств? Через доп. реквизиты в 1С очень туго работать.
1) Для целей загрузки номенклатуры, поиски через доп реквизиты требуют сложных алгоритмов написания программ загрузки
2) Доп. свойства будут тормозить загрузку
3) Их неудобно просматривать
4) Доп. свойства не видны в обычных списках (а встроенные можно добавлять прям в справочник и ничего тормозить не будет, плюс там же сразу можно будет по нету отбирать и так далее). Для автозапчастей Производитель не подходит в качестве дополнительного реквизита.
5) Встроенный реквизит легко доступен для отборов и группировок. особенно если этот реквизит используется на каждом шагу.
6) Отчеты и обработки будут работать в 1000 раз быстрее с встроенным реквизитом.

понедельник, 16 февраля 2015 г.

Публикация баз данных «1С:Предприятия» 8.3 на веб-сервере IIS в Microsoft Windows Server 2008/2012 | Tavalik.ru

Публикация баз данных «1С:Предприятия» 8.3 на веб-сервере IIS в Microsoft Windows Server 2008/2012 | Tavalik.ru:



'via Blog this'



Публикация баз данных «1С:Предприятия» 8.3 на веб-сервере IIS в Microsoft Windows Server 2008/2012

Logo_1c_8В данной статье я подробно опишу процесс организации веб- доступа к базам данных «1С:Предприятие» 8.3 на веб-сервере IIS (Internet Information Server), входящего в поставку Microsoft Windows Server. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен. Будет рассмотрен алгоритм настройки IIS для работы «1С:Предприятие», а также описан процесс публикации баз данных на веб-сервере как для 32-разрядного, так и для 64-разрядного модуля расширения веб-сервера.

1. Что понадобится

  1. Компьютер отвечающий минимальным системным требованиям для работы веб-сервера под управлением одной из операционных систем:
  2. Права локального администратора на данном компьютере.
  3. Дистрибутив для установки компонент «1С:Предприятие». Для настройки 64-разрядного модуля расширения веб-сервера, дистрибутив для установки 64-разрядного сервера «1С:Предприятие». В данном примере используется версия 8.3.4.389. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен.

2. Установка веб-сервера IIS

Устанавливаем веб-сервер Internet Information Server, который по умолчанию входит в поставку Microsoft Windows Server. При установке обязательно выбираем компоненты:
  • Общие функции HTTP (Common HTTP Features)
    • Статическое содержимое (Static Content)
    • Документ по умолчанию (Default Document)
    • Обзор каталогов (Directory Browsing)
    • Ошибки HTTP (HTTP Errors)
  • Разработка приложений (Application Development)
    • ASP
    • ASP.NET 3.5
    • Расширяемость .NET 3.5 (.NET Extensibility 3.5)
    • Расширения ISAPI (ISAPI Extensions)
    • Фильтры ISAPI (ISAPI Filters)
  • Исправление и диагностика (Health and Diagnostics)
    • Ведение журнала HTTP (HTTP Logging)
    • Монитор запросов (Request Monitor)
  • Средства управления (Management Tools)
    • Консоль управления IIS (IIS Management Console)
Подробно про процесс развертывания веб-сервера IIS я писал:
  • В Microsoft Windows Server 2012 (R2) — здесь. IIS версии 8, после установки должны увидеть страницу Default Web Site вида:
Ustanovka_IIS_8_Winsdows_Server_2012_13

3. Установка компонент «1С:Предприятие»

На этот же сервер, где развернут веб-сервер IIS, устанавливаем «1С:Предприятие» (32-разрядные компоненты) обязательно выбрав при установке компоненты:
  • 1С:Предприятие
  • Модули расширения веб-сервера
publikaciya_bd_na_web_server_IIS_23
Если планируется настроить 64-разрядный модуль расширения веб-сервера, то необходимо дополнительно запустить программу установки 64-разрядного сервера из соответствующей поставки «1С:Предприятие» и установить компоненту:
  • Модуль расширения веб-сервера
publikaciya_bd_na_web_server_IIS_31

4. Настройка операционной системы

Теперь необходимо установить необходимые права на ключевые папки, используемые при работе веб-доступа к базам данных «1С:Предприятие». Для каталога хранения файлов веб-сайтов, опубликованных на веб-сервере (по умолчанию C:\inetpub\wwwroot\ ) необходимо дать полные права группе «Пользователи» (Users). В принципе, этот шаг можно пропустить, но тогда для публикации или изменения публикации базы данных надо будет запускать «1С:Предприятие» от имени администратора. Для настройки безопасности данного каталога, кликаем по нему правой кнопкой мыши и в контекстном меню выбираем «Свойства» (Properties).
publikaciya_bd_na_web_server_IIS_01
В открывшемся окне свойств, переходим на вкладку «Безопасность» (Security) и нажимаем кнопку «Изменить» (Edit…), для изменения действующих разрешений. Появится окно разрешений для данного каталога. В списке Групп или пользователей (Groups or user names) выделим группу «Пользователи» (Users) и в списке разрешений для выбранной группы установим флаг «Польный доступ» (Full control). Затем нажмем «Применить» (Apply) для записи изменений и закроем все окна при помощи кнопки «ОК».
publikaciya_bd_na_web_server_IIS_02
Далее необходимо дать полные права на каталог с установленными файлами «1С:Предприятие» (по умолчанию C:\Program Files (x86)\1cv8\ для 32-разрядного модуля расширения и C:\Program Files\1cv8\ для 64-разрядного) группе IIS_IUSRS. Для этого выполняем аналогичные описанным выше действия, с той лишь разницей, что для того чтобы необходимая группа появилась в списке «Группы или пользователи» (Groups or user names) необходимо нажать расположенную под списком кнопку «Добавить» (Add..), а в окне выбора групп или пользователей нажать «Дополнительно» (Advanced…).
publikaciya_bd_na_web_server_IIS_03
Затем нажимаем расположенную справа кнопку «Поиск» (Find Now), после чего выбираем необходимую группу IIS_IUSRS в таблице результатов поиска и нажимаем «ОК».
publikaciya_bd_na_web_server_IIS_04
Группа IIS_IUSRS появится в списке групп или пользователей. Даем ей полные права на на выбранную директорию и нажимаем  «Применить» (Apply) для сохранения изменений.
publikaciya_bd_na_web_server_IIS_05
Ну и наконец, если публикация выполняется для файловой базы, необходимо также дать группе IIS_IUSRS полные права на каталог с расположенными файлами данной информационной базы.publikaciya_bd_na_web_server_IIS_06

5. Публикация базы данных на веб-сервере

Переходим к непосредственной публикации базы данных на веб-сервере. Для этого запускаем «1С:Предприятие» в режиме Конфигуратор для той базы, которую требуется опубликовать.  Затем в меню выбираем «Администрирование» — «Публикация на веб-сервере…»
publikaciya_bd_na_web_server_IIS_07
Откроется окно настройки свойств публикации на веб-сервере. Основные поля необходимые для публикации уже заполнены по умолчанию:
  • Имя виртуального каталога — имя по которому будет происходить обращение к база данных на веб-сервере. Может состоять только из символов латинского алфавита.
  • Веб сервер — выбирается из списка найденных на текущем компьютере веб-серверов. В нашем случае это Internet Information Services.
  • Каталог — физическое расположение каталога, в котором будут располагаться файлы виртуального приложения.
  • Соответствующими флагами можно указать типы клиентов для публикации, а также указать возможность публикации Web-сервисов. В расположенной ниже таблице можно отредактировать список Web-сервисов которые будут опубликованы, а также в столбце «Адрес» изменить синоним, по которому будет происходить обращение к данному Web-сервису.
  • Также для веб-сервера IIS есть возможность указать необходимость выполнения аутентификации на веб-сервере средствами ОС, установив соответствующий флаг.
Выбрав необходимые настройки публикации нажимаем «Опубликовать».
publikaciya_bd_na_web_server_IIS_08
Если публикация прошла без ошибок, увидим соответствующее сообщение.
Публикация на веб-сервере IIS всегда выполняется для веб-сайта по умолчанию и для пула приложения по умолчанию. Стоит иметь ввиду, что при выполнении публикации из конфигуратора будет зарегистрирован 32-разрядный модуль расширения веб-сервера, а используемый по умолчанию пул приложений — DefaultAppPool - без настройки работает только с 64-разрядными приложениями. Соответственно, дальнейшие действия зависят от разрядности модуля расширения веб-сервера, который планируется использовать. Для 32-разрядного модуля расширения веб-сервера, необходимо разрешить пулу приложений использовать 32-разрядные приложения, либо же зарегистрировать 64-разрядный модуль расширения веб-сервера. Об этом пойдет речь ниже

6. Настройка IIS для использования 32-разрядного модуля расширения веб-сервера

Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
publikaciya_bd_na_web_server_IIS_10
Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию —Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которое мы задавали при публикации базы данных. Для завершения публикации осталось только разрешить 32-разрядные приложения для пула приложений по умолчанию. Для этого перейдем в дереве подключений на вкладку «Пулы приложений» (Application Pools).
publikaciya_bd_na_web_server_IIS_11
В списке пулов приложений найдем пул с именем DefaultAppPool. Кликнем по нему правой кнопкой мыши и в контекстном меню выберем пункт «Дополнительные параметры» (Advanced Settings).
publikaciya_bd_na_web_server_IIS_12
В открывшемся окне параметров пула приложения, в группе «Общие» (General) найдем пункт «Разрешены 32-разрядные приложения» (Enable 32-Bit Applications) и установим значение параметра равным True. Затем сохраним изменения нажав «ОК».
publikaciya_bd_na_web_server_IIS_13

7. Настройка IIS для использования 64-разрядного модуля расширения веб-сервера

Зарегистрировать 64-разрядный модуль расширения веб-сервера можно с помощью утилиты webinst.exe соответствующей версии, расположенной в каталоге bin, каталога с установленной программой «1С:Предприятие», либо воспользоваться приведенным ниже способом.
Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
publikaciya_bd_na_web_server_IIS_10
Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию —Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которым мы задавали при публикации базы данных. Для завершения публикации осталось только указать данному приложению использовать 64-разрядный обработчик запросов. Для этого откроем страницу настройки сопоставления обработчиков для данного виртуально каталога, выбрав пункт «Сопоставление обработчиков» (Handler Mappings) на начальной странице приложения.
publikaciya_bd_na_web_server_IIS_19
В таблице сопоставлений обработчиков найдем обработчик «1С Web-service Extension». Откроем данный обработчик, кликнув 2 раза по соответствующей строке в таблице.publikaciya_bd_na_web_server_IIS_32

Отредактируем обработчик, заменив путь к исполняемой dll 32-разрядного модуля расширения веб-сервера, который выбран в данный момент, на путь к 64-разрядной версии библиотеки. В данном примере меняем путь c «C:\Program Files (x86)\1cv8\8.3.4.389\bin\wsisapi.dll» на «C:\Program Files\1cv8\8.3.4.389\bin\wsisapi.dll» воспользовавшись кнопкой выбора. Изменив путь нажимаем «ОК» для сохранения изменений.
publikaciya_bd_na_web_server_IIS_33

8. Подключение к опубликованной информационной базе через веб-браузер

Ну вот вроде и все. Для подключений к только что опубликованной базе данных, запускаем Internet Explorer, и в строке адреса вводим путь вида http://localhost/<Имя публикации информационной базы>. В данном примере это http://localhost/DemoAccounting/.
publikaciya_bd_na_web_server_IIS_14
К данной информационной базе также можно подключиться и с любого компьютера в сети, обратившись к веб-серверу по его внутреннему (или если прокинут порт 80, по внешнему) IP-адресу.
В этом случае, для корректной работы «1С:Предприятие», имя домена, на который идет обращение (или IP-адрес) должен быть добавлен в надежные узлы Internet Explorer, а также для него должны быть разрешены всплывающие окна. Подробнее про настройку Internet Explorer для работы веб-клиента «1С:Предприятие» читайте здесь.
dobavlenie-veb-sajta-v-spisok-nadezhnyx-uzlov-ie_09

9. Подключение к опубликованной информационной базе через клиент «1С:Предприятия»

К опубликованной на веб-сервере информационной базе можно подключиться и с помощью тонкого клиента «1С:Предприятия». Для подключения откроем окно запуска «1С:Предприятие» и нажмем кнопку «Добавить» для добавления информационной базы.
publikaciya_bd_na_web_server_IIS_24
В окне добавления информационной базы/группы установим переключатель в «Добавление в список существующей информационной базы» и нажмем «Далее».
publikaciya_bd_na_web_server_IIS_25
Введем имя базы данных, как она будет отображаться в списке информационных баз (должно быть уникальным для данного списка), тип расположения выберем «На веб-сервере» и нажмем «Далее».
publikaciya_bd_na_web_server_IIS_26
Вводим строку адреса для подключения к информационной базе (без префикса /ru_RU/). Также здесь можно указать параметры прокси-сервера (если есть) и способ аутентификации на веб-сервере. Указав необходимые настройки снова жмем «Далее».
publikaciya_bd_na_web_server_IIS_27
Указываем параметры запуска для информационной базы и нажимаем «Готово» для завершения работы мастера.
publikaciya_bd_na_web_server_IIS_28
После чего данная информационная база появится в списке баз окна запуска «1С:Предприятие».  Обратим внимание что режим запуска Конфигуратор недоступен для данного типа подключения. Нажимаем «1С:Предприятие» для подключения к информационной базе.
publikaciya_bd_na_web_server_IIS_30
publikaciya_bd_na_web_server_IIS_29

10. Конфигурационные файлы виртуального каталога

Рассмотрим подробнее структуру файлов, которые были созданы в процессе публикации. Если веб-доступ к опубликованной информационной базе по каким-то причинам не заработал, конфигурационные файлы можно отредактировать вручную, для достижения желаемого результата (конфигурационные файлы из данной статьи для 64-разрядного модуля расширения веб-сервера можно скачать здесь).
Перейдем в каталог, который мы указывали во время публикации базы данных. В нем увидим два файла:
  • default.vrd
  • web.config
publikaciya_bd_na_web_server_IIS_15
Оба файла доступны для просмотра и редактирования с помощью любого текстового редактора, например программы «Блокнот» (Notepad). Рассмотрим структуру этих файлов подробнее.

10.1. Файл default.vrd

В файле default.vrd описываются опубликованные Web-сервисы (элемент <ws>), а также указывается имя виртуального приложения (атрибут base) и строка подключения к информационной базе «1С:Предприятие» (атрибут ib). В данном примере для файловой информационной базы, строка подключения будет следующей:
ib="File=&quot;C:\1C_BASE\DemoAccounting&quot;;"
Как видно из примера, если в строке подключения встречаются символы, недопустимые с точки зрения стандарта XML (http://www.w3.org/TR/xml11/), они должны быть заменены соответствующим образом.
publikaciya_bd_na_web_server_IIS_16
В строке подключения можно указать логин и пароль пользователя. В этом случае, подключение к информационной базе будет выполняться от имени указанного пользователя. Например, для подключения от имени пользователя Продавец, строка подключения будет следующей:
ib="File=&quot;C:\1C_BASE\DemoAccounting&quot;;Usr=Продавец;Pwd=123;"
Для серверной информационной базы строка подключения будет иметь вид:
ib="Srvr=&quot;WIN2012&quote;;Ref=&quote;Accounting&quote;;"
Где WIN2012 — имя кластера серверов «1С:Предприятие», а Accounting — имя базы данных в кластере.
publikaciya_bd_na_web_server_IIS_17
Подробнее про структуру данного файла можно почитать в книге «Руководство администратора» 2-е издание , Приложение 2, глава 3.12.

10.2. Файл web.config

Файл web.config — это файл, определяющий параметры для ASP.NET web-приложения. В каждом web-приложении должен быть файл web.config, находящийся в его корневом каталоге. Наш виртуальный каталог не является исключением. В текущем файле содержатся данные об обработчике «1С Web-service Extension», обрабатывающем запросы к данному приложению. Обработчик настроен таким образом, что все запросы передаются библиотеке wsisapi.dll, расположенной в каталоге bin, каталога с файлами «1С:Предприятие». В случае использования серверных информационных баз, версия библиотеки должна соответствовать версии кластера серверов «1С:Предприятия».
publikaciya_bd_na_web_server_IIS_18
Данный обработчик можно найти (или добавить, если его нет) в Диспетчере служб IIS. Для этого необходимо выделить вкладку с текущим приложением и в окне свойств выбрать пункт «Сопоставления обработчиков» (Handler Mappings).
publikaciya_bd_na_web_server_IIS_19
В таблице сопоставлений обработчиков увидим наш обработчик «1С Web-service Extension». Если такого обработчика в списке нет, его следует добавить выбрав в окне «Действия» (Actions) пункт «Добавление сопоставления сценария с подстановочными знаками» (Add Wildcard Script Map…).
publikaciya_bd_na_web_server_IIS_20
При добавлении вводим имя обработчика и указываем путь к файлу wsisapi.dll. Данные параметры можно изменить и для действующего обработчика выбрав пункт «Изменить…» (Edit…) в окне списка действий.
publikaciya_bd_na_web_server_IIS_21
Необходимо также убедиться, что для обработчика стоит флаг «Выполнение» (Execute) в окне изменений разрешений функции. Вызвать данное окно можно выбрав пункт «Изменение разрешений функции…» (Edit Feature Permissions…) в окне «Действия» (Actions).
publikaciya_bd_na_web_server_IIS_22

Split / разбить dump

//Разбить дамп по 50000 строк for i in `ls *.sql`; do split -d -l 50000 -a 4 --additional-suffix=.sql $i "$(basename "$i" .sq...