Имя: Пароль:
1C
1С v8
открыть форму не записанного документа.
0 bublick_mag
 
22.12.19
19:09
Задача следующая.
я из одной базы подключаюсь путем ком соединения, для того чтобы в форму обработки вывести список всех документов.  Дальше я 2 раза щелкаю по любому документу и у меня открывается в новой форме обработки подробная информация по документу, в нем есть тч и реквизиты формы.
В форме с подробными данными есть, кнопка - создать документ по 1 номенклатуре. и вот тут проблема
Клиент хочет чтобы открывалась форма документа, она была внутри заполнена данными той номенклатуры,  по которой захотел сформировать документ, тч и реквизиты. И в свою очередь, хочет сам решать записать ему этот документ, провести, или вообще выйти и ничего не делать.

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

Я пробовал через ОткрытьЗначение(); - но потом сообразил, что документ нужно сначала записать, а потом сюда передать.
пробовал через получитьФорму - у меня в строчке КопироватьДанныеФормы(ДанныеФормы, ФормаОбъекта.Объект);  по отладчику данными внутри есть(реквизиты формы, и тч заполнена)
и когда наступает ФормаОбъекта.Открыть(); - то он открывает форму, но строчки тч пустые- у меня отображается 1 строчка(которая мне нужна) и она полностью пустая.
Случайно нажал на провести документ, данные тч появились.
Я в замешательстве, что как победить такого рода открытие формы ((
1 Garykom
 
гуру
22.12.19
19:18
Идеальный вариант решения это посоветовать клиенту другого программиста (выше уровнем) а самому отказаться от заказа, который вы не можете очевидно выполнить.
2 Garykom
 
гуру
22.12.19
19:20
И да, не надо использовать COMConnector для 8-ки это устаревший и кривой метод.

Особенно не для разового переноса данных в тепличных условиях на компе разработчика (это еще допустимо) а в продакшене на ресурсах клиентов, где может быть что угодно и как угодно.
3 bublick_mag
 
22.12.19
19:24
Передавать задание другому программисту, всегда можно, но хочется самому выполнить заказ, даже с помощью сообщества.
4 RomanYS
 
22.12.19
19:24
(0) Если все данные есть на клиенте, можно непосредственно изменять поля и ТЧ основного реквизита формы:
Форма = ОткрытьФорму(....);
Форма.Объект.Контрагент = ...;
СтрТЧ = Форма.Объект.Товары.Добавить();
СтрТЧ.Номенклатура =...;
5 bublick_mag
 
22.12.19
20:37
(4) метод клево работает на реквизиты формы, но элементы тч по какой-то неведанной причине, не отображаются >_<
6 palsergeich
 
22.12.19
20:47
(5) Потому содержаное ТЧ нужно из ком объектов переделать в объекты этой ИБ
7 bublick_mag
 
22.12.19
20:52
с ком объектами проблем ни каких.

Я будучи дома, сделал обычную обработку, где получаю список всех сотрудников в тч обработки, потом по кнопке, я самого первого сотрудника, хочу добавить в тч документа - табель . и открыть форму этого табеля.  Ситуация аналогичная.
К слову, могу через файлообменник, прикрепить свою домашнюю обработку с сотрудниками, может быть я где-то по тупому облажался, я уже хз что думать
8 acht
 
22.12.19
21:09
(7) > Я будучи дома
Вот с этого различия и начинаются.

А у клиентов внезапно коннектор не зарегистрирован, не той битности, не той версии и т.п. Причем на каждой машине что-то свое интересное и уникальное.
9 acht
 
22.12.19
21:13
Что насчет (6)?
10 bublick_mag
 
22.12.19
21:35
(9) от ком объектов  избавляюсь, и остаются только данные ИБ
11 RomanYS
 
22.12.19
21:40
(5) Значит на форме не ТЧ, а какая-то промежуточная таблицы формы. Типовая? Какой документ?
12 acht
 
22.12.19
22:32
А попробуй дернуть метод Обновить() у этой таблицы формы
13 Сияющий в темноте
 
22.12.19
22:58
кстати,еслм у вас ЗУП,то там стандартно,что на экране одно,а хранится это все по-другому.
вообще,надо начинать с того,что через ComConnector вообще форму документа не открыть,так как некому открывать.
тут или через Com вызывать Application,то есть нормальный сеанс к базе или внешнюю обработку запускать на той базе,в которой мы хотим что-то менять.

то,что многие считают Com устаревшей технологией,это не значит,что есть что-то лучше - все,так называемые,современные методы требуют дописывания чего-то в базу или публикации ее на web-сервере,что,на самом деле,сложнее,чем Com.
14 acht
 
22.12.19
23:11
(13) Судя по всему он просто получает какие-то исходные данные через COM. А потом пытается открыть локальную форму, набив ее локальными же данными, полученными по данным из COM-соединения

> ,что,на самом деле,сложнее,чем Com.
Угу. И внезпно дает ровно одну точку отказа - публикацию. Вместо граблей COM, тщательно разложенных на каждой машине. Ну про разные версии плтаформы уже стыдно напоминать...
15 bublick_mag
 
22.12.19
23:24
(13) все шаманю в ерп.
16 bublick_mag
 
22.12.19
23:24
(12) надо попробовать
17 Сияющий в темноте
 
23.12.19
09:07
(14) не только,грабли могут быть в настройке firewall и ip-маршрутизации.
просто,в этих реалях Com часто тоже не жилец.
Ошибка? Это не ошибка, это системная функция.