Версия для печати темы (https://pro1c.org.ua/index.php?s=db622cdc0bae0b4e0dce158a78b6fd75&showtopic=37896)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Чи можливо за номером документу відкрити його візуальну форму

Автор: leo10k10 14.06.17, 14:52

Доброго дня Шановні користувачі 1С.
Маю проблемку і водночас надію на те, що саме тут з Вашою допомогою зможу її позбутися.
Суть проблеми полягає у тому, що в мене є документ "Акцизи" при відкритті даного документу мені потрібно аби на екрані користувача, не просто з'являлася форма списку, а вже заповнена форма та сама з якою останній раз працювали і зберегли з усіма внесеними даними та змынами. Я думав, що по номеру "Документ.Акцизи" можна буде "ПриОткрытии()" використати метод "ОткрытьФорму()" але щось нічого не виходить. Плюсуватиму повідомлення які реально несуть в собі корисну інформацію, а не заумні посилання в бібліотеку, дякую за розуміння.

Автор: mister-x 14.06.17, 16:21

Цитата(leo10k10 @ 14.06.17, 14:52) *
є документ "Акцизи" при відкритті даного документу мені потрібно аби на екрані користувача, не просто з'являлася форма списку, а вже заповнена форма та сама з якою останній раз працювали і зберегли з усіма внесеними даними та змынами

що за форма списку у документі, можливо, ви мали на увазі табличну частину цього документу? Скріншоти документу можна глянути?

Автор: leo10k10 14.06.17, 16:46

Цитата(mister-x @ 14.06.17, 17:21) *
що за форма списку у документі, можливо, ви мали на увазі табличну частину цього документу? Скріншоти документу можна глянути?

ВИБАЧАЮСЬ я дійсно некоректно написав по суті користувачу для роботи надається таблична частина что в Диалоге идентифицируется как Многострочная часть.

Автор: mister-x 14.06.17, 17:06

ви документ хочете відкрити із іншого об'єкту (для прикладу довідник, не із журналу документів) програмно наскільки я зрозумів?

документ "Акциз" вже записаний?

Автор: volodya1122 15.06.17, 13:46

ще уточнюючі питання.
Опишіть як це має виглядати на практитці.
1. Користувач заходить в 1С
1.1. Відкриває журнал Документів "Акцизи" і вибравши любий документ йому всеодно система повинна підсунути останній, що він редагував?
1.2. В формі журналу бажаєте поставити кнопку "Відрити останній докуент який редагувався"?
13. Ваші варіанти?

Залежно від реалізації можна використати методи НайтиДокумент, НайтиПоНомеру(в межах періоду де номер документу унікальний)

Автор: leo10k10 15.06.17, 23:00

Цитата(volodya1122 @ 15.06.17, 14:46) *
Опишіть як це має виглядати на практитці.

1. Користувач заходить в 1С
1.1 На панелі інструментів тисне на іконку "Акцизи", з'являється форма документу "Новий" для її заповнення (створює первинний документ чи за потреби абсолютно новий, що при натиснені кнопки "Зберегти", на цій формі записується з індивідуальним номером)
1.2 Аби не вводити Акцизи зпочатку а використати останній документ на цій же формі є кнопка "Відрити останні набрані Акцизи" і провести його редагування знову при натисненні кнопки "Зберегти" записати його але вже з наступним індивідуальним номером

виходить що останній номер збереженого документу я можу отримати програмно а ось відкрити по ньому цей документ незнаю як

Автор: nysysimara 16.06.17, 10:09

если у вас в коде присутствует фраза

ЧтоТо.Записать();

то должен сработать метод
ОткрытьФорму(ЧтоТо.ТекущийДокумент());


или
ДокументАкциз = СоздатьОбъект("Документ.Акциз");
Если ДокументАкциз.НайтиПоНомеру(НомерДляПоиска,ТекущаяДата)=1 Тогда
    ОткрытьФорму(ДокументАкциз.ТекущийДокумент());
КонецЕсли

Автор: volodya1122 16.06.17, 10:16

leo10k10 @ Сегодня, 0:00 * ,

Дуже дивна задумка. в майбутньому буде путаниця.
мені незрозуміло Кнопка "Відрити останні набрані Акцизи" має відкрити список документів (тобто журнал документів. Чи останній документ?
Якщо останній документ то є 2 варіанти
1. Відкрити набраний документ для редагування (тоді при збереженні будуть виправлення в існуючому документі
2. Відкрити новий документ (переглянути в типовій конфігурації процедуру (ПриОткритии(признакКопирования)
Обидва методи реалізуються функцією "ОткрытьФорму"

Наприклад повісити цю процедуру на вашу кнопку "Відрити останні набрані Акцизи"

  Процедура ОткрДок()
      Док=СоздатьОбъект("Документ.акциз");
      Если Док.НайтиПономеру("0000001038",ТекущаяДата())=1 тогда
  //    ТекущийДок=Док.ТекущийДокумент();
      ОткрытьФорму(Док.ТекущийДокумент(),"проба");
      КонецЕсли;
  КонецПроцедуры

А в процедурі ПриОткритии зробити щось типу цього
Процедура ПриОткрытии()    
    тт=Форма.Параметр;
    Если тт="проба" тогда
    ДатаДок=ТекущаяДата();    //і інші дії які потрібно зробити
    Створив      =глКористувач;
    КонецЕсли;

Автор: volodya1122 16.06.17, 11:18

ще додам до вищесказаного.
для другого варіанту потрібно виправити код:

ОткрытьФорму("Документ.акциз","проба",Док1.ТекущийДокумент());

і аналізувати (тобто копіювати дані з попереднього документу) в процедурі
Процедура ВводНаОсновании(Док) 
ДатаДок=ТекущаяДата();    
Контрагент=Док.Контрагент;




Автор: mister-x 16.06.17, 12:23

Цитата(leo10k10 @ 15.06.17, 23:00) *
1.2 Аби не вводити Акцизи зпочатку а використати останній документ на цій же формі є кнопка "Відрити останні набрані Акцизи" і провести його редагування знову при натисненні кнопки "Зберегти" записати його але вже з наступним індивідуальним номером

а якщо ввести деякий документ-шаблон і його надалі копіювати програмно і вносити нові дані / редагувати існуючі, так не підійде?

я би ще таку опцію розглянув - форму для відкриття нового документу
ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>)

Цитата
<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму.

з останнього документу записати дані у зміну і аналізувати її при відкриті нового документу

Автор: mister-x 16.06.17, 13:45

Цитата(mister-x @ 16.06.17, 12:23) *
зміну

всет-таки "змінну", а то із одним "н" зміст зовсім інший smile.gif

Автор: leo10k10 16.06.17, 14:56

Цитата(mister-x @ 16.06.17, 13:23) *
я би ще таку опцію розглянув - форму для відкриття нового документу
ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>)

дякую за думку але я щось недогнав цей варіант плюсую Вам за те що не залишились осторонь цього питання

Автор: leo10k10 19.06.17, 12:03

Шановний "volodya1122 " я скористався Вашим кодом

  Процедура ОткрДок()
      Док=СоздатьОбъект("Документ.акциз");
      Если Док.НайтиПономеру("0000001038",ТекущаяДата())=1 тогда
  //    ТекущийДок=Док.ТекущийДокумент();
      ОткрытьФорму(Док.ТекущийДокумент(),"проба");
      КонецЕсли;
  КонецПроцедуры

і майже все проканало я про те, що потрібну форму воно мені відкриває і в табличній частині всі останні збереження є але на формі в мене також є "Поле Ввода" яке не заповнюється тими даними які були попередньо туди внесені як з цим бути????????

Автор: volodya1122 19.06.17, 15:36

leo10k10 @ Сегодня, 13:03 * ,
"Поле ввода" - це не реквізит документа!!!! при збереженні документа дані з цого поля вводу не зберігаються.
Якщо при штатнаму відкритті документу у вас ці дані збереглись, то вони або програмно вираховуються, або туди записуються дані з іншого реквізиту (перевірити що написано в закладці "Дополнитено" цого поля вводу, або пошук в модулі документу по "Ідентифікатору" цього поля вводу)
Ще раз наголошу!!!!!! Вам потрібно відкрити існуючий документ для редагування, чи створити ще один такий самий документ (щоби попередній документ залишився незмінним, а те що відкрилось - зберегти як новий документ)

Автор: leo10k10 19.06.17, 23:07

Цитата(volodya1122 @ 19.06.17, 16:36) *
"Поле ввода" - це не реквізит документа!!!! при збереженні документа дані з цого поля вводу не зберігаються.

Точно зробив його реквізитом і все проканало.

Я може вже й достав когось але в мене, ще є проблемка та запитання.
На цій формі окрім кнопки "Відрити останні набрані Акцизи" є ще декілька кнопок як зробити так аби вони при натисненні цієї змінювали свій стан тобто ставали неактивними????

Пробував до і після рядка з кодом
    ОткрытьФорму(Док.ТекущийДокумент(),"проба")


змінити статус кнопки таким рядком
    Форма.КнЗаписати.Доступность(0);

де "КнЗаписати" ідентифікатор кнопки статус якої треба змінити
і нажаль не вийшло, що тут порадите?


Автор: volodya1122 20.06.17, 9:33

Цитата(leo10k10 @ 20.06.17, 0:07) *
Пробував до і після рядка з кодом

ОткрытьФорму(Док.ТекущийДокумент(),"проба")



змінити статус кнопки таким рядком

Форма.КнЗаписати.Доступность(0);



У вас після цієї дії на в програмі відкрито два документи "акциз". При таких діях кнопки мали стати неактивними в першому документі.
щоб стали неативні в другому документі потрібно це прописати в ПриОкритии (з аналізом як я писав вище що документ відкритий не інтерактивно а по "ОкрытьФорму")

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua