пятница, 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) Настроить необязательный параметр на форме, пример на рис.


понедельник, 30 ноября 2015 г.

Как реализовать запрет изменения по типу документов в ЗУП 3.0 (1С 8.3)

Задача: реализовать запрет на изменение по типу документов в ЗУП 3.0 (Зарплата и управление персоналом КОРП, редакция 3.0 (3.0.24.114))
В ходе анализа алгоритмов выяснилось, что стандарные механизмы блокируют на изменение много других документов, а для решения данной задачи требуется блокировка только в части табелей.
Чтобы не переписывать четверть конфигурации, и не обеспечивать себе головную боль при обновлении механизмов БСП. Решил сделать следующим образом, что просто добавить новый раздел с включенным в него табелем.
Всего в пару шагов:

1. В план видов характеристик "РазделыДатЗапретаИзменения" добавляется новый элемент: РМ_БлокировкаДокументовУчетаРВ -"(РМ) Блокировка документов учета РВ", с типом справочник ссылка организации. (прим. рис.)


2. В модуль ЗарплатаКадрыРасширенный добавляется следующая строка, описывающая

ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ТабельУчетаРабочегоВремени","ПериодРегистрации", "РМ_БлокировкаДокументовУчетаРВ", "Организация");//{РМ}

Далее в режиме предприятия:
Администрирование-Поддержка и обслуживание-Дата запрета изменения (настроить) появился новый раздел. Остается только настроить для него дату запрета.

Как исправить ошибку СКД: "Ошибка обработки представления" (1С 8.3 СКД)


1С 8.3 СКД "Ошибка обработки представления"
При программном формировании СКД отчета, вылетало в ошибку. Хотя с запросом все в порядке, в консоли отрабатывает, в консоли СКД также все окей.
В моем случае данная ошибка возникала при связи вирт. таблицы регистра сведений "СрезПоследних" со справочником или другим регистром.

В параметр период передавался некий параметр "ПЗ" в результате чего приводило к ошибке.

Для устранения проблемы формирования отчета необходимо снять галку автозаполнение в закладке "Наборы данных"
и вручную переопределить поля выборки в конструкторе запроса в закладке "Компоновка данных" - "Поля"

четверг, 26 ноября 2015 г.

Как получить параметры СКД в модуле объекта? (1С 8.3)

//1. возвращает значение параметра СКД, необходимо передать настройки отчета и параметр
Функция ВернутьЗначениеПараметра(НастройкиОтчета,НаименованиеПараметра)
Параметр = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(НаименованиеПараметра));
Возврат ?(Параметр = Неопределено, Неопределено, Параметр.Значение);
КонецФункции

//2. использование: создать структуру с параметрами в модуле объекта
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Организация", ВернутьЗначениеПараметра(НастройкиОтчета,"Организация"));

для примера, заполнение произвольного макета:

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

СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Организация", ВернутьЗначениеПараметра(НастройкиОтчета,"Организация"));
ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры,СтруктураПараметров);

//+ваш код...
...
//-
КонецПроцедуры

Как включить отображение движений документов в ЗУП 3.0 (1С 8.3)

1) Открываем форму документа, к примеру Зарплата - Учет времени - Табель

2) Переходим меню Файл - Вид - Настройка панели навигации формы

 3) Выделить необходимые элементы и нажать "Добавить все"

Ошибка: Default Activity not found

При возникновении ошибки Default Activity not found:
Убедится что в app->Edit Configuratios...
 
 Установлен Activity по-умолчанию:
Далее при ошибки the activity is not declared in androidmanifest.xml добавить в AndroidManifest.xml, конструкцию:

<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

но непосредственно в тело activity который будет являться основным к примеру для
SearchActivity: