|
Запись реквизитов в новый документ Заказ клиента УТ11 | ☑ | ||
---|---|---|---|---|
0
newtech
naïve
14.11.22
✎
13:02
|
Подскажите почему не сохраняет подставленные реквизиты в новом документе
1.Комментарий сохраняет 2.Функция находит контрагента по ИНН, вместо *, подставляю ИНН Заранее спасибо!
|
|||
1
Ryzeman
14.11.22
✎
13:24
|
Повис над твоим кодом и пытаюсь минут 5 понять: почему ты думаешь он должен работать?... И как он должен работать?
Если у тебя задача создать документ, зачем вообще этот изврат с формой? |
|||
2
newtech
naïve
14.11.22
✎
13:38
|
(1) да, задача создать новый документ по кнопке, предварительно обработав DBF файл(этот вопрос для себя решил) , и заполнить данными новый документ. 1С для меня хобби (программлю для себя), так что сильно не пинайте. За пример кода буду безмерно благодарен.
|
|||
3
Kassern
14.11.22
✎
13:40
|
(2) Обычно вот это дело:
Форма=ПолучитьФорму("Документ.ЗаказКлиента.ФормаОбъекта"); ДанныеФормы=Форма.Объект; ДанныеФормы = ЗаполнитьНовыйДокумент(ДанныеФормы); КопироватьДанныеФормы(ДанныеФормы,Форма.Объект); Используется, когда нужно открыть пользователю заполненную форму нового документа, еще не записанного в базу. Если вам нужно просто создать документ и его заполнить, тогда вам форма вообще не нужна. просто Док=Документы.ЗаказКлиента.СоздатьДокумент(); И заполняете реквизиты Док. |
|||
4
Ryzeman
14.11.22
✎
13:48
|
(3) Не, ДанныеФормы = ЗаполнитьНовыйДокумент(ДанныеФормы); и то что внутри не используется ни для чего. Вообще ни для чего)))
(2) Не сочти за наезд, просто порой удивительно видеть человек 12 лет на мисте и такое) Хотя тут семёрочников много и тех кто УФ в глаза не видел. Как написал (3) На сервере создаёшь объект документа и заполняешь его. Если очень надо - на клиент возвращаешь ссылку и можешь открыть. Для таких извратов что ты делал есть ещё РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы(). Но не надо) |
|||
5
Kassern
14.11.22
✎
13:53
|
(4) "не используется ни для чего" - Да все можно было использовать, скорее всего ТС стянул кусок кода из открытия формы с заполнением. Просто вместо открыть() в конце написал Записать().
Вот у меня кусок кода, который это делает: Форма = ПолучитьФорму("Документ.ОтчетКомиссионера.ФормаОбъекта"); ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее Форма.Открыть(); &НаСервере Функция ЗаполнитьДокументНаСервере(ДанныеФормы); Док = Документы.ОтчетКомиссионера.СоздатьДокумент(); ....//Заполняем поля ЗначениеВДанныеФормы(Док,ДанныеФормы); КонецФункции |
|||
6
Kassern
14.11.22
✎
13:54
|
(5) + ну и ТС забыл Создать документ)
|
|||
7
Ryzeman
14.11.22
✎
13:55
|
(5) Ну это уже больше похоже на правду, но у тебя нет
ДанныеФормы = ЗаполнитьНовыйДокумент(ДанныеФормы); :-D |
|||
8
newtech
naïve
14.11.22
✎
17:31
|
у меня по кнопке ОБРАБОТАТЬ ЗАКАЗЫ С ПОЧТЫ, на почте лежат DBF файлы, которые я успешно считываю и преобразовываю в формат для заполнения формы нового документа ЗаказКлиента.
Задача создать ЗаказКлиента не открывая его, ТЕ программно заполнить пустые поля или изменить реквизиты, которые автоматически прописываются при создании НД. в данном случае мне нужно заполнить или изменить данные реквизиты 1. заполнить поле Клиент, поле соглашение должно автоматически прописаться (понятно , что предварительно) данный контрагент должен быть прописан в базе. 2. заполнить поля номер заказа и дату (по данным клиента), ну и табличную часть. 3. Изменить реквизит статус и способ доставки на применимый к данному заказу из файла. и вот это я так понимаю мне не подходит, открывает совершенно пустой документ. Док = Документы.ОтчетКомиссионера.СоздатьДокумент(); в моем коде автоматически создается документ, уже с заполненными реквизитами по умолчанию, и пустым полем контрагент, но как правильно заполнить и записать реквизит мне не понятно., я понимаю что это нужно сделать перед сохранением. |
|||
9
Kassern
14.11.22
✎
17:34
|
(8) "и вот это я так понимаю мне не подходит, открывает совершенно пустой документ. " - у вас вообще документ не должен открываться судя по задаче. Этот кусок кода создает новый документ, который вы можете заполнить впоследствии и записать в базу:
Док = Документы.ВашДок.СоздатьДокумент(); Док.Организация=ВашаОрганизация; Док.Партер=ВашПартнер; И т.д. Док.Записать(НужныйРежимЗаписиДокумента); Можете сообщить(Док.Ссылка) при желании |
|||
10
newtech
naïve
19.11.22
✎
22:44
|
И все же после некоторых экспериментов с кодом, у меня так и не получается реализовать задуманное., попробую еще раз по подробней описать задачу. Конфигурация УТ11, Расширение.
1. Создал расширение в режиме Адаптация 2. На форме ФормаСпискаДокументов (ЗаказыКлиентов) Создал программно кнопку СОЗДАТЬ ЗАКАЗЫ 3. При нажатии на кнопку выбираю DBF файл и обрабатываю его 4. По ИНН нужно найти в справочнике Контрагента, это я делаю этим способом ДанныеФормы.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН) ;
5.Нужно программно создать новый документ с заполнением реквизитов по умолчанию(не открывая его) 6. изменить(Статус и Способ доставки) и заполнить поля(Клиент, адрес доставки, номер заказа по данным клиента и др), где я так понимаю после добавления клиента, должно автоматически подтянуться соглашение по умолчанию. 7. Заполнить табличную часть, ну все это провести. Если коротко, то Программное создание Заказ клиента с заполнением, проведением не открывая его. Причем поля такие как комментарий сохраняет присвоенное значение, а вот с полем Контрагент (Клиент) не получается, я так понимаю , что скорей всего я должен указать, как ссылка на справочник, как это сделать не могу найти. |
|||
11
newtech
naïve
20.11.22
✎
13:11
|
Разобрался....
Нужно было добавить одну строчку, при снятом флаге (Независимо вести Партнеров и Контрагентов, прописывался только Контрагент, поле которого было скрыто.
Но теперь возникает следующий вопрос, как вызвать СОБЫТИЕ при изменении поля Партнер, для того чтобы автоматически заполнилось поле Соглашение |
|||
12
Сергиус
20.11.22
✎
14:48
|
(11)Такое ощущение, пытаетесь код из обычных форм, перенести на управляемые. Эти события расчитаны на интерактивную работу в пользовательском режиме. Если вы хотите их автоматического выполнения, придется повторять в самом коде их работу и вызов.
|
|||
13
Остап Ибрагимович
20.11.22
✎
16:43
|
если надо заполнить документ - заполняйте документ. это про объекты данных.
формы к этой задаче - никаким боком. вообще. потому что формы - это про интерфейс. (вообще ваши телодвижения очень напоминают древние когнитивные ошибки семерочников, путающих подчиненность документов и ввод на основании) |
|||
14
newtech
naïve
20.11.22
✎
18:15
|
(13) Покажите пример, как тоже самое можно реализовать по другому(правильно), очень давно не программил в 1с, сейчас возникла необходимость, не исключаю что, что то делаю не так., опираюсь на найденные примеры.
|
|||
15
Остап Ибрагимович
20.11.22
✎
18:23
|
(14): (3), (9), и т.п.
прим.: если этого недостаточно - значит начинать надо издалека. на уровне курсов. а курсы - платные. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |