1С 7.7 7.70.027 Предприятие
Есть журнал документов куда нужно зайти и создать документ, тогда выбрать контрагента из справочника и выписать документ.
Как бы реализовать процес наоборот? Зайти в справочник контрагентов и тогда создать для него документ.
! | https://pro1c.org.ua/index.php?act=announce&id=2: 4 |
4andriy @ Сегодня, 17:24
,
А что мешает из модуля справочника создать документ программно? По кнопочке
Документ = СоздатьОбъект("Документ.Ваш_документ");
//...
//...
//...
Документ.Записать();
Prospero @ Вчера, 22:30
,
Ні, не вірно. В Вашому прикладі будуть створюватися пусті документи які будуть нікому не потрібні.
По перше, в документі в процедурі ПриОткрытии() необхідно:
Процедура ПриОткрытии()
Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
Если ТипЗначения(Форма.Параметр) = 11 Тогда
Контрагент = Форма.Параметр;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Если ТекущийЭлемент().ЭтоГруппа() = 0 Тогда
ОткрытьФорму("Документ.Ваш_документ",ТекущийЭлемент());
КонецЕсли;
Sharzem @ Сегодня, 10:29
,
1. додав в ПриОткрытии код щоб дані виділеного контера переносились в новий документ:
Если ПустоеЗначение(ТекущийЭлемент()) = 0 Тогда
Если ТипЗначения(ТекущийЭлемент()) = 11 Тогда
Контрагент = ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
Процедура накл();
Если ТекущийЭлемент().ЭтоГруппа() = 0 Тогда
ОткрытьФорму("Документ.Накладная.7140",ТекущийЭлемент());
КонецЕсли;
КонецПроцедуры
Sharzem, отчего ж он пустым то будет?
Нет, если создать и потом сразу записать, то будет, согласен
Но ТС не указал какой конкретно ему нужно создать документ, а значит, неизвестны конкретные
реквизиты, которые ему нужно заполнять.
Как я понял, ему из справочника Контрагенты нужно создать док с уже заполненными реквизитами данного контрагента?
Так в чем сложность после создания документа программно заполнить реквизиты нужные?
Строки "//....." в моем примере и подразумевают часть кода, заполняющего документ данными из справочника...
Sharzem @ Сегодня, 10:13
,
1. створити документ - заповнити табличну і інші реквізити
2. дізнатись номер документу через
номердок=ТекущийДокумент();
код відкриває документ, але не його копію, де вибір накладної реалізований через форму вибору
ОткрытьФорму(Накладная,ТекущийЭлемент());
4andriy @ Сегодня, 17:45
,
Отож,
В Довіднику Контрагенти
Додав Поле ввода з вибором - тип Документ.Накладна (тут можу вибрати в який документ треба підставляти дані контрагента)
В журналі документів є вже створена типова накладна. І щоб не набирати одне і те саме, але лише поправити треба процедуру яка:
Створює копію з документу, який вибраний в Полі ввода і підставляє значення контрагента (реквізит в накладній "Контрагент")
Далі скопіюйований документ можна поправити і при потребі зберегти.
4andriy @ Сегодня, 23:25
,
як варіант код який переносить з довідника контрагентів в журнал, а тоді виділяє потрібний документ і тоді копіює, але в цьому випадку не переносяться дані контрагента
Функция кВЖурнал()
Перем лКонт;
ОткрытьФорму("Журнал.[Имя журнала].ФормаСписка",лКонт);
Если ТипЗначения(лКонт)=100 Тогда
лКонт.УстановитьИнтервал(ДатаДок, ДатаДок);
лКонт.АктивизироватьОбъект(ТекущийДокумент());
WSHShell = СоздатьОбъект("WScript.Shell");
WSHShell.SendKeys("{F9}");
КонецЕсли;
КонецФункции
4andriy @ 27.03.20, 23:35
,
получився якийсь такий сирий код)
//добавил в форму справочника контрагентов поле ввода тип документ
//что-бы в форме в поле ввода выбрать документ который будем копировать
Процедура копир()
Если ПустоеЗначение(ТекущийЭлемент())=1 Тогда
Возврат;
КонецЕсли;
Если ТекущийЭлемент().ЭтоГруппа()=1 Тогда
Возврат;
КонецЕсли;
Элемент=СоздатьОбъект("Справочник.Контрагенты");
Элемент.найтиЭлемент(ТекущийЭлемент());
ОКПО=КодОКПО;
//открываем журнал всех документов
ОткрытьФорму("Журнал.Общий");
//в журнале выделить документ который выбран
АктивизироватьОбъект(копирдок);
//открываем документ
ОткрытьФорму(копирдок,ТекущийЭлемент());
//закрываем документ что-бы в журнале он оказался выделеный
Форма.Закрыть()
//копируем выделеный документ
WSHShell = СоздатьОбъект("WScript.Shell");
WSHShell.SendKeys("{F9}");
//поле контрагент в документе меняем на контрагента с кодом окпо который был выделен в справочнике
Контрагент=ОКПО;
//дальше как обычно правим форму и если надо сохраняем
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua