среда, 23 мая 2018 г.

Использование констант

 Хранение в константах значений


&НаСервере
Процедура ЗаписатьНастройкиПорталаНаСервере()
 Константы.ПорталПротей_КодКомпании.Установить(ЭтаФорма.КодКомпании);
 Константы.ПорталПротей_Отладка.Установить(ЭтаФорма.ПризнакОтладки);
 Константы.ПорталПротей_ПутьКЛогам.Установить(ЭтаФорма.ПутьКЛогФайлу);
 Константы.ПорталПротей_URLПортала.Установить(ЭтаФорма.АдресПортала);
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьНастройкиПортала(Команда)
 ЗаписатьНастройкиПорталаНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
 ЭтаФорма.КодКомпании = Константы.ПорталПротей_КодКомпании.Получить();
 ЭтаФорма.ПризнакОтладки = Константы.ПорталПротей_Отладка.Получить();
 ЭтаФорма.ПутьКЛогФайлу = Константы.ПорталПротей_ПутьКЛогам.Получить();
 ЭтаФорма.АдресПортала = Константы.ПорталПротей_URLПортала.Получить(); 
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
 ПриОткрытииНаСервере();
КонецПроцедуры

вторник, 27 марта 2018 г.

Для публикации в дополнительных отчетах и обработках ЗУП 3.1

В модуль объекта:

Функция СведенияОВнешнейОбработке() Экспорт

 // Функция формирует данные для записи нового элемента 
  // в справочник «ДополнительныеОтчетыИОбработки». 
  // Ключи формируемой структуры являются именами реквизитов нового элемента, 
  // значения — соответствующими значениями.
  РегистрационныеДанные = Новый Структура();
  РегистрационныеДанные.Вставить("Наименование", "Начисленный ФОТ по подразделениям");
  РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
  РегистрационныеДанные.Вставить("Версия", "v 0.2");
  РегистрационныеДанные.Вставить("Информация", "v 0.2");
  РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");

  тз = Новый ТаблицаЗначений;
  тз.Колонки.Добавить("Идентификатор");
  тз.Колонки.Добавить("Использование");
  тз.Колонки.Добавить("Представление");

 НоваяСтрока = тз.Добавить();
  НоваяСтрока.Идентификатор = "ОткрытьОтчет";
  НоваяСтрока.Использование = "ОткрытиеФормы";      // соответствует Справочники.ДлополнительныеОтчетыИОбработки.Команды.ВариантЗапуска
  НоваяСтрока.Представление = "Обработка ""Начисленный ФОТ по подразделениям""";

 РегистрационныеДанные.Вставить("Команды", тз);

  Возврат РегистрационныеДанные;

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

Проверка на пустое значение

Проверка на пустое значение

Функция ПроверкаНаNULL (ПроверяемоеЗначение)
 Если ЗначениеЗаполнено(ПроверяемоеЗначение)  Тогда 
    ПроверяемоеЗначение = Число(ПроверяемоеЗначение);
 Иначе 
  ПроверяемоеЗначение = 0;
 КонецЕсли;
 Возврат ПроверяемоеЗначение;
КонецФункции 

вторник, 20 марта 2018 г.

Вывод результатов запроса в таблицу значений на форме (программное создание таблицы значений)

Вывод результатов запроса в таблицу значений на форме (программное создание таблицы значений) http://softproc.ru/public/574802/


Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        | Сотрудники.Наименование КАК Наименование
        |ИЗ
        | Справочник.Сотрудники КАК Сотрудники"; 
    Таблица = Запрос.Выполнить().Выгрузить();
 // добавим таблицу: сначала саму таблицу, потом колонку.
 Реквизиты = Новый Массив;
 Реквизиты.Добавить(Новый РеквизитФормы("ТаблицаНаФорме", Новый ОписаниеТипов("ТаблицаЗначений")));
 Для Каждого Ст ИЗ Таблица.Колонки Цикл
  Реквизиты.Добавить(Новый РеквизитФормы(Ст.Имя, Ст.ТипЗначения, "ТаблицаНаФорме"));
 КонецЦикла;

 // добавим реквизиты на форму
 ИзменитьРеквизиты(Реквизиты);

 // добавим элементы формы
 Таб = Элементы.Добавить("ТаблицаНаФорме", Тип("ТаблицаФормы"));
 Таб.ПутьКДанным = "ТаблицаНаФорме";

 // запретим менять положение строк и сами строки, отключим командную панель
 Таб.ИзменятьСоставСтрок = Ложь;
 Таб.ИзменятьПорядокСтрок = Ложь;
 Таб.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;

 Для Каждого Ст ИЗ Таблица.Колонки Цикл
  Рек = Элементы.Добавить("Колонка" + Ст.Имя, Тип("ПолеФормы"), Таб);
  Рек.Вид = ВидПоляФормы.ПолеНадписи;
  Рек.ПутьКДанным = "ТаблицаНаФорме" + "." + Ст.Имя;
  Рек.Заголовок = Ст.Имя;
 КонецЦикла;

 // заполним таблицу
 ЗначениеВРеквизитФормы(Таблица, "ТаблицаНаФорме");

