пятница, 19 января 2018 г.

Связь 1с с MySQL через внешние источники данных

Настраиваем по Windows 7 , настройка тестовая.
  1. Качаем и устанавливаем MySQL отсюда (в моем  случае для Windows (x86, 32-bit), MSI Installer - 5.7.21, 370.8M mysql-installer-community-5.7.21.0.msi: https://dev.mysql.com/downloads/installer/
  2. Качаем и устанавливаем коннектор отсюда: https://dev.mysql.com/downloads/connector/odbc/5.1.html. У меня заработала только эта версия
  3. Настраиваем кодировку коннектора: Пуск - Панель управления - Администрирование - Источники данных (ODBC) - Пользователи DSN, добавляем источник данных пользователя, заполняем примерно так:
  4. Создаем тестовую базу test001, не забываем установить сопоставление utf8 - general-ci
  5. Создаем тестовую таблицу, проверяем сопоставление
  6. В конфигураторе 1С добавляем новый внешний источник данных
  7. Кликаем два раза по новому источнику данных и во вкладке "Данные" добавляем новую таблицу и выбираем "Выбрать из спика таблиц внешнего источника данных"
  8. Далее заполняем примерно так:
  9. Выбираем необходимые вам таблицы
  10. Далее два раза кликаем по нужной вам таблице в дереве конфигурации, во вкладке подсистемы отмечаем нужные подсистемы.
  11. Далее в нужной вам форме 1СПредприятия в ранее выбранной подсистеме открываем нужную вам таблицу. При первом запуске система попросит вас заполнить логин, пароль, н сервер и прочие параметры. Заполняем, запоминаем, и в конечном итоге получаем следующее:
  12. Можно использовать

четверг, 18 января 2018 г.

Очистка справочника

Удалить из справочника все данные

Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
   ОбъектСправочника = Выборка.ПолучитьОбъект();
   ОбъектСправочника.Удалить();
КонецЦикла;

понедельник, 15 января 2018 г.

Логгер

Логгер

Общие модули
&НаСервере  
Процедура  Логгер (Метод, Аргумент, Значение) Export
 //////////////////// ИЗМЕНИТЬ ПРИ НАЧАЛЕ ИСПОЛЬЗОВАНИЯ!!!!! ///////////////////
  Каталог = "C:\SystemData\LogPortal\Protei\";
  ////////////////////////////////////////////////////////////////////////////////
  // формат лога: <дата_время> <пользователь> <метод/ошибка> <аргумент> <значение>
  //формирование дата_время, пользователь на сервере, метод, аргумент, значение - в процедуре
  ДатаЗаписи = Формат(ТекущаяДата(), "ДФ='dd.MM.yyyy' ");     //для формирования наименования файла
  ДатаВремяЗаписи = Формат(ТекущаяДата(), "ДФ='dd.MM.yyyy HH:mm:ss' ");
  Дописывать = Истина;
  ЗаписьТекста = Новый ЗаписьТекста(Каталог + "log_" + ДатаЗаписи + ".txt", КодировкаТекста.UTF8,,Дописывать);
  //ЗаписьТекста.ЗаписатьСтроку(СформироватьЗаголовок("Лог работы 1С с порталом за " + ТекущаяДата()));
  Текст = ДатаВремяЗаписи + " " + ПараметрыСеанса.ТекущийПользователь + " " +  Аргумент + " " +  Значение;
  ЗаписьТекста.ЗаписатьСтроку(Текст);
  ЗаписьТекста.Закрыть();
КонецПроцедуры    

Вызов логгера из любой процедуры или финкции:

ПорталПротейНаСервере.Логгер(ТипЗапроса + АдресСтраницыНаСервере + httpResponse  , "StatusCode = " + ОтветHTTP.КодСостояния, ТекстОшибки );

Просмотр логов из формы

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


&НаКлиенте
Процедура КомандаОбновитьЛогФайл(Команда)
 ИмяФайла = ЭтаФорма.ИмяЛогФайла;
 Если ИмяФайла = "" Тогда
  ПоказатьПредупреждение (,"Че обновлять-то будем? Имя файла выбрано.",,"Информация"); 
 Иначе
   ТекстИзФайла = Новый ТекстовыйДокумент;
   ТекстИзФайла.Прочитать(ИмяФайла);
   Текст = ТекстИзФайла.ПолучитьТекст();
   //ИмяЛогФайла = ИмяФайла;
   //Файл.Закрыть();
 КонецЕсли;
КонецПроцедуры


воскресенье, 14 января 2018 г.

Использование Центра оповещений

Использование Центра оповещений для оповещения пользователей с помощью ПоказатьОповещениеПользователя



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