Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
4 / 4 / 4
Регистрация: 12.07.2011
Сообщений: 638
1

Изменить значение реквизитов ТЧ документа по событию проведения другого документа

12.04.2018, 13:47. Показов 2690. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.В собственной конфе 1С 8.3 есть документ "ОбъектныйГрафик" с ТЧ "Задания". Также есть документ "ИнформационныйЛистокОвыдачеЗадания" с реквизитами: График - ссылка на график.; ВыдающийОтдел, ПринимающийОтдел - СправочникСсылка.Подразделения;Задание -справочникссылка.задания;СрокФактический - Дата....В ТЧ "Задания" документа "ОбъектныйГрафик" те же реквизиты. Мне нужно сделать следующее: при выполнении команды "ПринятьЗадание" формы документа
C++
1
"ИнформационныйЛистокОвыдачеЗадания"
найти в ТЧ графика задание, указанное в документе для выбранных выдающего и принимающего отдела и заполнить реквизиты найденной строки ТЧ графика реквизитами документа "ИнформационныйЛистокОвыдачеЗадания", затем конечно записать изменения в графике. Для этого сделал следующее в форме документа "ИнформационныйЛистокОвыдачеЗадания":
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    // Вставить содержимое обработчика.
    ЗапросНомераЗадания=Новый Запрос;    //получение номера строки ТЧ графика с нужным заданием
    ЗапросНомераЗадания.Текст="ВЫБРАТЬ
                              |    ОбъектныйГрафикЗадания.НомерСтроки КАК НомерЗадания
                              |ИЗ
                              |    Документ.ОбъектныйГрафик.Задания КАК ОбъектныйГрафикЗадания
                              |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОбъектныйГрафик КАК ОбъектныйГрафик
                              |        ПО ОбъектныйГрафикЗадания.Ссылка = ОбъектныйГрафик.Ссылка
                              |ГДЕ
                              |    ОбъектныйГрафик.Ссылка = &График
                              |    И ОбъектныйГрафикЗадания.ВыдающийОтдел.Ссылка = &ВыдающийОтдел
                              |    И ОбъектныйГрафикЗадания.Задание.Ссылка = &Задание
                              |    И ОбъектныйГрафикЗадания.ПринимающийОтдел.Ссылка = &ПринимающийОтдел";
    ЗапросНомераЗадания.УстановитьПараметр("График",ТекущийОбъект.ОбъектныйГрафик.Ссылка);
     ЗапросНомераЗадания.УстановитьПараметр("ВыдающийОтдел",ТекущийОбъект.ГруппаВыдающаяЗадание.Ссылка);
      ЗапросНомераЗадания.УстановитьПараметр("Задание",ТекущийОбъект.Задание.Ссылка);
       ЗапросНомераЗадания.УстановитьПараметр("ПринимающийОтдел",ТекущийОбъект.ГруппаПолучающаяЗадание.Ссылка);
    Результат=ЗапросНомераЗадания.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
    НомерЗадания=Результат.НомерЗадания;   
КонецЦикла;   
График=Документы.ОбъектныйГрафик.НайтиПоНомеру(ТекущийОбъект.ОбъектныйГрафик.Номер).ПолучитьОбъект();
СтрокаТЧ = График.Задания[НомерЗадания - 1];
СтрокаТЧ.ХарактеристикаЗадания=ТекущийОбъект.ХарактеристикаПолнотыЗаданияПринимающейГруппы;
Если ТекущийОбъект.Статус=Перечисления.СтатусФормыВыдачиЗадания.Утверждена Тогда
СтрокаТЧ.СтепеньВыполнения=ТекущийОбъект.ОценкаПолнотыЗаданияПринимающейГруппы;
СтрокаТЧ.ДатаВыдачиФакт=ТекущийОбъект.СрокФактический;
СтрокаТЧ.СостояниеЗадания=Перечисления.СостояниеЗадания.Выдано;
СтрокаТЧ.Примечание=ТекущийОбъект.Ссылка;
КонецЕсли;
График.Записать();
Если ТекущийОбъект.ГруппаВыдающаяЗадание=Параметрысеанса.Сотрудник.Подразделение И ЗаполненыПоляВыдающейСтороны()=ложь и Не ЗначениеЗаполнено(Объект.ФайлЗадания) тогда
Сообщить("Проверьте заполнение оценки и характеристики полноты задания,комментария выдающей стороны и указание файла задания");
Отказ=Истина;
КонецЕсли;
Если ТекущийОбъект.ГруппаПолучающаяЗадание=Параметрысеанса.Сотрудник.Подразделение И ЗаполненыПоляПринимающейСтороны()=ложь тогда
Сообщить("Проверьте заполнение оценки и характеристики полноты задания и комментария принимающей стороны");
Отказ=Истина;
КонецЕсли;
КонецПроцедуры
команда "ПринятьЗадание":
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
&НаСервере
Процедура ПринятьЗаданиеНаСервере()
    // Вставить содержимое обработчика.
    Формазадания=Объект.ссылка.ПолучитьОбъект();
    Формазадания.ОценкаПолнотыЗаданияПринимающейГруппы=100;
    Формазадания.ХарактеристикаПолнотыЗаданияПринимающейГруппы=Перечисления.ХарактеристикаПолнотыЗадания.ВыданоВПолномОбъеме;
Формазадания.СрокФактический=ТекущаяДата();   
//Формазадания.ГлавныйСпециалистПринимающейГруппы=Параметрысеанса.Сотрудник;
    Формазадания.Статус=Перечисления.СтатусФормыВыдачиЗадания.Утверждена;
//ПриЗаписиНаСервере(Ложь,Формазадания,);
ФормаЗадания.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
ОтправитьСообщениеОПринятииЗадания();
КонецПроцедуры
 
 
&НаКлиенте
Процедура ПринятьЗадание(Команда)
    ПринятьЗаданиеНаСервере();
    ЭтаФорма.Закрыть();
КонецПроцедуры
Если пользователь выполняет команду "ПринятьЗадание", система ругается: Данные были изменены.Сохранить изменения?(да/нет)[/B][/I]. Если нажимаешь "Да", следующее ругательство:"Данные были изменены или удалены другим пользователем." Что не так? как правильно сделать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2018, 13:47
Ответы с готовыми решениями:

Как из одного документа перенести значение из табличной части в реквизит другого документа?
Только начинаю осваивать 1С, учебная задача. Есть два документа "Индивидуальный заказ" и...

Заполнение реквизитов строки ТЧ документа заченями реквизитов выбранного элемента
Здравствуйте. Запнулся вроде бы на простой задаче - забыл как делается... Суть задачи: есть в...

Из одного документа получить данные табличной части другого документа
Добрый день. Сразу оговорюсь 1С только начал изучать, поэтому просьба помидорами не закидывать. ...

Заполнить табличную часть одного документа из другого документа
здравствуйте! У меня есть документа оплата заказа, в нём есть табличная часть, которая загружается...

2
2135 / 1475 / 526
Регистрация: 16.01.2015
Сообщений: 6,317
12.04.2018, 14:07 2
Лучший ответ Сообщение было отмечено GreenkA как решение

Решение

jediAlex, Вы в коде "ПринятьЗадание" Повторно получаете открытый объект. меняете его и записываете. Естественно ругается. когда вы пытаетесь что-то сделать в первом варианте объекта. Обращайтесь сразу к реквизитам объекта
1C
1
2
3
4
5
&НаСервере
Процедура ПринятьЗаданиеНаСервере()
Объект.ОценкаПолнотыЗаданияПринимающейГруппы=100;
Объект.ХарактеристикаПолнотыЗаданияПринимающейГруппы=Перечисления.ХарактеристикаПолнотыЗадания.ВыданоВПолномОбъеме;
// и т.д.
1
4 / 4 / 4
Регистрация: 12.07.2011
Сообщений: 638
12.04.2018, 14:58  [ТС] 3
спасибо, заработало
0
12.04.2018, 14:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2018, 14:58
Помогаю со студенческими работами здесь

Обработка: заполнение реквизита документа реквизитом другого документа
делаю обработку.В документе ПТУ в ТЧ товары есть Заказы, но в ТЧ товары нету Проекта, поэтому на...

С формы списка документа изменить данные самого документа 1С 8.2 Управляемое приложение
Есть документ ЗаказКлиента с формой документа и с формой списка (формы управляемые). Есть у...

Как изменить текст надписи формы документа при записи документа
Здравствуйте уважаемые, у меня простой вопрос - как мне при записи документа изменить надпись на...

Корректировка реквизитов связанного документа
Здравстуйте! У меня вот какой вопрос...Есть документ с реквизитом("РекДок"), и обработка с...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru