Здравствуйте! Прошу подскажите, кто знает...не заполняются и не добавляются колонки в табличной части.
На форме никаких изменений, подскажите где ошибка?
Для Каждого СтрокаТЧ из Объект.Начисления Цикл
Индекс = Индекс +1;
НайдСтроки = Объект.РаспределениеРезультатовНачислений.НайтиСтроки(Новый Структура("ИдентификаторСтроки",Индекс));
НайдСтроки[0].Результат = НайдСтроки[0].Результат + 500000;
Сообщить(НайдСтроки[0].Результат);
НовСтр = Объект.РаспределениеРезультатовНачислений.Добавить();
НовСтр.ИдентификаторСтроки = 1;
НовСтр.СпособОтраженияЗарплатыВБухучете=НайдСтроки[0].СпособОтраженияЗарплатыВБухучете;
НовСтр.СтатьяФинансирования = НайдСтроки[0].СтатьяФинансирования;
//НовСтр.Записать();
КонецЦикла;
ПоказатьНа форме никаких изменений, подскажите где ошибка?
По теме из базы знаний
- Универсальная внешняя обработка табличной части - оставляет только данные, соответствующие отбору
- Связанные табличные части (управляемые формы)
- Дружелюбный интерфейс итогов в диалоге табличных частей, для Управляемых форм.
- Изменение цен табличной части документов для КА 2, УТ 11, ERP 2
- Сохранение данных табличных частей форм в Excel
Найденные решения
(46)
Логика:
У объекта есть, я так понимаю, табличная часть РаспределениеРезультатовНачислений.
В табличной части есть реквизиты ИдентификаторСтроки, СпособОтраженияЗарплатыВБухучете, СтатьяФинансирования.
Соответственно на форме должна быть соответствующая таблица, в которой у столбцов источники данных должен быть
Если ее нет, создайте дополнительную закладку и воткните туда табличную часть.
Там все сразу и посмотрите
Логика:
У объекта есть, я так понимаю, табличная часть РаспределениеРезультатовНачислений.
В табличной части есть реквизиты ИдентификаторСтроки, СпособОтраженияЗарплатыВБухучете, СтатьяФинансирования.
Соответственно на форме должна быть соответствующая таблица, в которой у столбцов источники данных должен быть
Объект.РаспределениеРезультатовНачислений.ИдентификаторСтроки
Объект.РаспределениеРезультатовНачислений.СпособОтраженияЗарплатыВБухучете
Объект.РаспределениеРезультатовНачислений.СтатьяФинансирования
Если ее нет, создайте дополнительную закладку и воткните туда табличную часть.
Там все сразу и посмотрите
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) &НаСервере
Процедура НачисленияПриАктивизацииСтрокиНаСервере()
ОбъектДокумента = РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.НачислениеЗарплаты"));
Массив = ОбъектДокумента.РассчетКоэффициентов();
Для Счетчик = 0 По Массив.Количество() - 1 Цикл
Сообщить(Массив[Счетчик]);
КонецЦикла;
Запрос = Новый Запрос;
Ссылка = Объект.Ссылка;
//Ссылка = Документы.НачислениеЗарплаты.ПолучитьСсылку(Новый УникальныйИдентификатор(Ссылка));
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| НачислениеЗарплатыНачисления.Сотрудник КАК СотрудникВДокументеНачислениеЗП,
| РаботаСотрудниковНаОбъектеДанные.Сотрудник
|ИЗ
| Документ.РаботаСотрудниковНаОбъекте.Данные КАК РаботаСотрудниковНаОбъектеДанные
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.НачислениеЗарплаты.Начисления КАК НачислениеЗарплатыНачисления
| ПО (НачислениеЗарплатыНачисления.Сотрудник.Ссылка = РаботаСотрудниковНаОбъектеДанные.Сотрудник.Ссылка)
|ГДЕ
| НачислениеЗарплатыНачисления.Ссылка = &Ссылка";
Результат = Запрос.Выполнить().Выбрать();
Сотр = Новый Массив;
Пока Результат.Следующий() Цикл
Сотр.Добавить(Результат.Сотрудник);
КонецЦикла;
Индекс =0;
Для Каждого СтрокаТЧ из Объект.Начисления Цикл
Индекс = Индекс +1;
НайдСтроки = Объект.РаспределениеРезультатовНачислений.НайтиСтроки(Новый Структура("ИдентификаторСтроки",Индекс));
НайдСтроки[0].Результат = НайдСтроки[0].Результат + 500000;
Сообщить(НайдСтроки[0].Результат);
НовСтр = Объект.РаспределениеРезультатовНачислений.Добавить();
НовСтр.ИдентификаторСтроки = 1;
НовСтр.СпособОтраженияЗарплатыВБухучете =НайдСтроки[0].СпособОтраженияЗарплатыВБухучете;
НовСтр.СтатьяФинансирования = НайдСтроки[0].СтатьяФинансирования;
КонецЦикла;
КонецПроцедуры
ПоказатьВот код всей процедуры
Думаю вам нужно добавить обновление формы, данные то вы заполнили на сервере, а на клиенте их не видно.
&НаКлиенте
Процедура НачисленияПриАктивизацииСтроки()
НачисленияПриАктивизацииСтрокиНаСервере();
ЭтаФорма.Прочитать();
КонецПроцедуры
Мне кажется обращение через "Объект." лишнее. Если на сервере работаете, исполльзуйте напрямую
Для Каждого СтрокаТЧ из Начисления Цикл
НайдСтроки = РаспределениеРезультатовНачислений.НайтиСтроки(Новый Структура("ИдентификаторСтроки",Индекс));
Для Каждого СтрокаТЧ из Начисления Цикл
НайдСтроки = РаспределениеРезультатовНачислений.НайтиСтроки(Новый Структура("ИдентификаторСтроки",Индекс));
Правда, скажу вам, в такие процедуры "НачисленияПриАктивизацииСтрокиНаСервере" такие громоздкие вычисления, лучше не совать бы.
Не проверял:
&НаСервере
Процедура НачисленияПриАктивизацииСтрокиНаСервере()
ОбъектДокумента = РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.НачислениеЗарплаты"));
Массив = ОбъектДокумента.РассчетКоэффициентов();
Для Счетчик = 0 По Массив.Количество() - 1 Цикл
Сообщить(Массив[Счетчик]);
КонецЦикла;
Запрос = Новый Запрос;
Ссылка = ОбъектДокумента .Ссылка;
//Ссылка = Документы.НачислениеЗарплаты.ПолучитьСсылку(Новый УникальныйИдентификатор(Ссылка));
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| НачислениеЗарплатыНачисления.Сотрудник КАК СотрудникВДокументеНачислениеЗП,
| РаботаСотрудниковНаОбъектеДанные.Сотрудник
|ИЗ
| Документ.РаботаСотрудниковНаОбъекте.Данные КАК РаботаСотрудниковНаОбъектеДанные
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.НачислениеЗарплаты.Начисления КАК НачислениеЗарплатыНачисления
| ПО (НачислениеЗарплатыНачисления.Сотрудник.Ссылка = РаботаСотрудниковНаОбъектеДанные.Сотрудник.Ссылка)
|ГДЕ
| НачислениеЗарплатыНачисления.Ссылка = &Ссылка";
Результат = Запрос.Выполнить().Выбрать();
Сотр = Новый Массив;
Пока Результат.Следующий() Цикл
Сотр.Добавить(Результат.Сотрудник);
КонецЦикла;
Индекс =0;
Для Каждого СтрокаТЧ из ОбъектДокумента .Начисления Цикл
Индекс = Индекс +1;
НайдСтроки = ОбъектДокумента .РаспределениеРезультатовНачислений.НайтиСтроки(Новый Структура("ИдентификаторСтроки",Индекс));
НайдСтроки[0].Результат = НайдСтроки[0].Результат + 500000;
Сообщить(НайдСтроки[0].Результат);
НовСтр = ОбъектДокумента .РаспределениеРезультатовНачислений.Добавить();
НовСтр.ИдентификаторСтроки = 1;
НовСтр.СпособОтраженияЗарплатыВБухучете =НайдСтроки[0].СпособОтраженияЗарплатыВБухучете;
НовСтр.СтатьяФинансирования = НайдСтроки[0].СтатьяФинансирования;
КонецЦикла;
ЗначениеРеквизитФормы(ДокментОбъект,"Объект");
КонецПроцедуры
Показать
Можно обойтись и без РеквизитФормыВЗначение, выгрузить в переменную таблицу Начисления, произвести с ней манипуляции и потом загрузить обратно.
(31)
Думаем логически, куда копать:
1. Почему может не отображаться ТЧ? - Только если данные не возвращаются или не создаются.
2. (Данные не создаются) Почему может не заполнятся ТЧ? - Только если не отрабатывает цикл
3. (Данные не возвращаются) Почему? Потому что не верно передается реквизит "Объект".
Попробуйте без указания типа
-
Думаем логически, куда копать:
1. Почему может не отображаться ТЧ? - Только если данные не возвращаются или не создаются.
2. (Данные не создаются) Почему может не заполнятся ТЧ? - Только если не отрабатывает цикл
Для Каждого СтрокаТЧ из ОбъектДокумента .Начисления Цикл
3. (Данные не возвращаются) Почему? Потому что не верно передается реквизит "Объект".
Попробуйте без указания типа
ОбъектДокумента = РеквизитФормыВЗначение("Объект");
.........
ЗначениеВРеквизитФормы(ОбъектДокумента , "Объект");
-
(44)
Это, я так понимаю, трассировка сервера?
В клиенте вставьте:
Это, я так понимаю, трассировка сервера?
В клиенте вставьте:
Сообщить(Объект.РаспределениеРезультатовНачислений .Количество());
НачисленияПриАктивизацииСтрокиНаСервере();
Сообщить(Объект.РаспределениеРезультатовНачислений .Количество());
(46)
Логика:
У объекта есть, я так понимаю, табличная часть РаспределениеРезультатовНачислений.
В табличной части есть реквизиты ИдентификаторСтроки, СпособОтраженияЗарплатыВБухучете, СтатьяФинансирования.
Соответственно на форме должна быть соответствующая таблица, в которой у столбцов источники данных должен быть
Если ее нет, создайте дополнительную закладку и воткните туда табличную часть.
Там все сразу и посмотрите
Логика:
У объекта есть, я так понимаю, табличная часть РаспределениеРезультатовНачислений.
В табличной части есть реквизиты ИдентификаторСтроки, СпособОтраженияЗарплатыВБухучете, СтатьяФинансирования.
Соответственно на форме должна быть соответствующая таблица, в которой у столбцов источники данных должен быть
Объект.РаспределениеРезультатовНачислений.ИдентификаторСтроки
Объект.РаспределениеРезультатовНачислений.СпособОтраженияЗарплатыВБухучете
Объект.РаспределениеРезультатовНачислений.СтатьяФинансирования
Если ее нет, создайте дополнительную закладку и воткните туда табличную часть.
Там все сразу и посмотрите
(39)
Встаньте в процедуре клиента до вызова серверной процедуры.
Проверьте количество строк ТЧ РаспределениеРезультатовНачислений
Потом протрассируйте и после вызова серверной процедуры проверьте количество строк.
Чтобы уже быть точно уверенными, что в табличной части строк стало больше
Встаньте в процедуре клиента до вызова серверной процедуры.
Проверьте количество строк ТЧ РаспределениеРезультатовНачислений
Потом протрассируйте и после вызова серверной процедуры проверьте количество строк.
Чтобы уже быть точно уверенными, что в табличной части строк стало больше
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот