Имя: Пароль:
1C
 
сохранение документа с ТЧ
0 SAnatoliy
 
17.06.23
23:25
Здравствуйте.
Подскажите, сделал свою кнопку для сохранения документа. Заполняю ф форме реквизиты и табличную часть. Нажимаю сохранить, документ сохраняется без ТЧ. Подскажите, примером как сделать чтоб документ сохранялся с табличной частью.

Модуль формы:
&НаСервере
Процедура СоздатьЗапросНаНовогоСотрудникаНаСервере()
    
    НовыйДокЗапросНаКартуНовСотрудн = Документы.ЗапросНаКартуДляНовогоСотрудника.СоздатьДокумент();
    НовыйДокЗапросНаКартуНовСотрудн.Дата = ТекущаяДатаСеанса();
    НовыйДокЗапросНаКартуНовСотрудн.Сотрудник = Объект.Сотрудник;
    НовыйДокЗапросНаКартуНовСотрудн.Должность = Объект.Должность;
    НовыйДокЗапросНаКартуНовСотрудн.ОбъектПлощадка = Объект.ОбъектПлощадка;
    НовыйДокЗапросНаКартуНовСотрудн.ОтделБутикГруппа = Объект.ОтделБутикГруппа;
    
    
    
    СправСоздНовСотр = Справочники.Сотрудники.СоздатьЭлемент();
    СправСоздНовСотр.Наименование = Объект.Сотрудник;
    СправСоздНовСотр.Должность = Объект.Должность;
    СправСоздНовСотр.Организация = Объект.ОбъектПлощадка;
    СправСоздНовСотр.Отдел = Объект.ОтделБутикГруппа;    
    
    НовыйДокЗапросНаКартуНовСотрудн.Записать();
    СправСоздНовСотр.Записать();
    
КонецПроцедуры
1 Волшебник
 
17.06.23
23:26
Вам надо стереть свой программный код. Документ сохраняется без программного кода
2 SAnatoliy
 
18.06.23
10:21
Да. Сохранение документа штатным средством сохраняется полностью. Но мне надо своим алгоритмом.
3 Волшебник
 
18.06.23
10:22
(2) При сохранении документа Вы не должны создавать элементы справочников.
4 SAnatoliy
 
18.06.23
11:05
У меня задумка:
Один оператор ПО создает документ на нового сотрудника (без проводки).
Создается документ в документах и ФИО в справочнике сотрудники, если нет такого сотрудника (оператор не может видеть список всем сотрудников и не имеет доступа к справочнику сотрудников, поэтому создание сотрудника делаю через документы).
5 Волшебник
 
18.06.23
12:37
(4) Плохая идея. Уберите создание элемента справочника Сотрудники из программного кода.
6 SAnatoliy
 
18.06.23
16:13
Если убрать создание элемента справочника из документа, то где правильно создать элемент справочника, если не хочу чтоб пользователь сначала заводил в справочнике, а потом заводил новый документ. Можно же это сделать одним действием?
7 SAnatoliy
 
18.06.23
16:15
(5) если в модуле объекта создаваемого документа в процедуре пери записи - создать запись в справочнике сотрудники?
8 Михаил Козлов
 
18.06.23
18:58
Прислушайтесь к (3), (5): создать сотрудника - это как бы мама с папой Вас родили. А прием на работу - это совсем другое. Обычно при выборе ссылки на сотрудника в документ есть возможность добавить новый элемент справочника.
Судя по коду Объект.Сотрудник у Вас - строка (наименование). Обычно в документе это ссылка на справочник. И еще: ничего не увидел насчет добавления записей в ТЧ.
9 SAnatoliy
 
18.06.23
20:35
(8) Я не принимаю на работу). В создаваемом документе поле сотрудник у меня текстовое. Ссылки на справочник нет, так как не надо чтоб человек формирующий документ видел список сотрудников.

Записей в ТЧ не увидели, так как не понял как их формировать в коде. На форме мышкой заполнил, а как это сохранять не понял. Штатным сохранением работает).
10 dedmoroz777
 
18.06.23
20:43
(9) Сделайте кнопку в документе "Создать сотрудника". И проверяйте при нажатии пустой он или нет. Если пустой, создавайте.
11 SAnatoliy
 
18.06.23
20:44
К советам по созданию элементов я прислушаюсь и пересмотрю алгоритм работы. Но изначально поставленный вопрос хотелось бы понять как решать.
12 dedmoroz777
 
18.06.23
20:54
(11) По коду, я так понял, вы из одного документа создаёте другой?
13 Bigbro
 
18.06.23
21:01
и куда вы побежите когда не видящий списка сотрудников человек насоздает вам 500 Ивановых, хотя это должен быть один человек
14 Мимохожий Однако
 
19.06.23
08:33
(11) Достаточно в документе заполнить нужные реквизиты и табличную часть. Потом нажать кнопку Записать. При этом никакого программного кода не требуется. Можно добавить проверку на заполненность реквизитов, связанных с планируемым сотрудником, перед записью.
15 Табуретко
 
19.06.23
11:19
(9)  для формирования ТЧ
НовыйДокЗапросНаКартуНовСотрудн = Документы.ЗапросНаКартуДляНовогоСотрудника.СоздатьДокумент();

//в цикле заполняем ТЧ
СтрокаТЧ = НовыйДокЗапросНаКартуНовСотрудн.ТаблицаДокумента.Добавить();
СтрокаТЧ.Реквизит = Заполнить;
//

НовыйДокЗапросНаКартуНовСотрудн.Записать();
16 SAnatoliy
 
19.06.23
18:25
(13) проверку сделал, если есть сотрудник, то сообщение и не записываю.
(14) да, так работает. но думал все ж по своему лучше, хотя и нарушает наверно идеологии 1С по заполнению элементов справочников.
(15) спасибо, попробую по вашему примеру. (жаль что не указали как делать цикл, попробую почитать)
17 Волшебник
 
19.06.23
19:15
(16) Если Вы не умеете циклы, то рано Вам ещё делать по-своему в нарушение идеологии 1С.
18 SAnatoliy
 
20.06.23
07:32
(16) ох, согласен с Вами.

P.S.
...вопрос походу тоже "сложный" попался, раз на 16 постов растянулся без ответов. реальной помощи 0, только советы как не надо.

Огромное спасибо за наводку (15)"Табуретко" за лаконичный ответ.
19 Волшебник
 
20.06.23
12:51
(18) Может Вам с циклами помочь?
20 SAnatoliy
 
20.06.23
14:24
(18) Лучше с табличной частью).

Цикл думаю правильно сделал (проверил его, включив в тело цикла "Сообщить(СтрокаТабличнойЧасти.НомерСтроки);").

Пробую так:
&НаСервере
Процедура СоздатьЗапросНаНовогоСотрудникаНаСервере()
    
    НовыйДокЗапросНаКартуНовСотрудн = Документы.ЗапросНаКартуДляНовогоСотрудника.СоздатьДокумент();
    НовыйДокЗапросНаКартуНовСотрудн.Дата = ТекущаяДатаСеанса();
    НовыйДокЗапросНаКартуНовСотрудн.Сотрудник = Объект.Сотрудник;    
    
    Для Каждого СтрокаТабличнойЧасти Из Объект.ТочкиПрохода Цикл
        
        НовыйДокТЧЗапросНаКартуНовСотрудн = НовыйДокЗапросНаКартуНовСотрудн.ТочкиПрохода.Добавить();
вопросТут->      НовыйДокТЧЗапросНаКартуНовСотрудн.ТочкаПрохода =  как сюда вставить значение из новой табличной части заполненной. ТЧ называется ТочкиПрохода поле ТочкаПрохода

    КонецЦикла;
    
    НовыйДокЗапросНаКартуНовСотрудн.Записать();    
    
КонецПроцедуры
21 vicof
 
20.06.23
15:04
СтрокаТабличнойЧасти.ТочкаПрохода.
Может все-таки курсы посмотришь хотя бы по 1ске?
22 SAnatoliy
 
20.06.23
16:01
(21) Благодарю. Все получилось.

Конечно посмотрю курсы по ютубу) как в отпуске буду.
Сейчас нет возможности заниматься только изучением не отвлекаясь.
Направлений много по работе и жизни и не все на АРМ (ПК).  А ПО в "1С" это так для себя захотелось автоматизировать некоторую рутину себе.
Раньше всегда делал в С++ Builder с БД, сейчас нет возможности использовать свой софт, так как нет лицензии на него.
23 Волшебник
 
20.06.23
23:46
НовыйДокТЧЗапросНаКартуНовСотрудн - плохое название переменной