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

Программное создание нового документа и заполнение его реквизитов

15.11.2017, 13:45. Просмотров 541. Ответов 4
Метки нет (Все метки)

Здравствуйте. В собственной конфигурации 1с 8.3 сделал обработку, на форму которой выводится список этапов договоров с заказчиками. Цель обработки - показать этапы активных договоров руководителям проектов и дать инструмент для пояснений хода работ по выбранному этапу . Для регистрации этих пояснений создал документ в конфигурации и команду в форме обработки:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
&НаСервере
Процедура СоздатьКомментарийНаСервере(Этап)
    // Вставить содержимое обработчика.
    НачатьТранзакцию(РежимУправленияБлокировкойДанных.Автоматический);
КомментарийПоЭтапу=Документы.КомментарийРуководителяПроекта.СоздатьДокумент();
КомментарийПоЭтапу.Дата=ТекущаяДата();
КомментарийПоЭтапу.ДатаЗаполнения=Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
КомментарийПоЭтапу.ГодОтчета=Год(ТекущаяДата());
КомментарийПоЭтапу.Комментарий=КомментарийПоЭтапу;
КомментарийПоЭтапу.ЭтапДоговора=Этап;
КомментарийПоЭтапу.НеделяОтчета=НеделяГода(ТекущаяДата());
КомментарийПоЭтапу.РуководительПроекта=Объект.РуководительРабот;
КомментарийПоЭтапу.Записать();
ЗафиксироватьТранзакцию();
КонецПроцедуры
 
&НаКлиенте
Процедура СоздатьКомментарий(Команда)
    СоздатьКомментарийНаСервере(Элементы.АктивныеЭтапы.ТекущиеДанные.ЭтапДоговора);
КонецПроцедуры
КомментарийРуководителяПроекта - документ, в котором фиксируетсяпояснение руководителя. При выполнении команды вылетают ошибки:
Значение не является значением объектного типа(Дата)
Значение не является значением объектного типа(ДатаЗаполнения)
и так на каждый реквизит . Аналогично делал создание другого документа из другой обработки - тут все нормально работает:
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
&НаСервере
Функция СоздатьФормуОСрывеСрокаНаСервере(График,ВыдающийОтдел,ПринимающийОтдел,Задание,ДатаВыдачиПлан)
    // Вставить содержимое обработчика.
    НачатьТранзакцию(РежимУправленияБлокировкойДанных.Автоматический);
ИнформационныйЛистокОСрывеСрока=Документы.ИнформационныйЛистокОбОтклоненииСрокавыдачиЗадания.СоздатьДокумент();
ИнформационныйЛистокОСрывеСрока.Дата=ТекущаяДата();
ИнформационныйЛистокОСрывеСрока.ДатаЗаполнения=ТекущаяДата();
ИнформационныйЛистокОСрывеСрока.Объект=График.ШифрОбъекта;
ИнформационныйЛистокОСрывеСрока.Стадия=График.Стадия;
ИнформационныйЛистокОСрывеСрока.Предприятие=График.ПлощадкаСтроительства;
ИнформационныйЛистокОСрывеСрока.Группа=ВыдающийОтдел;
ИнформационныйЛистокОСрывеСрока.ГруппаПолучающаяЗадание=ПринимающийОтдел;
ИнформационныйЛистокОСрывеСрока.ОбъектныйГрафик=График;
ИнформационныйЛистокОСрывеСрока.СрокСдачиПроекта=График.ДатаОкончания;
ИнформационныйЛистокОСрывеСрока.НаименованиеРаботы=Задание;
ИнформационныйЛистокОСрывеСрока.ПлановыйСрокВыдачиЗадания=ДатаВыдачиПлан;
ИнформационныйЛистокОСрывеСрока.РуководительПоНаправлению=ПараметрыСеанса.Сотрудник;
ИнформационныйЛистокОСрывеСрока.ГИП=График.ГИП;
ИнформационныйЛистокОСрывеСрока.РуководительГПиК=ВыводРуководителяГПиК();
ИнформационныйЛистокОСрывеСрока.ДиректорПоПроизводству=ВыводДиректораПоПроизводству();
ИнформационныйЛистокОСрывеСрока.Статус=Перечисления.СтатусФормыВыдачиЗадания.НеУтверждена;
ИнформационныйЛистокОСрывеСрока.Записать();
ЗафиксироватьТранзакцию();
Возврат ИнформационныйЛистокОСрывеСрока.Ссылка;
КонецФункции
 
&НаКлиенте
Процедура СоздатьФормуОСрывеСрока(Команда)
    ДанныеДляФормы=Элементы.ЗаданияПоГрафику.ТекущиеДанные;
    Если ДанныедляФормы.ВыдающийОтдел=ТекущееПодразделение() Тогда
    СсылкаНаФорму=СоздатьФормуОСрывеСрокаНаСервере(ДанныеДляФормы.График,ДанныеДляФормы.ВыдающийОтдел,ДанныеДляФормы.ПринимающийОтдел,ДанныеДляФормы.Задание,ДанныеДляФормы.ДатаВыдачиПлан);
    ОткрытьЗначение(СсылкаНаФорму);
Иначе 
    Сообщить("Невозможно создать форму для выбранного задания - подразделение текущего пользователя не является выдающим отделом");
КонецЕсли;      
КонецПроцедуры
что не так в первом случае -с созданием документа КомментарийРуководителяПроекта? помогите пожалуйста.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2017, 13:45
Ответы с готовыми решениями:

Программное создание нового документа и открытие его формы с заполненными реквизитами
Здравствуйте. В собственной конфигурации 1с 8.3 есть справочник...

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

Заполнение реквизитов связанного документа.
Добрый день! Подскажите пожалуйста, как лучше реализовать; Есть документ...

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

Программное заполнение документа
Необходимо заполнить документ (Выдача_денег_из_кассы) на основе документа...

4
Phil
Эксперт 1С
374 / 258 / 77
Регистрация: 28.05.2014
Сообщений: 1,012
15.11.2017, 14:07 2
jediAlex,
1C
1
КомментарийПоЭтапу=Документы.КомментарийРуководителяПроекта.СоздатьДокумент();
в отладчике У переменной КомментарийПоЭтапу тип ДокументСсылка.КомментарийРуководителяПроекта?
У документа есть такие реквизиты?
Права для работы с ним есть?
0
jediAlex
2 / 2 / 3
Регистрация: 12.07.2011
Сообщений: 429
15.11.2017, 14:27  [ТС] 3
реквизиты есть, но почему тип значения КомментарийПоЭтапу - строка, а не ДокументССылка.КомментарийруководителяПроекта?
0
Миниатюры
Программное создание нового документа и заполнение его реквизитов  
polax
804 / 513 / 172
Регистрация: 16.01.2015
Сообщений: 1,824
15.11.2017, 17:30 4
jediAlex, Ошибок не вижу, кроме ошибки вот здесь:
1C
1
КомментарийПоЭтапу.Комментарий=КомментарийПоЭтапу;
Не может быть Комментарий (строка) равен документу объект
Но ваша ошибка не только в этом, иначе ошибку выдавал бы только на эту строчку. У вас где-то еще что-то не так
Дайте весь код обработки
1
jediAlex
2 / 2 / 3
Регистрация: 12.07.2011
Сообщений: 429
16.11.2017, 09:36  [ТС] 5
да, ппроблема была в именах реквизитов и документа - одинаковые имена получились. все получилось. Спасибо за помощь
0
16.11.2017, 09:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2017, 09:36

Заполнение ТЧ Документа из Реквизитов справочника
нужно заполнить ТЧ документа из Реквизита справочника. &НаКлиенте Процедура...

Программное создание документа
Доброго времени суток! Господа, подскажите, как при программном создании...

Программное создание и проведение документа "ПоступлениеТоваров&q
Требуется программно создать и проводить документ "ПоступлениеТоваров", Бух...


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

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

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