|
сохранение документа с ТЧ | ☑ | ||
---|---|---|---|---|
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
|
НовыйДокТЧЗапросНаКартуНовСотрудн - плохое название переменной
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |