Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/33: Рейтинг темы: голосов - 33, средняя оценка - 4.55
jediAlex
2 / 2 / 2
Регистрация: 12.07.2011
Сообщений: 380
1

Автоматическое заполнение табличной части документа при изменении реквизита этого документа

11.02.2015, 10:38. Просмотров 6111. Ответов 10
Метки нет (Все метки)

Здравствуйте. Делаю свою конфу на 1с 8.3.5. Добавил справочник "Сотрудники" и подчиненный ему справочник "КритерииОценки", где создал реквизит НаименованиеКритерия -стандартное наименование по длине не устраивало. Для второго справочника изменил представление в менеджере:
1C
1
2
3
4
5
6
7
8
9
10
11
12
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    Представление = Данные.НаименованиеКритерия;
    
КонецПроцедуры
 
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    Поля.Добавить("НаименованиеКритерия");
 КонецПроцедуры
Справочники заполнил. Далее нужен документ, которым сотрудники и их руководители записывают оценки своей работы. Сделал я такой документ с реквизитами: Сотрудник - СправочникСсылкаСотрудники, Подразделение - СправочникСсылкаПодразделения, Должность -СправочникСсылкаДолжности. Сдела табличную часть документа с реквизитами: Критерий - СправочникСсылкаКритерииОценки,ВесовойКоэффициент - число,ОценкаСотрудника - число; ОценкаРуководителя- число.
Появилась такая задача: заполнить табличную часть критериями оценки автоматически при выборе сотрудника в форме документа. Я сделал такой код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
&НаСервере
Процедура СотрудникПриИзменении(Элемент)
    Выборка = Справочники.КритерииОценки.Выбрать( ,Объект.Сотрудник); 
 
    Пока Выборка.Следующий() Цикл
        Элементы.КритерииОценки.ДобавитьСтроку();       
        НоваяСтрока=Элементы.КритерииОценки.ТекущиеДанные;  
        НоваяСтрока.КритерийОценкиКритерий=Выборка.Ссылка;
        НоваяСтрока.КритерийОценкиНольБаллов=Выборка.НольБаллов;
        НоваяСтрока.Записать();
    КонецЦикла;
КонецПроцедуры
выбираю сотрудника в форме документа и никакой реакции...что не так сделал? подскажите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2015, 10:38
Ответы с готовыми решениями:

Заполнение табличной части документа при выборе реквизита
Доброго дня! Будьте добры, подскажите, пожалуйста! Имеется: 1. Справочник...

Автоматическое заполнение табличной части документа
В документе при выборе реквизита Услуга, должна автоматически заполняться ТЧ -...

Как сделать автоматическое заполнение реквизитов табличной части документа
Приветствую! Не так давно начал знакомиться со средой 1С и столкнулся с...

Обращение к данным реквизита табличной части документа
Всем привет, уже полдня парюсь над проблемой, нужна ваша подмога, голова дымит,...

Отображение не стандартного реквизита справочника в табличной части документа
Здравствуйте. Столкнулся с проблемой в собственной конфе на 1с 8.3.5. Есть 2...

10
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
11.02.2015, 11:46 2
Цитата Сообщение от jediAlex Посмотреть сообщение
&НаСервере
Процедура СотрудникПриИзменении(Элемент)
Должно быть НАКЛИЕНТЕ!!!

Добавлено через 15 секунд
События не могут вызываться на сервере!

Добавлено через 43 секунды
А вот клиентское событие уже может вызвать серверную функцию
0
jediAlex
2 / 2 / 2
Регистрация: 12.07.2011
Сообщений: 380
11.02.2015, 12:02  [ТС] 3
поставил директиву
1C
1
&НаКлиенте
и получил ошибку при отладке:
1C
1
2
{Документ.ОценочнаяВедомость.Форма.ФормаДокумента.Форма(4,12)}: Переменная не определена (Справочники)
    Выборка = <<?>>Справочники.КритерииОценки.Выбрать( ,Объект.Сотрудник);  (Проверка: Тонкий клиент)
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
11.02.2015, 13:17 4
Справочники - это доступ к менеджерам справочников, т.е. обращение к БАЗЕ ДАННЫХ

А обращение к БД возможно только на сервере!
0
jediAlex
2 / 2 / 2
Регистрация: 12.07.2011
Сообщений: 380
11.02.2015, 13:32  [ТС] 5
сделал так:
1C
1
2
3
4
5
6
7
8
9
10
11
&НаСервере
Процедура СотрудникПриИзменении(Элемент)
    Выборка = Справочники.КритерииОценки.Выбрать( ,Объект.Сотрудник); 
    Пока Выборка.Следующий() Цикл
        Элементы.КритерииОценки.ДобавитьСтроку();       
        НоваяСтрока=Элементы.КритерииОценки.ТекущиеДанные;  
        НоваяСтрока.КритерийОценкиКритерий=Выборка.Ссылка;
        НоваяСтрока.КритерийОценкиНольБаллов=Выборка.НольБаллов;
        НоваяСтрока.Записать();
    КонецЦикла;
КонецПроцедуры
при изменении реквизита Сотрудник в форме документа никакой реакции...
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
11.02.2015, 13:46 6
jediAlex, ты прикидываешься?

Событий не может быть на СЕРВЕРЕ

Обращение к СПРАВОЧНИКИ не может быть на КЛИЕНТЕ

ДЕЛИ ФУНКЦИИ на КЛИЕНТские и СЕРВЕРные!!!!

Добавлено через 3 минуты

Не по теме:

jediAlex, мне вот даже интересно, если бы я еще раз написал

События не могут вызываться на сервере!
ты бы снова скопировал сюда ошибку обращения к БД на клиенте:
Переменная не определена (Справочники)
???

0
jediAlex
2 / 2 / 2
Регистрация: 12.07.2011
Сообщений: 380
11.02.2015, 15:07  [ТС] 7
не прикидываюсь..))забыл уже где что ..., давно не делал, а тут вот понадобилось...

Добавлено через 46 минут
попробовал разделить функции...сделал так:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
&НаСервере
Функция ВыгрузкаКритериев() 
ВыгрузкаКритериев = Справочники.КритерииОценки.Выбрать( ,Объект.Сотрудник);
Возврат ВыгрузкаКритериев;
КонецФункции    
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
    //Выборка = Справочники.КритерииОценки.Выбрать( ,Объект.Сотрудник);
Результат=ВыгрузкаКритериев();
    Пока Результат.Следующий() Цикл
        Элементы.КритерииОценки.ДобавитьСтроку();       
        НоваяСтрока=Элементы.КритерииОценки.ТекущиеДанные;  
        //НоваяСтрока.КритерийОценкиКритерий=Результат.Ссылка;
        НоваяСтрока.КритерийОценкиНольБаллов=Результат.НольБаллов;
        НоваяСтрока.Записать();
    КонецЦикла;
КонецПроцедуры
при изменении реквизита Сотрудник в документе вылетает ошибка:
Ошибка отображения типов: отсутствует отображение для типа Справочниквыборка.КритерииОценки
Отображение справочника КритерииОценки я описывал в менеджере этого справочника:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    Представление = Данные.НаименованиеКритерия;
    
КонецПроцедуры
 
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    Поля.Добавить("НаименованиеКритерия");
    
КонецПроцедуры
что теперь не так?
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
12.02.2015, 01:21 8
Цитата Сообщение от jediAlex Посмотреть сообщение
отсутствует отображение для типа Справочниквыборка.КритерииОценки
Нельзя вернуть на клиент ВЫБОРКУ

Ее нужно обходить на сервере
0
jediAlex
2 / 2 / 2
Регистрация: 12.07.2011
Сообщений: 380
13.02.2015, 09:09  [ТС] 9
Сделал так:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаСервере
Процедура ВыгрузкаКритериев() 
Результат=Справочники.КритерииОценки.Выбрать( ,Объект.Сотрудник);
Пока Результат.Следующий() Цикл
    НоваяСтрока=Объект.КритерииОценки.Добавить();       
        //НоваяСтрока=Объект.КритерииОценки.ТекущиеДанные;  
        //НоваяСтрока.КритерийОценкиКритерий=Результат.Ссылка;
        НоваяСтрока.КритерииОценкиНольБаллов=Результат.НольБаллов;
        НоваяСтрока.Записать();
    КонецЦикла;
 
КонецПроцедуры  
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
    ВыгрузкаКритериев()
КонецПроцедуры
в модуле формы. Добавляет одну строку в табличную часть пустую. При этом ругается :
1C
1
2
Документ.ОценочнаяВедомость.Форма.ФормаДокумента.Форма(8)}: Поле объекта не обнаружено (КритерииОценкиНольБаллов)
        НоваяСтрока.КритерииОценкиНольБаллов=Результат.НольБаллов;
Имя реквизита я скопировал в код из настроек,ошибки в имени нет. Что здесь не так?
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
13.02.2015, 12:44 10
Цитата Сообщение от jediAlex Посмотреть сообщение
Поле объекта не обнаружено (КритерииОценкиНольБаллов)
В табличной части "КритерииОценки" нет реквизита с таким именем "КритерииОценкиНольБаллов"
0
dasdasadidas
0 / 0 / 0
Регистрация: 04.12.2017
Сообщений: 1
20.01.2018, 18:00 11
ОбработкаПолученияПредставления

Как можно узнать какие вообще поля доступны?

Хочу в представление подставлять родителя, подскажите как это можно реализовать
0
20.01.2018, 18:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2018, 18:00

Заполнение табличной части документа
Всем привет. Народ, помогите пожалуйста. Такой вопрос: создал документ, добавил...

Заполнение Табличной части документа
Здравствуйте! Заполняю табличную часть документа из справочника Номенклатура....

Заполнение табличной части документа из запроса
Здравствуйте! Просмотрела много подобных тем, но все равно не получается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru