пятница, 18 декабря 2015 г.

Как заполнить табличную часть документа в управляемой форме + передача параметров между управляемыми формами + обновление управляемой формы (1С 8.2 управляемые формы)

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

//в модуле подчиненной формы "ФормаЗагрузки"
 &НаКлиенте  
 Процедура Загрузить(Команда)  
      ЗагрузитьНаСервере();  
      ЭтаФорма.Закрыть();  
      Оповестить("ОбновлениейФормыМоегоДокумента", , ЭтаФорма);  //оповестить форму документа
 КонецПроцедуры  
 &НаСервере  
 Процедура ЗагрузитьНаСервере() Экспорт  
      ДокументОбъект = ДокументСсылка.ПолучитьОбъект();  
      ДокументОбъект.Состав.Очистить();  
      Для i = 1 По 5 Цикл   
           НоваяСтрока = ДокументОбъект.Состав.Добавить();   
           НоваяСтрока.ЦифровойНомер = i;   //заполнение табличной части
      КонецЦикла;  
      ДокументОбъект.Записать();  
 КонецПроцедуры  
 
 &НаСервере  
 Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)  
       ДокументСсылка = Параметры.ДокументСсылка;  //прием параметра
 КонецПроцедуры  

Как заполнить таблицу значений с динамическими колонками в управляемой форме (1С 8.2 управляемые формы)

Добавляем на управляемую форму:
1)Реквизит "ТаблицаДанных" с типом таблица значений
2)Элемент "Таблица" - ТаблицаДанныхНаФорме и связываем с реквизитом ТаблицаДанных
По кнопке "Загрузить" пишем:

 // Удаляем старые элементы формы и реквизиты формы если они есть 
 Если ТаблицаДанных.Количество() > 0 Тогда
  МассивУдаления = Новый Массив;
  МассивПолей = Новый Массив;
  Для Каждого УдаляемыйЭлемент Из Элементы.ТаблицаДанныхНаФорме.ПодчиненныеЭлементы Цикл
   ЭлементУдаления = УдаляемыйЭлемент.ПутьКДанным;
   ПолеУдаляемогоЭлемента = Элементы.ТаблицаДанныхНаФорме.ПодчиненныеЭлементы.Найти(УдаляемыйЭлемент.Имя);
   МассивПолей.Добавить(ПолеУдаляемогоЭлемента);
   МассивУдаления.Добавить(ЭлементУдаления);
  КонецЦикла;
  Для Каждого k Из МассивПолей Цикл 
   Элементы.Удалить(k);
  КонецЦикла;
  ИзменитьРеквизиты(,МассивУдаления);
  МассивУдаления.Очистить();
  ТаблицаДанных.Очистить();
 КонецЕсли;
 
 //заполняем таблицу значений с динамическими колонками в управляемой форме 
 МассивДобавляемыхРеквизитов = Новый Массив;
 Для Каждого Колонка Из ТаблицаДанныхExcel.Колонки Цикл   
  РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТаблицаДанных", Колонка.Имя);   
  МассивДобавляемыхРеквизитов.Добавить(РеквизитФормы);   
 КонецЦикла;  
 ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);  
 Для Каждого Колонка Из ТаблицаДанныхExcel.Колонки Цикл   
  Элемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ТаблицаДанныхНаФорме);   
  Элемент.Вид = ВидПоляФормы.ПолеВвода;  
  Элемент.ПутьКДанным = "ТаблицаДанных." + Колонка.Имя;  
 КонецЦикла;  
 ЭтаФорма.ТаблицаДанных.Загрузить(ТаблицаДанныхExcel);


Источник

вторник, 15 декабря 2015 г.

Как из модуля формы внешнего отчета вызвать процедуру/функцию модуля отчета? (управляемый режим)

Ошибка: "Процедура или функция с указанным именем не определена".
По кнопке сформировать 1С 8.2 управляемый режим не видит серверную процедуру модуля из формы отчета. 
Как исправить:
//в модуле формы отчета
&НаКлиенте
Процедура СформироватьОтчет(Команда)
СформироватьОтчетНаСервере();
КонецПроцедуры

//в модуле формы отчета
Процедура СформироватьОтчетНаСервере()
    ЭтотОтчет = РеквизитФормыВЗначение("Отчет"); 
    ЭтотОтчет.СформироватьОтчет(Результат); //процедура модуля отчета
КонецПроцедуры

//в модуле отчета
&НаСервере
Процедура СформироватьОтчет(ДокументРезультат) Экспорт
КонецПроцедуры

воскресенье, 13 декабря 2015 г.

Как исправить ошибку Assembly generation failed -- Referenced assembly 'MathNet.Numerics' does not have a strong name


Возникли трудности с использованием библиотеки Math.NET Numerics в Visual Studio 2013.
Подключаю Math.Net к проекту через Solution Explorer -> References -> Manage NuGet Packages...
Далее подключаю namespace в проекте
using MathNet.Numerics;

Меняю тип билда на Release, билдю проект..
В итоге компилятор выдает ошибку:
Error 2 Assembly generation failed -- Referenced assembly 'MathNet.Numerics' does not have a strong name
How to fix it? Как исправить ошибку?
https://brutaldev.com/post/net-assembly-strong-name-signer - качаем, юзаем утилиту, указываю ей dll и нажимаем Sign Assemblies

воскресенье, 6 декабря 2015 г.

пятница, 4 декабря 2015 г.

Как программно передать параметры из формы отчета в СКД(1С 8.3) ?

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

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

четверг, 3 декабря 2015 г.

Как добавить необязательный параметр в СКД?

Как добавить необязательный параметр "Подразделение"в отчет на СКД:
1)Открыть конструктор запроса, создать новый параметр со след. свойствами:
2)В выбранном запросе, на закладке "Компоновка данных" - "Условие", прописать, к прим.
КадроваяИсторияСотрудниковСрезПоследних.Подразделение = &Подразделение
В запросе это выглядит следующим образом:

3) Настроить необязательный параметр на форме, пример на рис.