Открытие формы еще незаписанного документа 1С 8.2 Управляемое приложение

Публикация № 118784

Разработка - Практика программирования

Недавно столкнулся с проблемой открытия формы еще не записанного в БД документа, много возился с этим. Решил обобщить все найденное, может кому-то сэкономит время.

Итак вопрос №1: Как открыть форму еще не записанного документа (не заполнить на основании) ?

Ответ: Чтобы открыть форму нам нужно связать ее с ссылкой объекта, но объект еще не записан. Многие пытаются использовать метод УстановитьСсылкуНового() но это не прокатывает. После долгих чтений я сделал вот так:

&НаКлиенте
Процедура Команда(Команда)

Форма = ПолучитьФорму("Документ.НашДокумент.ФормаОбъекта");
ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
Форма.Открыть();

КонецПроцедуры

// Можно использовать безконтекстный вызов, оптимизируем передачу данных

&НаСервереБезКонтекста

Функция ЗаполнитьДокументНаСервере(ДанныеФормы);

Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.НашДокумент")); // Получаем объект из данных формы ИЛИ

Док = Документы.НашДокумент.СоздатьДокумент();

// Заполняем реквизиты объекта или другие действия ********

ЗначениеВДанныеФормы(Док,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

КонецФункции

2. Как открыть форму уже записанного документа?

Здесь есть два метода ОткрытьФорму() или ОткрытьЗначение(). В обоих случаях нужно передавать ссылку на записанный документ.

 

&НаКлиенте
Процедура Команда(Команда)

СсылкаОбъекта = СоздатьНаСервере();
//1.
ОткрытьФорму("Документ.НашДокумент.Егоформа", Новый Стурктура("Ключ", СсылкаОбъекта)); // Через параметры мы передаем ссылку документа

//2.

ОткрытьЗначение(СсылкаОбъекта);

КонецПроцедуры

&НаСервере
Функция ЗаполнитьДокументНаСервере()

// Используем метод создать

НовыйОбъект = Документы.НашДокумент.СоздатьДокумент();

 // Заполняем его 

НовыйОбъект.Записать(); // Обязательно записываем

Возврат НовыйОбъект.Ссылка; //Возвращаем ссылку

КонецФункции

На уникальность материла не претендую, сам только "начинающий" так что если что не так  - критикуйте!


Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. bulpi 175 29.02.12 09:22 Сейчас в теме
Для того, чтобы открыть форму нового документа, достаточно использовать метод ОткрытьФорму. Все , что Вы написали, не нужно. Другое дело, если нужно ЗАПОЛНИТЬ эту форму. Так заголовок публикации тогда нужно поменять.
kyrasol; yuraskas; korzhishe; Arzhanov.AV; +4 2 Ответить
34. ui69 41 14.03.17 13:00 Сейчас в теме
(1) Считаю, что заголовок соответствует. Нашел и понял суть именно по тожу заголовку который указан сейчас: Открытие формы еще незаписанного документа.
freeek; nekit_rdx; Drivingblind; Rusena; user1053017; victorree; PLAstic; Dach; wowik; ErshKUS; sasha777666; Sherdrada; Monte Carlo; myoker; +14 Ответить
3. M-Mark-76 115 01.03.12 09:49 Сейчас в теме
Спасибо, вся описаная методика работает
4. serg_gres 142 01.03.12 22:55 Сейчас в теме
А я сделал через временное хранилище.
5. bulas 190 27.08.12 15:00 Сейчас в теме
Заполняем документ программно, а затем:
ФормаДокумента = ДокументОбъект.ПолучитьФорму();
ФормаДокумента.ОткрытьМодально();
Оставили в открытом документе еще "следы" и записываем(проводим).
7. via64 11.04.13 11:01 Сейчас в теме
(5) bulas,
Это работает только в толстом клиенте.
PLAstic; Dach; pbahushevich; +3 Ответить
6. Igoryany4 26.10.12 14:14 Сейчас в теме
При выполнении строки:
Форма = ПолучитьФорму("Документы.НашДокумент.ФормаОбъекта");


возникает ошибка, исправленный вариант:
Форма = ПолучитьФорму("Документ.НашДокумент.ФормаОбъекта");
pbahushevich; +1 Ответить
8. nick_krsk 01.06.13 14:28 Сейчас в теме
Статья помогла решить задачу, спасибо!
Vin1s; asterisk; +2 Ответить
9. nixel 922 12.06.13 12:31 Сейчас в теме
Печально... "Разработку управляемого интерфейса" проглядите. Там есть простой пример, как это сделать.
11. leemuar 13.11.13 15:29 Сейчас в теме
(9) nixel, на какой из 500 страниц?
kholkin; wowik; CratosX; +3 Ответить
12. nixel 922 13.11.13 18:25 Сейчас в теме
(11) leemuar, из 600 :)
Извиняюсь, сейчас проглядел книгу, действительно там этого нет. Видимо идею брал из какого-то другого печатного источника.
В работе дабы не гонять большие массивы данных между клиентом и сервером использую такой подход:

Форма, с которой мы открываем незаписанную форму.
&НаКлиенте
Процедура ОткрытьЗаполненныйДокумент(Команда)
                Адрес = ПолучитьАдресНовогоДокумента(ЭтаФорма.УникальныйИдентификатор);
                Параметры = Новый Структура(“АдресХранилища”, Адрес);
                ОткрытьФорму(”Документ.Приказ.ФормаОбъекта”, Параметры, ЭтаФорма);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьАдресНовогоДокумента(УИД)
                ДокументОбъект = Документы.НашДокумент.СоздатьДокумент();
                ...
                code code code
                ...
                АдресХранилища  = ПоместитьВоВременноеХранилище(ДокументОбъект, УИД);

                Возврат АдресХранилища;
КонецФункции
Показать

Форма открываемого объекта
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
                Если Параметры.Свойство(”АдресХранилища”) И ЭтоАдресВременногоХранилища(Параметры.АдресХранилища) Тогда
                               ДокументОбъект = ПолучитьИзВременногоХранилища(Параметры.АдресХранилища);
                               ЗначениеВРеквизитФормы(ДокументОбъект, ”Объект”);
                КонецЕсли; 
КонецПроцедуры


Да, приходится незначительно залезать в форму объекта, но получается большой выигрыш по производительности и клиент-серверному взаимодействию.
pavelpribytkin96; Jeka44; PLAstic; Vin1s; i.c.h; Xershi; Krio2; unichkin; kuza_87; klinval; Sergafan10; Union37; Zero_nv; Elvisnya; +14 Ответить
14. Elvisnya 12 28.07.14 12:51 Сейчас в теме
(12) nixel, спасибо за совет. В 8.3 скорее всего не будет работать, т.к. в 8.3 при помещении несериализуемого значения во временное хранилище возникает модульная ошибка, а ДокументОбъект как раз несереализуемый. Как вариант можно использовать структуру, взамен ДокументОбъект.
SkyHunter; +1 Ответить
41. Xershi 1020 08.10.17 17:16 Сейчас в теме
(14) так и есть:
АдресХранилища = ПоместитьВоВременноеХранилище(НовыйОбъект, УникальныйИд);

Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище)
АдресХранилища = ПоместитьВоВременноеХранилище(НовыйОбъект, УникальныйИд);
по причине:
Переданное значение не может быть помещено во временное хранилище

1С:Предприятие 8.3 (8.3.10.2466)

А метод автора сработал!

В своей публикации не знал как решить проблему не записанного битого объекта: https://infostart.ru/public/608150/
А теперь это стало возможно!
42. Xershi 1020 23.12.17 22:40 Сейчас в теме
(41) после тестов пришел к мнению, что открыть форму битой ссылки на УФ не возможно. Единственный вариант создавать произвольную форму, но смысла в этом нет, проще записать и открыть уже элемент!
57. Jeka44 23.03.20 13:55 Сейчас в теме
(41) Что бы не возникало такой ошибки во временное хранилище можно положить структуру, содержащую документОбъект, а не сам документ объект, например так:

Функция ПолучитьСсылкуНаДокумент(УИД)

НашДокументОбъект= Документы.НашДокумент.СоздатьДокумент();

НашДокументОбъект.Контрагент = Объект.Контрагент;

СтруктураДокумента = Новый Структура("ДокументОбъект", ДокументЗаписьВОчередь);

АдресХранилища = ПоместитьВоВременноеХранилище(СтруктураДокумента, УИД);

Возврат АдресХранилища;

КонецФункции //ПолучитьСсылкуНаДокумент
58. Xershi 1020 23.03.20 14:13 Сейчас в теме
(57) а ДокументЗаписьВОчередь откуда?
59. Jeka44 23.03.20 15:02 Сейчас в теме
(58)
У меня так документ назывался, пропустил по невнимательности когда пример на инфостарт писал)
60. Xershi 1020 23.03.20 15:26 Сейчас в теме
(59) я так понял вы заменили данные объекта на данные этого объекта в структуре и тогда удалось на УФ открыть новый элемент, заполнить его данными удаленного, хотя какие данные. Речь идет об "УИД". И когда пользователь записал это, то ссылка перестала быть битой?
61. Jeka44 23.03.20 17:12 Сейчас в теме
(60) Нет, у меня не стояла задача воскресить битый документ, я решал задачу точно такую же, которая была в заголовке данной темы, а именно: "Открытие формы еще не записанного документа." Теперь подробности: Есть некая форма обработки, назовем ее "Рабочим местом". На этой форме рабочего места вводим какие-либо данные. Далее в этом же рабочем месте по нажатию кнопки "Создать Запись в очередь" программно создается Документ, как было видно ранее у меня он назывался "Запись в очередь". То есть у меня есть ДокументОбъект НЕ ЗАПИСАННОГО документа и мне нужно было открыть его заполненную форму, с чем данный способ прекрасно справился. УИД здесь - это уникальный идентификатор формы Рабочего места, нужен он для того чтобы "В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы" (читата из конфигуратора из описания метода ПоместитьВоВременноеХранилище)

P.S. Так же с этим справлялся метод "ОткрытьЗначение", но не совсем корректно, а именно он открывал форму по умолчанию, а по задаче нужно было открыть форму, не являющуюся формой по умолчанию.
62. Xershi 1020 23.03.20 18:54 Сейчас в теме
(61) а так просто открыть форму с данными это не проблема. Проблема именно, чтобы открыть с нужным УИД.
Автор описал, как заполнять объект данными.
10. M.Shalimov 173 25.06.13 15:27 Сейчас в теме
Функция ЗаполнитьДокументНаСервере(ДанныеФормы);


В Вашем примере функция ничего не возвращает и ";" при определении излишни.
13. dachnik 109 13.12.13 13:03 Сейчас в теме
Спасибо, хоть ваш пример у меня и не сработал, но навел на правильную мысль.
15. Kuklachel 09.09.14 13:34 Сейчас в теме
Спасибо lobster, очень помогли разобраться!
16. t278 36 23.09.14 03:20 Сейчас в теме
в моём случае, нужно было открывать
мФорма= ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары");
50. Vida 13 29.01.19 23:35 Сейчас в теме
(16)
У меня заработало и как у вас и как у автора.
Странно...

Теперь проблема выбора.

ЧЯДНТ?

Автору СПАСИБО!
17. kraynev-navi 468 27.02.15 09:07 Сейчас в теме
Подозреваю, что у последней функции в статье название должно быть все-таки СоздатьНаСервере()
18. volha-77 19 11.03.15 21:26 Сейчас в теме
Спасибо, очень нужная статья, все сработало и в 8.3
Vin1s; Vida; +2 Ответить
19. hiexe 01.04.15 14:08 Сейчас в теме
20. Sergus 09.04.15 15:11 Сейчас в теме
До недавнего времени все так и работало но вот сегодня все стало работать так как написал t278, нужно создавать конкретную форму.
51. Vida 13 29.01.19 23:38 Сейчас в теме
(20)
А что у вас изменилось? У меня работают оба варианта.
Платформа 8.3.13.1644
УНФ 1.5
21. prodines 107 10.04.15 14:49 Сейчас в теме
ПолучитьФорму - доступность "Толстый клиент"! Минусую публикацию как нерабочую.
49. Vida 13 29.01.19 23:30 Сейчас в теме
(21) Зачем пугаете?

ПолучитьФорму (GetForm)

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).
Вызов метода выполняет обращение к серверу.
22. mirrr 80 23.04.15 15:22 Сейчас в теме
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'
Эта ошибка на строку ЗаполнитьДокументНаСервере(ДанныеФормы);
Версия 8.3. В чем причина?
23. sonGodv 42 29.04.15 21:14 Сейчас в теме
В моей ситуации не проходит не первый ни второй вариант.
В первом, документ Установки цен номенклатуры, не заполняется табличная часть, видимо надо вызывать еще процедуры из общих модулей
Во втором Документ можно записать, только если у пользователя есть полные права.
Мне нравиться больше второй вариант, но не нашел как обойти контроль прав пока.
Может кто сталкивался при записи программно с ограничениям по правам?
24. korppinen 22 10.06.15 12:49 Сейчас в теме
(23) sonGodv,
УстановитьПривилегированныйРежим(Истина);
48. serg-lom89 60 12.12.18 18:55 Сейчас в теме
(23)
Добрый
точно с таким же столкнулся((
не подскажете почему не заполняются ТЧ?
25. alexa191 19.07.15 18:23 Сейчас в теме
Благодарю, помогла статья
26. SunnyGirl 13.10.15 09:37 Сейчас в теме
Спасибо, статья помогла.
27. nikiforovvn 15.02.16 10:36 Сейчас в теме
28. KNM.Work 30.05.16 01:30 Сейчас в теме
29. tindir 21.08.16 18:54 Сейчас в теме
&НаКлиенте
Процедура Команда(Команда)

Форма = ПолучитьФорму("Документ.НашДокумент.ФормаОбъекта");
ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
Форма.Открыть();

КонецПроцедуры

// Можно использовать безконтекстный вызов, оптимизируем передачу данных

&НаСервереБезКонтекста

Функция ЗаполнитьДокументНаСервере(ДанныеФормы);

Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.НашДокумент")); // Получаем объект из данных формы ИЛИ

Док = Документы.НашДокумент.СоздатьДокумент();

// Заполняем реквизиты объекта или другие действия ********

ЗначениеВДанныеФормы(Док,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

КонецФункции
Показать

В коде теперь ошибка - Нельзя изменять поле, содержащее объект данных формы....
Как на этом вывихе мозга можно разрабатывать....
30. sergoqwe 06.09.16 11:09 Сейчас в теме
(29) tindir,
&НаКлиенте 
Процедура Команда1(Команда) 

ЭлементыОтбора = Новый Структура("ВидОперации", ВидОперацииДокумента()); 
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора); 
ФормаДокумента = ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы); 
ДанныеФормы = ФормаДокумента.Объект; 
ЗаполнитьДокументНаСервере(ДанныеФормы); 
КопироватьДанныеФормы(ДанныеФормы, ФормаДокумента.Объект); 

КонецПроцедуры 

&НаСервере 
Функция ЗаполнитьДокументНаСервере(ДанныеФормы); 
Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.РеализацияТоваровУслуг")); 
Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); 
Док.Дата = НачалоМесяца(ТекущаяДата()); 
СтрДок = Док.Товары.Добавить(); 
СтрДок.Количество = 1000; 
ЗначениеВДанныеФормы(Док,ДанныеФормы); 
КонецФункции 

&НаСервере 
Функция ВидОперацииДокумента () 
Возврат Перечисления.ВидыОперацийРеализацияТоваров.Товары; 
КонецФункции 

Показать

Поправьте если что не правильно, только разбираюсь с этим выносом мозга 8.3
31. Meson 04.10.16 11:49 Сейчас в теме
Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.РеализацияТоваровУслуг"));
Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();

В чем смысл этих двух строк?
egor123456; +1 Ответить
32. user657734_YGREEN 12.01.17 23:58 Сейчас в теме
Все просто:
&НаКлиенте
Процедура СоздатьЗаявку(Команда)
	ПараметрыФормы	= новый Структура("Основание, Объект.Ссылка);
	ОткрытьФорму("Документ.ЗаказМатериалов.Форма.ФормаДокумента", ПараметрыФормы);
КонецПроцедуры


а теперь на сервере при открытии действуем как обычно при создании документа на основании:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

// ДанныеЗаполнения - это основание переданное в параметрах формы.
ЗЫ: см. справку 1с: Интерфейс (управляемый)->УправляемаяФорма
TelsDevelopUser; altu71; asp-1c; rusakov1969; kotlyar; Pr0glam3r; San4ez; marku; Aston1924; apostal86; +10 Ответить
33. apostal86 237 11.02.17 10:17 Сейчас в теме
(32) спасибо, этот вариант мне подошел

35. LavinVadik 132 14.04.17 04:44 Сейчас в теме
вот еще один рабочий вариант,
взято от сюда http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=625538
&НаКлиенте
Процедура ОткрытьФормуНового(Команда)
 
               Форма = ПолучитьФорму("Документ.ПродажаТоваровУслуг.Форма.ФормаДокумента");
               ДанныеФормы = Форма.Объект;
               ЗаполнитьНаСервере(ДанныеФормы);
               КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
               Форма.Открыть();
 
КонецПроцедуры
 
&НаСервере
Процедура ЗаполнитьНаСервере(НовыйОбъект)
               НовыйОбъект.Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000005");          
КонецПроцедуры

Показать
36. bobster123456 01.06.17 13:21 Сейчас в теме
(35) если нужный (основной) реквизит формы называется не "Объект", то кирдык. Зашёл сюда как раз в поисках решения.
37. mukhina 29.06.17 13:04 Сейчас в теме
Большое спасибо! Очень помогло при решении задачи по переводу внешней обработки по созданию нового документа ПТУ с 8.2 на 8.3.
Пример для Бухгалтерии 3.0 вместо
Форма = ПолучитьФорму("Документ.НашДокумент.ФормаОбъекта");
надо
Форма = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары");
В этой форме есть реквизит Объект.
38. CratosX 108 10.07.17 13:27 Сейчас в теме
Для Расширения (тонкий клиент, клиент-сервер) помог такой код, взятый отсюда:

&НаКлиенте
Процедура ОткрытьФормуНового(Команда)

	Форма = ПолучитьФорму("Документ.ПродажаТоваровУслуг.Форма.ФормаДокумента");
	ДанныеФормы = Форма.Объект;

	ЗаполнитьНаСервере(ДанныеФормы);

	КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
	Форма.Открыть();

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере(НовыйОбъект)

	НовыйОбъект.Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000005");         

КонецПроцедуры
Показать
Mos; MishaG709; Euroset1; +3 Ответить
39. user789071 13.09.17 13:02 Сейчас в теме
40. SvetaS2014 08.10.17 15:37 Сейчас в теме
Добрый День!
возникла необходимость передачи данных на форму документа до момента его создания из другого документа. ИНТЕРФЕЙС ОБЫЧНЫЙ
есть две процедуры



Функция ЗаполнитьДокументНаСервере(ДанныеФормы,СтрокаТабличнойЧасти);

НовыйДокумент = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.Купюрник")); // Получаем объект из данных формы ИЛИ
Попытка

        НовыйДокумент= Документы.Купюрник.СоздатьДокумент();

// Заполняем реквизиты объекта или другие действия ********
		НовыйДокумент.Сумма_необходимая         =  СтрокаТабличнойЧасти.Сумма;
        НовыйДокумент.Дата               = ТекущаяДата();
Запрос=новый Запрос;    	
	
Запрос.Текст = 
"ВЫБРАТЬ
|      Номиналы_валют.Ссылка,
|      Номиналы_валют.Число
|ИЗ
|      Справочник.Номиналы_валют КАК Номиналы_валют";



Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() цикл
НоваяСтрока =  НовыйДокумент.Купюры.Добавить();
НоваяСтрока.Номинал =Результат.Ссылка;
НоваяСтрока.СтоимостьКупюры = Результат.Число;
НоваяСтрока.Пачек =1;
НоваяСтрока.ШтукКупюр=100;
Стоимость=НоваяСтрока.СтоимостьКупюры* НоваяСтрока.ШтукКупюр* НоваяСтрока.Пачек;
КонецЦикла;	
	

        НовыйДокумент.Записать();
        Сообщить("Документ  успешно создан");
		 
       ЗначениеВДанныеФормы(НовыйДокумент,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

     Исключение
        Сообщить("НЕ УДАЛОСЬ создать окумент" );
	КонецПопытки;	

КонецФункции

Процедура ОперацииКупюрыОткрытие(Элемент, СтандартнаяОбработка)
	    Форма = ПолучитьФорму("Документ.Купюрник.ФормаОбъекта");
		ДанныеФормы = Форма.ЭтаФорма.ДокументОбъект; // Получаем объект формы в переменную
		СтрокаТабличнойЧасти = ЭлементыФормы.Операции.ТекущиеДанные; 

		если пустаястрока(СтрокаТабличнойЧасти.Купюры)=Истина тогда 
		    ЗаполнитьДокументНаСервере(ДанныеФормы.этотобъект,СтрокаТабличнойЧасти); // Заполняем документ на сервере
           КопироватьДанныеФормы(ДанныеФормы.этотобъект, Форма.ЭтаФорма.ДокументОбъект.этотобъект); // копируем наш объект в объект формы и далее открываем ее
            Форма.Открыть(); 	
		конецесли;

КонецПроцедуры
Показать



ИСПОЛЬЗУЮ ТЕКСТ СТАТЬИ https://infostart.ru/public/118784/
НО У МЕНЯ ОБЫЧНЫЙ ИНТЕРФЕЙС
ПОЛУЧАЕМ ОШИБКУ НА СТРОКАХ
Код: [Выделить]
НовыйДокумент = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.Купюрник")); // Получаем объект из данных формы


Код: [Выделить]
   ЗначениеВДанныеФормы(НовыйДокумент,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

Код: [Выделить]
   КопироватьДанныеФормы(ДанныеФормы.этотобъект, Форма.ЭтаФорма.ДокументОбъект.этотобъект);


ОШИБКА "НЕСООТВЕТСТВИЕ ТИПОВ, ХОТЯ В ОТЛАДЧИКЕ ВСЕ СОВПАДАЕТ "
Цитировать
{Документ.Касса.Форма.ФормаДокумента.Форма(529)}: Ошибка при вызове метода контекста (ДанныеФормыВЗначение)
НовыйДокумент = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.Купюрник")); // Получаем объект из данных формы ИЛИ
по причине:
Несоответствие типов (параметр номер '1')


ПРИЧЕМ НА ВСЕХ ТРЕХ СТРОКАХ.
как исправить?
44. Xershi 1020 24.12.17 21:08 Сейчас в теме
(40) вам не нужны танцы с бубном. Получайте новую ссылку о чем автор писал ранее! Это все для УФ нужно!
43. rutadmeen 66 24.12.17 20:24 Сейчас в теме
Действительно работает. Спасибо!
45. micha26 10.04.18 14:24 Сейчас в теме
ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере

Если я правильно понимаю - НаКлиенте будет ругаться на отсутствие переменной ДанныеФормы.
47. micha26 10.04.18 15:24 Сейчас в теме
(45)а нет, это я ступил. Не будет ругаться.
46. user623969_dusa 10.04.18 14:29 Сейчас в теме
все равно идет обращение к серверу так почему сразу не предложить записать объект если надо открыть его форму как рекомендуется в универсальном решении, выигрыша нет - данные формы туда сюда гоняются если документ будет записываться еще раз на сервер полетят данные формы
можно использовать директиву НаСервере и не передавать параметром)
52. hydro2588_2015 13 14.06.19 19:40 Сейчас в теме
Может кому пригодится. Пункт 2. ОткрытьЗначение(Ссылка). У меня не работало в web (хотя справка говорила что все должно быть норм, ругалось на модальность окна), версия платформы 8.12. ОткрытьФорму() отработало как надо. Открывал документ ЗаказКлиента.
53. olbir 31.10.19 15:04 Сейчас в теме
54. user1053017 20.12.19 04:28 Сейчас в теме
55. Hans 1 20.12.19 09:59 Сейчас в теме
Все способы кривые и не универсальные, особенно для типовых. ПриСозданииНаСервере срабатывает раньше, чем вы заполняете форму. Поэтому все служебные реквизиты формы - Итоги документа и др, не расчитываются.
56. Hans 1 20.12.19 10:23 Сейчас в теме

&НаКлиенте
Процедура СоздатьОткрытьДокументРеализации(АдресХранилища)
	
	Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта");

	ОбъектФормы = Форма.Объект;
    ЗаполнитьРеализациюНаСервере(ОбъектФормы, АдресХранилища);
	КопироватьДанныеФормы(ОбъектФормы, Форма.Объект);
       // Не экспортная процедура
	Форма.ПриЧтенииСозданииНаСервере();
    Форма.Открыть();
		
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьРеализациюНаСервере(ОбъектФормы, АдресХранилища)
	
	ТаблицаУслуг = ПолучитьИзВременногоХранилища(АдресХранилища);
	ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
	
	ДокументОбъект = ДанныеФормыВЗначение(ОбъектФормы, Тип("ДокументОбъект.РеализацияТоваровУслуг"));
	
	ДокументОбъект.Дата = Объект.КонецПериода;
	//.......
	ДокументОбъект.ЗаполнитьУсловияПродажПоУмолчанию();
        //...........

       ЗначениеВДанныеФормы(ДокументОбъект, ОбъектФормы);

КонецПроцедуры

Показать


Оказывается можно вызывать из вне, процедуры формы, которые не экспортные. Разрыв шаблона.
63. soulner 165 23.07.20 10:23 Сейчас в теме
Хорошая статья, но есть дополнение у меня.
1. хорошо бы менять признак модифицированности формы после заполнения объекта;
2. процедура ПолучитьФорму вызывает событие ПриСозданииНаСервере, а оно отрабатывает по пустому объекту, да объект формы потом заполняется, но отображение формы может быть некорректным.
64. getnight 43 10.09.20 09:19 Сейчас в теме
Очень понравился тип Стурктура оператора Новый. Можно ссылку на описание?)

//1.
ОткрытьФорму("Документ.НашДокумент.Егоформа", Новый Стурктура("Ключ", СсылкаОбъекта)); // Через параметры мы передаем ссылку документа
Оставьте свое сообщение

См. также

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    37301    unichkin    74    

Открытие управляемой формы 1С 8.3 с измененным несохраненным объектом

Практика программирования v8::УФ 1cv8.cf Бесплатно (free)

Как загрузить в управляемую форму программно изменённый несохранённый документ (или элемент справочника).

13.07.2020    3001    plainer    11    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    25998    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    23330    John_d    22    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    30172    tormozit    100    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    17877    kuzyara    33    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    16920    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    8315    Sibars    19    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    77930    tormozit    131    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    32828    Yashazz    50    

О программе Postman для тестирования API и для чего она нужна 1С-нику

Практика программирования Программное обеспечение (software) v8 Бесплатно (free)

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    11709    budidich    28    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    49115    rpgshnik    63    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    48304    tormozit    41    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    48861    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    28106    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    25396    YPermitin    80    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    44713    tormozit    74    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    31279    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    80825    ids79    49    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    34851    avalakh    22    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16034    m-rv    2    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    23549    json    13    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    58886    ids79    11    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    35592    ids79    27    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    20212    m-rv    17    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    25935    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    19598    SeiOkami    50    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    45996    ids79    17    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    30546    m-rv    21    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    52102    ids79    25    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    24920    dmurk    145    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    42705    YPermitin    30    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    28225    itriot11    34    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    35247    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    27338    ellavs    89    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    31259    YPermitin    53    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    76296    Serginio    108    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    38915    Смешной 1С    28    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    21878    Vladimir Litvinenko    27    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    34632    ids79    40    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    39245    ids79    9    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    29199    grumagargler    28    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    26750    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    41327    ids79    72    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    36902    ids79    42    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

Практика программирования v8 Бесплатно (free)

По роду своей деятельности, мне часто приходится обсуждать с программистами детали реализации той или иной функциональности. Очень часто, разговаривая даже с квалифицированными специалистами я сталкиваюсь с незнанием сути платформенной функциональности Повторного использования возвращаемых значений общих модулей. В данной статье я постараюсь дать краткий обзор и основные особенности этой функциональности.

04.09.2017    52590    m-rv    61    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Публикация представляет из себя краткие примеры того, как можно заполнять параметры СКД программно так, чтобы все параметры и отборы были доступны в быстрых настройках и в обычных (типовых) настройках параметров и отборов СКД.

13.11.2018    47192    Unk92    25