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

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

11.02.2015, 10:38. Просмотров 7422. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2015, 10:38
Ответы с готовыми решениями:

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

Автоматическое заполнение табличной части документа из табличной части другого
Добрый день. Совсем недавно начал изучать 1С и пока не могу найти решения собственной задачи)...

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

Автоматическое заполнение полей табличной части документа
Здравствуйте. У меня есть справочник "Номенклатура", в котором есть реквизит...

Автоматическое заполнение поля Сумма в табличной части документа
Скажите можно ли сделать так чтобы когда заполняю документ Приходная накладная я записываю цену...

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

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

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

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

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

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

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

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

Не по теме:

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

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

0
jediAlex
4 / 4 / 4
Регистрация: 12.07.2011
Сообщений: 512
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С
2732 / 2486 / 443
Регистрация: 10.03.2011
Сообщений: 9,033
Записей в блоге: 1
Завершенные тесты: 1
12.02.2015, 01:21 8
Цитата Сообщение от jediAlex Посмотреть сообщение
отсутствует отображение для типа Справочниквыборка.КритерииОценки
Нельзя вернуть на клиент ВЫБОРКУ

Ее нужно обходить на сервере
0
jediAlex
4 / 4 / 4
Регистрация: 12.07.2011
Сообщений: 512
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С
2732 / 2486 / 443
Регистрация: 10.03.2011
Сообщений: 9,033
Записей в блоге: 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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2018, 18:00

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

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

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


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

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

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