Безудержный танец с бубном или «Как открыть форму незаписанного документа в управляемом приложении»

Вы уже начали работать с управляемым приложением?
А вам уже доводилось открывать форму незаписанного документа (справочника)?
Когда пользователь должен сам принять решение о необходимости его записи.
То, что было просто в обычных формах — превратилось в забавную камасутру в управляемом интерфейсе.

Как легко и по шагам решить поставленную задачу — вы узнаете в данной публикации.

Во первых: Почему так сложно?

Причина в том, что в обычном приложении и объект и форма живут вместе на протяжении всей жизни формы.

На управляемых формах все несколько иначе. Объект и форма живут совместно совсем непродолжительное время. Например в обработчике «При чтении на сервере». Но данный обработчик вызывается только при открытии уже записанного объекта (далее — документа).

Более подробно «Разработка управляемого интерфейса» В.А.Ажеронок, А.В. Островерх, М.Г.Радченко, Е.Ю.Хрусталева, гл. 3.8 стр. 404

 

Может возникнуть желание воспользоваться методами Глобального контекста

ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>)
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>)

Но, все же, это не наш случай. Вторым параметром необходимо передавать ссылку, а ее то у нас и нет (объект еще не записан в базу данных).

Поэтому, было найдено следующее решение.

 

План наступления: 

1. НА КЛИЕНТЕ:

1.1 Создаем форму нового документа (метод гл. контекста «ПолучитьФорму»)

1. 2 Получаем объект новой формы — это пока лишь основной объект формы (представляет собой универсальную коллекцию).

2. НА СЕРВЕРЕ:

2.1 Вспомогательные действия (не обязательные). Получаем данные для заполнения нового документа.

2.2 Получим документ — объект. Это именно объект информационной базы (Тип — Документ объект)

2.3 Вызовем обработчик заполнения нового документа (ОбработкаЗаполнения)

2.4 Производим обратное преобразование: документ объект — в основной объект формы (универсальную коллекцию)

3. НА КЛИЕНТЕ:

3.1 Теперь в контексте клиента имеем две коллекции основного реквизита:

одна — созданная при создании формы (пока пустая)

вторая — та, которую заполняли на сервере (ее и требуется отобразить)

Поэтому, теперь необходимо подменить основной реквизит созданной на шаге 1.1 формы на заполненный нами (на шаге 2.3). Простое присвоение значения не пройдет. Необхоидимо перезаполнить коллекцию. Удобнее это выполнить с помощью специального метода глобального контекста КопироватьДанныеФормы(<Источник>, <Приемник>)

3.1 Открываем подготовленную форму.


Собственно решение

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

    // 1.1
    // Получаем форму нового подчиненного документа
   
ФормаПодчиненного = ПолучитьФорму(«Документ.ПеревыставлениеТоваровУслуг.ФормаОбъекта»);

    // 1.2
    // Получим объект формы — это Новый — создаваемый объект
   
ОбъектФормы = ФормаПодчиненного.Объект;

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

    // 3.1
    // В ранее созданной форме нового документа переопределим объект — документ (подменим его на заполненный документ)
   
КопироватьДанныеФормы(ОбъектФормы, ФормаПодчиненного.Объект);

    // 3.2
   
ФормаПодчиненного.Модифицированность = Истина; // Чтобы выдавалось сообщение при попытке закрыть документ без сохранения
   
ФормаПодчиненного.Открыть();

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

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

    // 2.1
    // Подготовим данные для заполнения нового документа
   
ДанныеДляЗаполнения = Документы.ПоступлениеПеревыставляемыхТоваровУслуг.ПолучитьСтруктуруДанныхЗаполнения();

    // 2.2
    // Получим документ-объект (для дальнейшего заполнения)
   
ДокументОбъект = ДанныеФормыВЗначение(ОбъектФормы, Тип(«ДокументОбъект.ПеревыставлениеТоваровУслуг»));

    // 2.3
    // Вызовем процедуру обработки заполнения
   
ДокументОбъект.Заполнить(ПараметрыОтбораПеревыставления);

    // 2.4
    // Преобразуем прикладной объект — в объект формы (коллекцию)
   
ЗначениеВДанныеФормы(ДокументОбъект, ОбъектФормы);

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


Резюме:

Вот собственно и все. Для любителей пофлудить — очередная тема поупрожняться в собственном величии. ))) Если кому помог советом — очень рад. У кого возникнут вопросы по существу — обращайтесь, обсудим.

51 Comments

  1. Поручик

    (0) Делаю первый вброс на вентилятор.

    Проснулся, всё уже украдено до вас.

    Примеры использования:

    http://infostart.ru/public/141777/

    http://infostart.ru/public/83963/

    http://infostart.ru/public/83248/

    Reply
  2. director04

    (1) Поручик, Спасибо за инфу, когда нужно было — не нашел ))))

    Хотя, по вашему описанию ни как невозможно понять, что вы описываете метод открытия НЕ записанного элемента справочника или документа.

    Да и кодов процедур я там не нашел. ))))

    Reply
  3. Поручик

    (2) И ещё вброс: в параметры формы можно передать структуру ЗначенияЗаполнения.

    Reply
  4. Поручик

    (2) Как же ты их искал, если ни один файл не скачан? Там как раз используется связка ПолучитьФорму — КопироватьДанныеФормы

    Reply
  5. akomar

    Использование конструкции ФормаПодчиненного.Открыть(); в управляемом приложении признак плохого тона. Используйте функцию ОткрытьФорму, или ОткрытьФормуМодально.

    Reply
  6. director04

    (4) Поручик, только на ИС сотни тысяч отчетов и разработок. Если каждую скачивать и анализировать код на предмет «а нет ли там открытия незаписанного документа»… сколько на это уйдет времени? )))

    Добавь соответствующее описание в свои работы и тема оживет.

    Видно потому и не нашел. А когда нарисовал сам, то появилось желание поделиться с сообществом. Может кому окажется полезным

    Reply
  7. director04

    (5) akomar,

    Использование конструкции ФормаПодчиненного.Открыть(); в управляемом приложении признак плохого тона. Используйте функцию ОткрытьФорму, или ОткрытьФормуМодально.

    Да, конечно, именно так и сделал бы. Но, дело в том, что форму сперва необходимо подготовить. А затем уже открыть.

    Поэтому, сперва делается «лишний» серверный вызов «ПолучитьФорму»…. а после заполнения — уже Форма.Открыть().

    Если «тон плохой» — сори за грубость )))

    Reply
  8. akomar

    В процедуру ОткрытьФорму можно передать уже подготовленную форму, так ведь и написано в синтаксис-помощнику 🙂

    Reply
  9. akomar

    Синтаксис:

    ОткрытьФорму(<Форма>, <Окно>)

    Параметры:

    <Форма> (обязательный)

    Тип: Форма; УправляемаяФорма.

    Форма или управляемая форма. В режиме тонкого и веб-клиентов только управляемая форма.

    <Окно> (необязательный)

    Тип: ОкноКлиентскогоПриложения; ВариантОткрытияОкна.

    Окно приложения, в котором будет открыта форма.

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

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

    Reply
  10. w-divin

    (10) Поручик,

    а мине низнаком арфаграфичиский славарь.

    А человеку за статью спасибо.

    поиск по инфостарту, к величайшему вашему сожалению, ни одну из представленных вами ссылок не показывает…

    http://infostart.ru/catalog/?q=%EE%F2%EA%F0%FB%F2%FC+%F4%EE%F0%EC%F3+%ED%E5%E7%E0%EF%E8%F­1%E0%ED%ED%EE%E3%EE+%E4%EE%EA%F3%EC%E5%ED%F2%E0&sa=%CD%E0%E9­%F2%E8

    посему пост (1) получается вообще не в тему…

    Reply
  11. director04

    (10) Поручик,

    Вы же написали: тема поупрожняться в собственном величии. Я и поупрАжнялся.

    А ещё поищите и почитайте орфографический словарь.

    Спасибо, поправлю. )))))

    Флудите сколько угодно — когда с позитивом — ни грамма не жаль )))

    ps: А с «великим и могучим» у меня всю жизнь нелады…. )))

    Reply
  12. Новиков

    Велосипед страшный. Посмотрите ж тестовую БСП наконец!

    Reply
  13. director04

    (13) Новиков,

    Велосипед страшный. Посмотрите ж тестовую БСП наконец!

    .

    А вы выложите здесь кусок кода из БСП. Кому то да пригодится…

    Главное не забудьте структурировать его потолковее и сопроводить пояснениями. Я первый скажу вам спасибо.

    Reply
  14. awk

    (14) А вы почитайте перед плясками методички, тогда и бубен не потребуется.

    Вариант 1:

    ОткрытьФорму(<ИмяФормы>, Новый Структура(«… , ЗначениеЗаполнения», … , Новый Структура(…)))

    Вариант 2:

    Форма = ПолучитьФорму(…);

    Форма.ЗаполнитьОбъектПо(…);

    Форма.Открыть();

    Reply
  15. director04

    (15) awk,

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

    Вариант 1:

    ОткрытьФорму(<ИмяФормы>, Новый Структура(«… , ЗначениеЗаполнения», … , Новый Структура(…)))

    Вариант 2:

    Форма = ПолучитьФорму(…);

    Форма.ЗаполнитьОбъектПо(…);

    Форма.Открыть();

    Спасибо за конструктив и снисходительность к начинающему. ))) Конечно методички почитал, и не одну (см. публикацию, там есть ссылка).

    Но, был бы рад, если бы помогли разобраться:

    1. Варинат-1 -как вызвать обработчик заполнения?

    2. Вариант-2 — ни как не могу у формы найти метод «ЗаполнитьОбъектПо(…)». Помогите плиз разобраться.

    Хотя, по своему подходу Вариант-2 практически полностью повторяет мой подход к решению задачи. Разве только начинающему будет трудно разобраться как и что сделать. Допустим «для чего предназначен метод «КопироватьДанныеФормы»».

    Reply
  16. Новиков

    (14) прелесть БСП в том, что подобные «танцы с бубном» как у вас (без осуждения :)) от нас скрыты многокилометровыми обвязами. От вас же нужно знание, какой тип команды указать при решении подобной функциональности. Поэтому, мой совет взглянуть в типовую, в силе. Кусок кода с радостью бы выдрал, но не вижу в этом никакого смысла, хотя бы потому что оный голый, вероятно всего будет требовать какого-то вдумчивого осмысления 🙂

    Reply
  17. awk

    (16)

    В варианте 1:

    Если передается параметр форме «ЗначениеЗаполнения» или «ЗначенияЗаполнения» (точно не помню я или е). То обработчик заполнения будет вызван автоматически.

    В варианте 2:

    Ну нет, так создай — «Процедура ЗаполнитьОбъектПо(…) Экспорт». Данный вариант (как написано в методичке) используется при сложных алгоритмах заполнения реквизитов формы.

    Reply
  18. vandalsvq

    А что фраза «кури ЖКК» вышла из моды? Автору я бы посоветовал внимательнее читать мануалы. Тогда и танцевать с бубном не придется.

    Reply
  19. director04

    Да ладно, ребята, главное ногами не пинайте…. ))))

    Reply
  20. kser87

    Радченко, Хрусталева. Разработка управляемого интерфейса. Страница 368. Отрытие формы нового объекта

    ОткрытьФорму(«Справочник.Товары.Форма»);

    Можно передать данные заполнения например:

    Параметры = Новый Структура;

    Параметры.Вставить(«ЭтоГруппа», Истина);

    ОткрытьФорму(«Справочник.Товары.Форма», Параметры);

    Если обработка заполнения сложная, то нужно сделать так:

    Параметры = Новый Структура;

    … заполняем параметры

    ОткрытьФорму(«Справочник.Товары.Форма», Параметры);

    Далее в модуле объекта, в процедуре ОбработкаЗаполнения пишем

    СтандартнаяОбработка = Ложь;

    В той же процедуре есть параметр «ДанныеЗаполнения», в котором доступно все, что было указано в структуре «Параметры» метода «ОткрытьФорму».

    И только так. Метод «ПолучитьФорму» в этом случае использовать нельзя. Не поленитесь сделать замер производительности и сравнить затраченное время на «ПолучитьФорму» и «ОтрытьФорму».

    Reply
  21. director04

    (21) kser87, Спасибо за конструктивное предложение, но:

    Если обработка заполнения сложная, то нужно сделать так:

    Параметры = Новый Структура;

    … заполняем параметры

    ОткрытьФорму(«Справочник.Товары.Форма», Параметры);

    Далее в модуле объекта, в процедуре ОбработкаЗаполнения пишем

    СтандартнаяОбработка = Ложь;

    В той же процедуре есть параметр «ДанныеЗаполнения», в котором доступно все, что было указано в структуре «Параметры» метода «ОткрытьФорму».

    Так и пытался сделать,но: в обработчике «Обработка заполнения» данные параметры не доступны через «ДанныеЗаполнения»

    Данная структура будет доступна только лишь в модуле формы в обработчике «ПриСозданииНаСервере». Можно конечно использовать это как вариант. Спасибо за позитив и за подсказку.

    Reply
  22. kser87

    (22) при открытии именно нового объекта должны быть доступны. Смотрите внимательнее.

    В принципе в обработчике «ПриСозданииНаСервере» желтая книжка допускает их использование для описанных целей. Но мне кажется, что лучше впихнуть все-таки в обработку заполнения. Эта же обработка используется при вызове метода «Заполнить» объекта и при создании на основании. Т.е. это повторное использование кода: меньше работы, ошибок и все такое)

    Reply
  23. director04

    (23) kser87,

    В принципе в обработчике «ПриСозданииНаСервере» желтая книжка допускает их использование для описанных целей. Но мне кажется, что лучше впихнуть все-таки в обработку заполнения.

    Да, именно потому и пошел тем путем, который изложил в своей публикации (чтоб заполнение проводилось в подписке «ОбработкаЗаполнения»). Тупо передать через параметры не удалось.

    Так что напрасно вы «первый бросили в меня камень» ))))

    Reply
  24. kser87

    (24) при чем тут подписка?)) не понимаю, зачем делать заполнение в подписке?

    я имею в виду процедуру модуля объекта

    Reply
  25. director04

    Под словом «Подписка» я имел ввиду Событие «ОбработкаЗаполнения» (стр. 429 желтой книжки) 🙂

    То есть Подписка на событие «ОбработкаЗаполнения»…

    Если при программном открытии формы ОткрытьФорму(«…», ПроизвольнаяСтруктура»); в нее передать произвольную структуру, то в Событии «ОбработкаЗаполнения», данные заполнения приобретают значение «Неопределено».

    А вот в подписке «ПриСозданииНаСервере», данная структура попадает в параметры корректно. Но, все же хотелось бы заполнять ТЧ документов в процедуре «ОбработкаЗаполнения».

    Reply
  26. Rustig

    (0) плюс за открытие: «простые технологии разработки обычного приложения стали сложными в управляемом приложении» 🙂

    …сколько вас «всесторонне» знающих управляемое приложение? откликнетесь! 🙂

    …теперь без дебатов не решить простые задачки 🙁 …

    Reply
  27. kser87

    (27) Rustig, достаточно просто почитать справку и никаких дебатов не надо

    Reply
  28. director04

    (29) evg300183,

    Спасибо за обработку, очень полезная вещь, контора довольна!

    ))) Немного не в ту ветку, но все равно, приятно.

    Reply
  29. Ibrogim

    (30) Это спамер. Ему всё очень полезно.

    Reply
  30. KapasMordorov

    Спамер к спамеру зашел и запОстил кроха: «копипаст — хорошо, синтакспомощь — плохо».

    Reply
  31. kote

    Вы написали, что невозможно передать ссылку на объект, если объект незаписан.

    Но есть еще возможносность получения пустой ссылки любого объекта — почему её не использовали?

    Reply
  32. director04

    (33) kote,

    Но есть еще возможносность получения пустой ссылки любого объекта — почему её не использовали?

    Пробовал )))) При этом откроется пустой (незаполненный) документ.

    Reply
  33. webester

    Так и хочется стукнуть человека автора головой об… Гугл что бы не плодил велосипедов.

    Reply
  34. director04

    (35),

    Так и хочется стукнуть человека автора головой об… Гугл что бы не плодил велосипедов.

    Не заносись, Ромушка. Лучше посмотри со стороны на свои бездарные публикации с рейтингом в 0 и 2 балла….

    Reply
  35. webester
    Не заносись, Ромушка.

    Простите, то над чем вы так долго танцевали, решается одним запросом в гугл, на первой странице выдачи как минимум три ссылки решающие ваш вопрос, где я не прав про гугл? Дело в том, что я тоже не так давно решал этот вопрос, поэтому очень сильно удивился вашей эм…. самодеятельности что ли. Не обижайтесь пожалуйста 🙂 вы наверняка хороший специалист.

    посмотри со стороны на свои бездарные публикации

    В чем бездарность, можно подробностей?

    с рейтингом в 0 и 2 балла….

    Есть такое дело, согласен. Не сказать, что бы это меня сильно беспокоило. Нужен рейтинг, набросал статейку рейтинг 117 про то как импортировать 2 ключа в реестр. Но нравится сообществу такие статьи. О чем то простом, я не люблю такое писать, совести не хватает а на сложное… мозгов. Но сообществу интересны розовые сопли Про списки значений рейтинг(173) или про переключатели рейтинг 76 Не особо интересно про это писать. Когда хочется, что то написать, иногда что то пишу себе в бложек. Но что то последнее время и без него хватает писанины.

    Reply
  36. director04

    (37) webester,

    1. Почему «Ромушка» — хотя бы потому, что вести себя (хотя бы на форуме) стоит корректно. Тем более с человеком, у которого сын твой ровесник.

    2. Почему «бездарные» — так это не я оценил. А сообщество. Раз рейтинг в пределах 0-2. Видно ни кому они не нужны….

    3. Есть у вас одна публикация, которая оценена по достоинству интернет-сообществом. И, ни кто вас не обещал ударить головой об паркет, за то, что вы изобрели не только велосипед, но еще и велосипед с бородой.

    Сами знаете, что стартеров 1С на Инфостарте огромное множество.

    Людям понравилось, что вы в данной публикации имели свой взгляд на эту тему — и в этом вы молодец. Интернет от этого не опухнет и Гугля не перетрудится.

    Скажите, что же вас так раздосадовало, что я решил изложить свой взгляд на эту проблему? Или кому то от этого станет плохо? Поверьте, найдется еще много людей, которым поможет моя статья. (их уже, как минимум 35 человек).

    Не уподобляйтесь тем, кому главное повысить свою самооценку, раскритиковав работу другого человека.

    Пишите свои вещи. Берите хорошее у других. И учитесь на ошибках других.

    А «бить головой об….» — для этого ума много не надо ))))

    Reply
  37. webester
    1. Почему «Ромушка» — хотя бы потому, что вести себя (хотя бы на форуме) стоит корректно. Тем более с человеком, у которого сын твой ровесник.

    Я не спрашивал, почему Ромушка, я вполне понимаю почему 🙂 батхерт вас мучает уважемый вот и кривляетесь. И да абсолютно наплевать, с кем у вас сын ровесник. Мне вообще наплевать есть ли он у вас. Потому, что это не меняет ничего. Это интернет детка 🙂

    Почему «бездарные» — так это не я оценил

    Так я и спрашиваю в чем причина, просто плюнуть надо в ответ? Или есть что сказать по существу?

    А сообщество. Раз рейтинг в пределах 0-2. Видно ни кому они не нужны….

    да, так то 42 человека скачало 🙂 кому то понадобилось это конечно крохи, но сказать, что совсем никому не нужны.(честно сказать, я думал будет ну пару скачиваний).

    но еще и велосипед с бородой

    Так покажите такой или подобный? На инфостарте точно не было на момент написания статьи и намека на такой подход, в гугле нету и сейчас. Была свежая идея никем не реализованная почему мы бы не покурить ключи реестра, вечерком. Так что мимо, это как бы вообще не велик и тем более без бороды. Тоже не ожидал такого внимания. Банальная совершенно вещь.

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

    Не было никакого взгляда, это обсосаная с ног до головы диллема. Надо просто спросить. Все. Мне непонятно от чего вы так возбудились? От того, что ровесник вашего сына отправил вас в гугл в немного грубой форме? Приношу свои глубочайшие извинения вашей нежной и ранимой натуре(действительно, без сарказма, не ожидал обиды). Надо иметь ввиду, что это же инте… ну вы поняли, не буду повторяться.

    Reply
  38. director04

    (39) webester, 🙂 Трудный ребенок ))

    Reply
  39. slazzy

    (21) kser87, Товарищи, я понимаю, что я некропостер 🙂 но может быть это будет кому-то интересно. На самом деле вы всё верно описали за единственным исключением, данные нужно передать в вот таком виде

    ЗначенияЗаполнения = Новый Структура;
    /////// заполнение структуры
    ……………………….
    
    ПараметрыОткрытия = Новый Структура(«ЗначенияЗаполнения», ЗначенияЗаполнения);
    ОткрытьФорму(ИмяФормы, ПараметрыОткрытия)
    

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

    Reply
  40. director04

    (41) slazzy, да, спасибо. По теме….

    Reply
  41. aet

    Бубен еще пригодится, как решить аналогичную задачу для группы элемента?

    Reply
  42. Davlad_A

    director04, спасибо за ясный алгоритм действий и главное, за желание облегчить жизнь другим и поделиться опытом ! !

    Reply
  43. sokir

    Автор молодец. Да через ОтрытьФорму оно то правильнее, но как передать через параметры шапку и ТЧ? Клиент с таблицейзначений не дружит.

    Получается выхода другого нет. Если я ошибаюсь, то отпишите как передать ТЧ.

    Теоретически можно через ПоместитьВоВременноеХранилище, но думаю это будет дольше работать. А меня интересует более оптимальный вариант.

    Еще можно массив со структурой, но много лишнего кода надо писать. Наверно он будет быстрее, но не факт — там куча нетипизированных структур в массиве прийдется передать.

    Третьего вроде не дано платформой в упр формах.

    Пока вариант предложенный автором наверно более оптимален.

    И в кратце может ктото объяснить чем плохо ПолучитьФорму? Почему она дольше открывается?

    Reply
  44. Гость
    ОбъектФормы = ФормаПодчиненного.Объект;

    Это не работает. Пишет, что поле «Объект» не найдено.

    Reply
  45. sergoqwe

    (47) Гость,

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

    Показать

    Поправьте если что не правильно, только разбираюсь с этим выносом мозга 8.3

    Reply
  46. logarifm

    {ВнешняяОбработка.ЗагрузкаПоступленийИзЭксель.Форма.Форма.Форма(173)}: Поле объекта не обнаружено (Объект)

    ОбъектФормы = ФормаПоступления.Объект;

    Такси тонкий клиент код не рабочий!

    ФормаПоступления = ПолучитьФорму(«Документ.ПоступлениеТоваровУслуг.ФормаОбъекта»);

    ОбъектФормы = ФормаПоступления.Объект;

    Ребята как оказалось в Бух 3.0 ФормаОбъекта не имеет значения Объект

    Reply
  47. AndySuvernev
    Reply
  48. Gasilin
    Reply
  49. hame1e00n

    (41)

    ЗначенияЗаполнения = Новый Структура;

    /////// заполнение структуры

    ……………………….

    ПараметрыОткрытия = Новый Структура(«ЗначенияЗаполнения», ЗначенияЗаполнения);

    ОткрытьФорму(ИмяФормы, ПараметрыОткрытия)

    Я вот только не смог таким образом заполнить ТЧ нового документа.

    Для ТЧ не работает способ с использованием ЗначенияЗаполнения?

    У меня в исходном и конечном документе две табличных части «Товары»:

    ЗначенияЗаполнения = Новый Структура;
    
    ЗначенияЗаполнения.Вставить(«Организация», Объект.Организация);
    ЗначенияЗаполнения.Вставить(«Контрагент», Объект.Контрагент);
    
    МассивТовары = Новый Массив;
    Для Каждого ТекСтрока Из Объект.Товары Цикл
    СтрокаТовары = Новый Структура;
    СтрокаТовары.Вставить(«Номенклатура», ТекСтрока.Номенклатура);
    СтрокаТовары.Вставить(«Содержание», ТекСтрока.Содержание);
    СтрокаТовары.Вставить(«Количество», ТекСтрока.Количество);
    СтрокаТовары.Вставить(«Цена», ТекСтрока.Цена);
    СтрокаТовары.Вставить(«Сумма», ТекСтрока.Сумма);
    СтрокаТовары.Вставить(«СтавкаНДС», ТекСтрока.СтавкаНДС);
    СтрокаТовары.Вставить(«СуммаНДС», ТекСтрока.СуммаНДС);
    МассивТовары.Добавить(СтрокаТовары);
    КонецЦикла;
    ЗначенияЗаполнения.Вставить(«Товары», МассивТовары);
    
    ЗначенияЗаполнения.Вставить(«Товары», Объект.Товары);
    
    ПараметрыОткрытия = Новый Структура(«ЗначенияЗаполнения», ЗначенияЗаполнения);
    
    ОткрытьФорму(«Документ.СчетНаОплатуПокупателю.Форма.ФормаДокумента», ПараметрыОткрытия);

    Показать

    Так не работает… Вернее шапка заполняется, а табличная часть нет…

    Reply
  50. ol_2004@mail.ru

    (51) Благодарю

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *