Вход | Регистрация
 

Прошу помочь разобраться с поставленной задачей.

↓ [Волшебник, 21.10.20 - 08:34]
Прошу помочь разобраться с поставленной задачей.
Я
   undertale
 
21.10.20 - 07:13
Добрый день, у меня проблема: не понимаю как и где взять ссылку на записанный документ.

ТЗ:

1.    Сделать поля ввода на форме внешней обработки по следующим реквизитам: “Сотрудник”, “Дата приёма”, “Подразделение”, “Должность”, “Созданный документ”, «Организация».
2.    Сделать две кнопки на форме, вместо стандартной “Выполнить” сделать: “Создать документ”, “Напечатать”
3.    Сделать макет печатной формы по образцу
4.    По нажатию на “Создать документ” должно происходить следующее:
4.1.    Создается документ “Прием на работу в организацию” методом “Создать()”
4.2.    Заполняются реквизиты документа и табличной части из исходных данных
4.3.    Записать созданный документ соответствующим методом
4.4.    Присвоить реквизиту “Созданный документ” внешней обработки ссылку на этот записанный документ
5.    По нажатию на “Напечатать” выводится печатная форма с заполнением параметров из созданного в пункте ‘4’ документа

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

Код данной работы:
Функция ДокументПриемНаРаботуВОрганизацию()
    
    НовДок = Документы.ПриемНаРаботуВОрганизацию.СоздатьДокумент();
            
    НовДок.Организация=Организация;
    НовДок.Дата=ТекущаяДата();
    
    СтрокаТЧ=НовДок.РаботникиОрганизации.Добавить();
    СтрокаТЧ.ДатаПриема=ДатаПриема;
    СтрокаТЧ.Сотрудник=Сотрудник;
    СтрокаТЧ.ПодразделениеОрганизации=Подраздиление;
    СтрокаТЧ.Должность=Должность;
    НовДок.Записать();
    
    СсылкаНового = Документы.ПриемНаРаботуВОрганизацию.ПолучитьСсылку();
    
КонецФункции
   undertale
 
1 - 21.10.20 - 07:16
Не могу сделать пункт 4.4 т.к. не понимаю как взять ссылку на созданный документ. Прошу помощи.
   Галахад
 
2 - 21.10.20 - 07:23
СозданныйДокумент = НовДок.Ссылка
   Конструктор1С
 
3 - 21.10.20 - 07:58
(0) запись документа делай в попытке. При записи документа могут происходить различные проверки, приводящие к отказу от записи. И раз уж у тебя функция, она должна что-то возвращать. Пускай возвращает ссылку созданного документа, если он успешно записался, либо пустую ссылу, если записать не удалось.

Едем дальше. Название функции не отражает её предназначения. Хотя бы добавь "новый" к имени, чтобы было понятно, что функция создаёт документ. НовыйДокументПриемНаРаботуВОрганизацию(). Но в идеале код должен рассказывать, что же он делает. Твоя функция создайт и заполняет документ из реквизитов формы, название функции должно это "проговаривать". Например, НовыйДокументПриемНаРаботуИзДанныхТекущейОбработки(). Да, название получилось длинноватым. Но это оттого, что функция делает несколько действий. Поэтому хорошо бы её разбить на несколько более мелких и конкретных методов, каждый из которых выполняет конкретное действие.

А также неплохо бы заглянуть в сам документ, скорее всего у него есть метод ОбработкаЗаполнения(), тогда правильнее будет доверить документу заполнить самому себя из переданных данных

ДокументОбъект = Документы.ПриемНаРаботуВОрганизацию.СоздатьДокумент();
ДокументОбъект.Заполнить(ДанныеЗаполнения);// ДанныеЗаполнения - структура с определенными свойствами, из которых заполнится документ


типичная манера типичных 1сников, когда документ может заполняться и редактироваться из 150 мест в коде, достойная отбивания рук. Принципы инкапсуляции и единственной ответственности просто рыдают. Поэтому старайся никогда так не делать. За заполнение объекта в идеале должен отвечать сам объект: получает данные извне и разруливает заполнение своих свойств
   Garykom
 
4 - 21.10.20 - 08:16
(3) А если разрабы не предусмотрели и внутри ДокументОбъект.Заполнить нету вызова УстановитьСсылкуНового ?
   Mihasya
 
5 - 21.10.20 - 08:18
(3) а ДанныеЗаполнения для него кто заполнит? )))
   Фрэнки
 
6 - 21.10.20 - 08:19
т.е. без указания в какой конфигурации все это происходит - задача несколько неопределена
   Kigo_Kigo
 
7 - 21.10.20 - 08:27
(3) так надо чтобы в документе было ОбработкаЗаполнения(), эт раз
надо лезть в обработку и разбираться со структурой передаваемой в ОбработкаЗаполнения(), определить обязательные и не обязательные параметры, а тут видимо тестовая задача и четко определены действия- которые надо сделать, то есть не изобретать велосипед, но за текст спасибо, взял на заметку
   Garykom
 
8 - 21.10.20 - 08:28
(7) Вопрос на засыпку что будем делать если пункты 4.3 и 4.4 поменяны местами? ))
   Волшебник
 
9 - 21.10.20 - 08:34
(6) Это же тестовое задание при приёме на работе
   Kigo_Kigo
 
10 - 21.10.20 - 08:34
(8) как эти пункты могут быть поменены местами- если это Записать и присвоить ссылку ЗАПИСАННОГО документа?
   rsv
 
11 - 21.10.20 - 08:35
(0) наверное сами убедились что программирование ради
программирования  ( судя по постам ответов) лишь все усложнит :)
   rsv
 
12 - 21.10.20 - 08:37
+(11) не отходите от сути - данные с формы надо записать в таблички ( 2 шт) докумета базы данных и все .
   Garykom
 
13 - 21.10.20 - 08:40
(10) Ну исправили в задании на "еще не записанного"
   Конструктор1С
 
14 - 21.10.20 - 08:55
(4) для заполнения документа ссылка не нужна, после Заполнить() у тебя в руках заполненный, но не записанный документ, делай с ним что хошь

(5) он сам и заполнит. Странный вопрос

(7) а для заполнения документа "извне" разбираться со структурой документа прям совсем не надо? Дело в том, что ОбработкаЗаполнения может делать какие-то дополнительные проверки, довычисления, дозаполнения, заполнять часть реквизитов значениями по-умолчанию. Но это если ОбработкаЗаполнения здорового человека, ОбработкаЗаполнения курильщика может не делать ничего, либо тупо выдирать данные из документов-оснований. И вот если у тебя всё-таки ОбработкаЗаполнения здорового человека, то правильнее заполнить через неё. Ибо в противном случае тебе придётся утаскивать в свою обработку код для всех умолчаний, дозаполнений, довычислений. А это дублирование кода в чистом виде
   rsv
 
15 - 21.10.20 - 08:58
Есть предложение сначала все в xml .потом распарсить и уже 
документ создавать
   Конструктор1С
 
16 - 21.10.20 - 08:59
(15) ты о чём вообще?
   Mihasya
 
17 - 21.10.20 - 14:47
(16) бредит, как и ты )))
   Конструктор1С
 
18 - 22.10.20 - 07:56
(16) как давно призыв делать по-нормальному стал бредом? "Х..як, х..як и в продакшн" ваше всё?
   Конструктор1С
 
19 - 22.10.20 - 07:56
(18) к (17)
   Конструктор1С
 
20 - 22.10.20 - 08:03
(17) как раз читаю новую книгу фирмы 1с, там прямо в тему

"Уместно вспомнить старую притчу о трех каменщиках, которые строили здание. Когда спросили первого: «Что ты делаешь?» – он ответил: «Я выкладываю камни в ряд». Второй ответил: «Я строю стену, слежу, чтобы она была ровной». А третий ответил: «Я строю храм!» Как мы видим, у этих людей совершенно разная мотивация в работе и результат в скорости и качестве работы, и сам подход к делу тоже будет разным."

https://1c.ru/news/info.jsp?id=27707

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.