|
0
Areso
11.08.15
✎
11:18
|
В общем, исходя из предыдущей темы, разобрался как заполнять табличные части в обычном приложении (никогда раньше не имел с не-управляемые формами дел), и заполнил. Оказалось - зря, потому что объект никуда в регистры не пишет, и при расчетах зп обращается к Документам, а я сделал дубль-документ в конфигурации, чтобы не трогать поставку.
Итак, завел обработку, перенес в неё код, и следующая часть кода у меня не работает (впрочем, у меня и раньше были вопросы к таинственной ТаблицеЗначений РаботникиОрганизации, но оно хотя бы работало, когда было размещено в форме):
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт;
ОбъектДокумента = ПолеВвода1;
ОбъектДокумента.ПолучитьФорму().Открыть();
А0=РаботникиОрганизации.ВыгрузитьКолонку("ФизЛицо");
А2=РаботникиОрганизации.ВыгрузитьКолонку("Приказ");
//получаем количество работников
А0К = А0.Количество();
//подтягиваем интересующий вид Основного Начисления, из учета, что он не предопределенный
А=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Доплата за ненормированный рабочий день");
Для Сч1 = 0 По А0К-1 Цикл
НоваяСтрока = Объект.ОсновныеНачисления.Добавить();
НоваяСтрока.ФизЛицо = А0[Сч1];
НоваяСтрока.Приказ = А2[Сч1];
НоваяСтрока.ВидРасчета = А;
НоваяСтрока.Действие = Перечисления.ВидыДействияСНачислением.Начать;
НоваяСтрока.ДатаДействия = '20150701';
НоваяСтрока.Показатель3 = 12;
КонецЦикла;
КонецПроцедуры
Пробовал по разному:
А0=ЭтотОбъект.РаботникиОрганизации.ВыгрузитьКолонку("ФизЛицо");
пробовал и
А0=Объект.РаботникиОрганизации.ВыгрузитьКолонку("ФизЛицо");
А0=ОбъектДокумента.РаботникиОрганизации.ВыгрузитьКолонку("ФизЛицо");
Никак не получается. А код, будучи вставлен в дополнительную кнопку на указанной форме (точнее её дубликате), работал.
И что это вообще за РаботникиОрганизации? Этих данных нет в реквизитах, и нет такой табличной части... Ума не приложу.
|
|
|
2
Areso
12.08.15
✎
11:28
|
Рабочий код:
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт;
ОбъектДокумента = ПолеВвода1;
ОбъектДокумента.ПолучитьФорму().Открыть();
КонецПроцедуры
Процедура Кнопка1Нажатие(Элемент)
// Вставить содержимое обработчика.
МойОбъект = ПолеВвода1;
МойОбъект = МойОбъект.ПолучитьОбъект();
РаботникиОрганизации = Новый ТаблицаЗначений;
РаботникиОрганизации.Очистить();
ТЗ = МойОбъект.ОсновныеНачисления.Выгрузить();
ТЗ.Свернуть("ФизЛицо,Приказ");
А0=ТЗ.ВыгрузитьКолонку("ФизЛицо");
А2=ТЗ.ВыгрузитьКолонку("Приказ");
////получаем количество работников
А0К = А0.Количество();
////подтягиваем интересующий вид Основного Начисления, из учета, что он не предопределенный
А=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Доплата за ненормированный рабочий день");
Для Сч1 = 0 По А0К-1 Цикл
НоваяСтрока = МойОбъект.ОсновныеНачисления.Добавить();
НоваяСтрока.ФизЛицо = А0[Сч1];
НоваяСтрока.Приказ = А2[Сч1];
НоваяСтрока.ВидРасчета = А;
НоваяСтрока.Действие = Перечисления.ВидыДействияСНачислением.Начать;
НоваяСтрока.ДатаДействия = '20150701';
НоваяСтрока.Показатель3 = 12;
КонецЦикла;
МойОбъект.Записать();
КонецПроцедуры
Казалось бы, невелика разница. А времени потрачено уйма.
|
|