Проверка на пустые строки на форме

Проверка на пустые строки на форме




Если ПустаяСтрока(Объект.Организация) Тогда 
  Сообщить ("Выберите организацию");
  Возврат;
 ИначеЕсли Строка(Объект.НачалоПериода) = "01.01.0001 0:00:00" Тогда
  Сообщить ("Заполните начало периода");
  Возврат;
 ИначеЕсли Строка(Объект.КонецПериода) = "01.01.0001 0:00:00" Тогда
  Сообщить ("Заполните конец периода");
  Возврат;
 Иначе
  Сообщить ("Данные введены успешно");  
КонецЕсли;

среда, 14 марта 2018 г.

Вывод результатов запроса в таблицу значений на форме

Вывод результатов запроса в таблицу значений на форме


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

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

воскресенье, 25 февраля 2018 г.

Работа с контактной информацией сотрудника

Данное дествие необратимо, оно приведет к переносу (копированию) информации:
- мобильный телефон
- электронная почта
- домашний телефон
- рабочий телефон
- адрес прописки
- адрес проживания 
из дополнительных данных сотрудника в личные данные сотрудника (контактная  информация).

Введенная ранее вручную контактная информация в "Личных данных" будет перезаписана без возможности восстановления.

Внимание! Информация в дополнительных данных является первичной по отношению к личным данным.



&НаСервере
Процедура КомандаНачатьПереносДанныхНаСервере()
 //начать пребор сотрудников 
 Выборка = Справочники.Сотрудники.Выбрать(); 
 Счетчик = 1;
 Пока Выборка.Следующий() = 1 Цикл
  //получить доп. данные сотрудника: мобильный телефон, электронная почта, домашний телефон, рабочий телефон
  ТекущийСотрудник = Выборка.Наименование;
  КодТекущийСотрудник = Выборка.Код;
  МобильныйТелефон = Выборка.phonemobile;
  ЭлектроннаяПочта = Выборка.email;
  ДомашнийТелефон = Выборка.phonehome;
  РабочийТелефон = Выборка.phonework;
  АдресПрописки = Выборка.address;
  АдресПроживания = Выборка.addresshome;
  //записать личные данные сотрудника
  РезультатПоиска = Справочники.Сотрудники.НайтиПоНаименованию(ТекущийСотрудник);
  ФЛ=РезультатПоиска.ФизическоеЛицо.ПолучитьОбъект();
  ФЛ.КонтактнаяИнформация.Очистить();
  УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ФЛ,МобильныйТелефон,Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйФизическиеЛица,Перечисления.ТипыКонтактнойИнформации.Телефон);
  УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ФЛ,ЭлектроннаяПочта,Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица,Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
  УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ФЛ,ДомашнийТелефон,Справочники.ВидыКонтактнойИнформации.ТелефонДомашнийФизическиеЛица,Перечисления.ТипыКонтактнойИнформации.Телефон);
  УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ФЛ,РабочийТелефон,Справочники.ВидыКонтактнойИнформации.ТелефонРабочийФизическиеЛица,Перечисления.ТипыКонтактнойИнформации.Телефон);
  УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ФЛ,АдресПрописки,Справочники.ВидыКонтактнойИнформации.АдресПоПропискеФизическиеЛица,Перечисления.ТипыКонтактнойИнформации.Адрес);
  УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ФЛ,АдресПроживания,Справочники.ВидыКонтактнойИнформации.АдресМестаПроживанияФизическиеЛица,Перечисления.ТипыКонтактнойИнформации.Адрес);
  ФЛ.Записать(); 
  Сообщение = "Сотрудник "+Счетчик+" "+ Выборка.Наименование+" Моб. телефон: "
  +МобильныйТелефон+" Эл. почта: "+ЭлектроннаяПочта
  +" Дом. телефон: "+ДомашнийТелефон+" Раб. телефон: "+РабочийТелефон
  +" Адрес прописки: "+АдресПрописки+" Адрес проживания: "+АдресПроживания;
  Сообщить (Сообщение);
  ПорталПротейНаСервере.Логгер ("Перенос в личные данные:", Сообщение, );
  Счетчик = Счетчик +1;
 КонецЦикла; 
КонецПроцедуры

&НаКлиенте
Процедура КомандаНачатьПереносДанных(Команда)
 КомандаНачатьПереносДанныхНаСервере();
КонецПроцедуры