Заполнение на основании из формы списка.
Всем доброе время суток!
Есть задача. При создании документа выбрать другой документ и заполнить одинаковые реквизиты.
Добрался пока что только до такого:
ФормаВыбора документа . Процедура "ПриОткрытии":
Вылазит форма списка этого документа ( выбрать документ нельзя ) .
Как правильнее сделать,чтобы я при нажатии на документ автоматически заполнил реквизиты и табличную часть нынешнего документа ?
Понимаю,что надо получить ссылку документа "Заказы" и с ней работать,но как корректнее будет программно это реализовать?
Есть задача. При создании документа выбрать другой документ и заполнить одинаковые реквизиты.
Добрался пока что только до такого:
ФормаВыбора документа . Процедура "ПриОткрытии":
Если Вопрос("Создать на основании заказа?",РежимДиалогаВопрос.ДаНетОтмена,10)=КодВозвратаДиалога.Да Тогда
Заказы = Документы.Заказы;
Форма = Заказы.ПолучитьФормуСписка();
форма.РежимВыбора = Истина;
Форма.ОткрытьМодально();
Иначе
Отказ = Истина;
КонецЕсли;
ПоказатьВылазит форма списка этого документа ( выбрать документ нельзя ) .
Как правильнее сделать,чтобы я при нажатии на документ автоматически заполнил реквизиты и табличную часть нынешнего документа ?
Понимаю,что надо получить ссылку документа "Заказы" и с ней работать,но как корректнее будет программно это реализовать?
По теме из базы знаний
- Ввод "Поступления наличных" на основании "Отчетов о розничных продажах" для БП 3
- Правила жёлтого напильника. Часть 3. Правильного ответа нет
- Массовая рассылка печатных форм любых документов по электронной почте
- Рабочее место кассира (ФФД 1.2, Маркировка, Онлайн-касса АТОЛ, ДТО WEB-сервер + ДТО WEB Requests)
- Ввод "Приходных кассовых ордеров" на основании "Отчетов о розничных продажах" для УТ 11, КА, ERP 2
Найденные решения
(1)
Надо не ПолучитьФормуСписка(), а вызвать диалог ввода значения, поскольку требуемое значение это документ, то будет открываться форма выбора
Если Вопрос("Создать на основании заказа?",РежимДиалогаВопрос.ДаНетОтмена,10)=КодВозвратаДиалога.Да Тогда
Заказы = Документы.Заказы;
Форма = Заказы.ПолучитьФормуСписка();
форма.РежимВыбора = Истина;
Форма.ОткрытьМодально();
Иначе
Отказ = Истина;
КонецЕсли;
Заказы = Документы.Заказы;
Форма = Заказы.ПолучитьФормуСписка();
форма.РежимВыбора = Истина;
Форма.ОткрытьМодально();
Иначе
Отказ = Истина;
КонецЕсли;
Надо не ПолучитьФормуСписка(), а вызвать диалог ввода значения, поскольку требуемое значение это документ, то будет открываться форма выбора
док=Документы.ЗаказПокупателя.ПустаяСсылка();
если ВвестиЗначение(Док,"Выберите документ основание") тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект,Док); //заполнит реквизиты, но не табличные части
ЭтотОбъект.товары.загрузить(Док.Товары.Выгрузить()); //Так можно заполнить табличную часть
ЭтотОбъект.заполнить(Док); //Это если есть обработка заполнения в модуле объекта
иначе
Отказ=Истина;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Надо не ПолучитьФормуСписка(), а вызвать диалог ввода значения, поскольку требуемое значение это документ, то будет открываться форма выбора
Если Вопрос("Создать на основании заказа?",РежимДиалогаВопрос.ДаНетОтмена,10)=КодВозвратаДиалога.Да Тогда
Заказы = Документы.Заказы;
Форма = Заказы.ПолучитьФормуСписка();
форма.РежимВыбора = Истина;
Форма.ОткрытьМодально();
Иначе
Отказ = Истина;
КонецЕсли;
Заказы = Документы.Заказы;
Форма = Заказы.ПолучитьФормуСписка();
форма.РежимВыбора = Истина;
Форма.ОткрытьМодально();
Иначе
Отказ = Истина;
КонецЕсли;
Надо не ПолучитьФормуСписка(), а вызвать диалог ввода значения, поскольку требуемое значение это документ, то будет открываться форма выбора
док=Документы.ЗаказПокупателя.ПустаяСсылка();
если ВвестиЗначение(Док,"Выберите документ основание") тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект,Док); //заполнит реквизиты, но не табличные части
ЭтотОбъект.товары.загрузить(Док.Товары.Выгрузить()); //Так можно заполнить табличную часть
ЭтотОбъект.заполнить(Док); //Это если есть обработка заполнения в модуле объекта
иначе
Отказ=Истина;
КонецЕсли;
Показать
(21)В той процедуре что я писал, так и присваивать
ЭтотОбъект.Организация = док.Организация и т.д это для реквизитов, для табличной части больше
ЭтотОбъект.Организация = док.Организация и т.д это для реквизитов, для табличной части больше
Для каждого стр из Док.Товары цикл
НовСтр= ЭтотОбъект.ТОвары.Добавить();
Новстр.Номенклатура=Стр.Номенклатура;
//и т.д
Конеццикла;
(22) Вот так вышло. Это в модуле формы "При открытии". Правильно ли так будет?
Если Вопрос("Создать на основании заказа?",РежимДиалогаВопрос.ДаНетОтмена,10)=КодВозвратаДиалога.Да Тогда
Оклейка = Документы.Заказ.ПустаяСсылка();
Если ВвестиЗначение(Оклейка,"Выберите документ основание") тогда
ЭтотОбъект.Номер = Оклейка.НомерЗаказа;
ЭтотОбъект.Дата = Оклейка.Дата;
ЭтотОбъект.Ответственный = Оклейка.Ответственный;
Для каждого Стр Из Оклейка.СписокНоменклатуры Цикл
НовСтр = ЭтотОбъект.Товары.Добавить();
НовСтр.Номенклатура = Стр.Наименование;
НовСтр.Количество = стр.Количество;
КонецЦикла;
Иначе
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Показать
(25)Нормально, если достиг желаемого результата. я бы только поменял РежимДиалогаВопрос.ДаНетОтмена на РежимДиалогаВопрос.ДаНет - не надо три варианта, хватит двух.
Или если 3 варианта тогда дописать типа:
Ответ Да - вводим на основании
Ответ Нет - просто создается новый документ
Ответ Отмена - отказ от ввода документа
Или если 3 варианта тогда дописать типа:
Ответ Да - вводим на основании
Ответ Нет - просто создается новый документ
Ответ Отмена - отказ от ввода документа
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот