Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/75: Рейтинг темы: голосов - 75, средняя оценка - 4.77
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
1
1C 8.x

Создать документ, заполнить и открыть без записи

21.09.2017, 11:04. Показов 15382. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Начинаю программировать на 8.3 после 7.7. Установили 1С 8.3 пока без сервера, файловая база используется. С 7.7 документ Заказ покупателя сохранён в mxl, в 8.3 нужно прочитать это и создать документ Заказ покупателя с данными из mxl.
Написал такой код:
1C
1
2
3
4
5
6
7
ДокОбъект = Документы.ЗаказПокупателя.СоздатьДокумент();
ДокОбъект.Дата = ТекущаяДата();
Для Строка_=19 По ТабДок.ВысотаТаблицы Цикл
    НоваяСтрок = ДокОбъект.Товары.Добавить();
    НоваяСтрок.Количество = 10;
    НоваяСтрок.Цена = 55;
КонецЦикла;
Чтение файла в Табличную часть ТабДок опустил, также опустил заполнение строк из ТабДок, тут просто цифры указал. Далее не записываю, просто хочу форму документа Заказ покупателя с заполненными строками открыть для просмотра, правильно ли там всё заполнено. Никак не получается, пробовал разные варианты, выдаются ошибки. В формах есть ФормаДокумента, так понимаю, что его нужно открыть с табличной частью Товары. Но как это сделать правильно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2017, 11:04
Ответы с готовыми решениями:

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

Открыть по записи связаный документ
Я представляю информации во View из одного документа, а при открытии записи из View должен...

С помощью ActiveX открыть документ excel, заполнить определённые ячейки набором чисел и сохранить
хочу с помощью ActiveX открыть документ excel, заполнить определённые ячейки набором чисел и...

Создать и открыть документ програмно
Пишу следующее Док = СоздатьОбъект("Документ.Такой-то"); Док.Новый(); //Здесь нужно его открыть...

10
Эксперт 1С
3062 / 2009 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
21.09.2017, 11:09 2
Yupiter,
1C
1
2
3
4
5
6
7
8
ФормаДокумента = ПолучитьФорму("Документы.ЗаказПокупателя.ФормаДокумента");
ФормаДокумента.Объект.Дата = ТекущаяДата();
Для Строка_=19 По ТабДок.ВысотаТаблицы Цикл
    НоваяСтрок = ФормаДокумента.Объект.Товары.Добавить();
    НоваяСтрок.Количество = 10;
    НоваяСтрок.Цена = 55;
КонецЦикла;
ФормаДокумента.Открыть();
Добавлено через 52 секунды

Не по теме:

везде будет 10 и 55, да?) магические числа...

0
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
21.09.2017, 12:05  [ТС] 3
Цитата Сообщение от GreenkA Посмотреть сообщение
везде будет 10 и 55, да?) магические числа...
Это тут просто для примера, а на самом деле числа берутся из ТабДок, в который данные зачитаны из mxl файла.

Добавлено через 51 минуту
Чтобы записать документ , правильно ли будет так?
1C
1
ФормаДокумента.Объект.Записать()
0
Модератор
2163 / 831 / 242
Регистрация: 22.04.2013
Сообщений: 6,101
Записей в блоге: 1
21.09.2017, 12:26 4
на форме - поле.
а записывать надо не поле, а сам объект
так что скорее объект.записать. причём желательно указать способ записи - проводить/не_проводить
0
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
21.09.2017, 12:32  [ТС] 5
Получаю ошибку:
{ВнешняяОбработка.ПечатнуюФормуВЗаявкуПокупателя.Форма.Форма.Форма(20)}: Ошибка при вызове метода контекста (ПолучитьФорму)
Форма_ = ПолучитьФорму("Документы.ЗаказПокупателя.ФормаДокумента");
по причине:
Неизвестное имя формы. Имя: "Документы.ЗаказПокупателя.ФормаДокумента"

Странно, ведь структура такая в конфе:
Документы -> ЗаказПокупателя -> Формы (ФормаДокумента, ФормаСписка, ФормаВыбора, ...)
В начальном коде ведь не ругалась на табличную часть Товары. Почему на форму выдаёт ошибку?

Добавлено через 4 минуты
Цитата Сообщение от Yulunga Посмотреть сообщение
на форме - поле.
а записывать надо не поле, а сам объект
так что скорее объект.записать. причём желательно указать способ записи - проводить/не_проводить
Как получить объект для записи, если на форме не тот объект, который нужен? Правильно ли я понял?
0
Модератор
2163 / 831 / 242
Регистрация: 22.04.2013
Сообщений: 6,101
Записей в блоге: 1
21.09.2017, 12:38 6
Глобальный контекст.ДанныеФормыВЗначение (Global context.FormDataToValue)
Глобальный контекст (Global context)
ДанныеФормыВЗначение (FormDataToValue)
Синтаксис:
ДанныеФормыВЗначение(<Объект>, <Тип>)
Параметры:
<Объект> (обязательный)
Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура; ДанныеФормыДерево.
Данные формы.
<Тип> (обязательный)
Тип: Тип.
Тип значения, получаемого из данных формы.
Возвращаемое значение:
Тип: Произвольный.
Описание:
Преобразует данные формы в объект прикладного типа.
Доступность:
Сервер, толстый клиент, мобильное приложение(сервер).

я думаю что так, хотя почему у вас не тот объект, я не врубился (
0
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
21.09.2017, 13:17  [ТС] 7
Это что-то? Поставил для эксперимента "ФормаСписка", нет ошибки. Но ошибку соответственно получаю дальше:
{ВнешняяОбработка.ПечатнуюФормуВЗаявкуПокупателя.Форма.Форма.Форма(22)}: Поле объекта не обнаружено (Объект)
Форма_.Объект.Дата = ТекущаяДата();

Что может быть не так с формой "ФормаДокумента"? В конфигурации "ФормаДокумента" стоит первой в списке форм.

Добавлено через 7 минут
Может ли как то это быть связано с правами пользователя? Что форму нельзя получить при исполнении обработки?

Добавлено через 16 минут
Попытка номер 2, подставил "ФормаОбъекта" (правильно ли?)
1C
1
2
        Форма_ = ПолучитьФорму("Документ.ЗаказПокупателя.ФормаОбъекта");
        Форма_.Объект.Дата = ТекущаяДата();
Получаем такую ошибку:
{ВнешняяОбработка.ПечатнуюФормуВЗаявкуПокупателя.Форма.Форма.Форма(22)}: Поле объекта не обнаружено (Объект)
Форма_.Объект.Дата = ТекущаяДата();

Как же заполнять табличную часть после получения формы?
0
Модератор
2163 / 831 / 242
Регистрация: 22.04.2013
Сообщений: 6,101
Записей в блоге: 1
21.09.2017, 13:23 8
вот потому и написано в правилах форума :
5.16. Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
определяйтесь, что хотите, и задавайте разграниченно.
0
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
21.09.2017, 13:29  [ТС] 9
Вроде бы всё связано с названием темы "Создать документ, заполнить и открыть без записи". В начале получилось создать документ, но не получалось открыть для просмотра. Было предложено создание формы и его открытия, но попытки заполнить выдают ошибки. Что же не так с темой?
0
2734 / 1550 / 557
Регистрация: 16.01.2015
Сообщений: 6,640
21.09.2017, 14:31 10
Yupiter, Сначала Заполняете параметры формы
1C
1
2
3
4
5
6
7
8
9
10
ДатаДокумента = ТекущаяДата();
 
ПараметрыЗаполнения = Новый Структура;
 ПараметрыЗаполнения.Вставить("Дата", ДатаДокумента);
 
и т.д.
 ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ПараметрыЗаполнения);
 
МойДокумент =ПолучитьФорму("Документ.ЗаказПокупателя.ФормаДокумента");, ПараметрыФормы, ЭтаФорма);
МойДокумент.Открыть();
Далее в событии ОбработкаЗаполнения()
1C
1
2
3
4
5
6
7
8
9
10
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
   Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
      ДанныеЗаполнения.Свойство("Дата", ДатаДокумента);
   КонецЕсли; 
Для Строка_=19 По ТабДок.ВысотаТаблицы Цикл
    НоваяСтрок = Объект.Товары.Добавить();
    НоваяСтрок.Количество = 10;
    НоваяСтрок.Цена = 55;
КонецЦикла;
КонецПроцедуры
0
4 / 2 / 0
Регистрация: 20.04.2010
Сообщений: 130
21.09.2017, 16:45  [ТС] 11
Спасибо, будем пробовать.

Добавлено через 21 минуту
В ОбработкаЗаполнения() ДатаДокумента и Объект не определены.
Если ДатаДокумента можно определить вверху модуля как переменную, то откуда берём переменную объект?

Добавлено через 1 час 4 минуты

Основной реквизит оказалось называется ДокументОбъект.

Добавлено через 34 минуты
Получилось, всем спасибо за участие.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        Форма_ = ПолучитьФорму("Документ.ЗаказПокупателя.ФормаОбъекта");
        Форма_.ДокументОбъект.Дата = ТекущаяДата();
 
        Для Строка_=19 По ТабДок.ВысотаТаблицы Цикл
            Код_ = СокрЛП(ТабДок.Область(Строка_,44).Текст);
            Если Код_ <>"" Тогда
                ЭлементСсылка = Справочники.Номенклатура.НайтиПоКоду(Код_);
                Если ЗначениеЗаполнено(ЭлементСсылка) Тогда
                    НоваяСтрок = Форма_.ДокументОбъект.Товары.Добавить();
                    НоваяСтрок.Номенклатура = ЭлементСсылка;
                    НоваяСтрок.Количество = 10;
                    НоваяСтрок.Цена = 55;
                КонецЕсли;
            КонецЕсли
        КонецЦикла;
        Форма_.Открыть();
0
21.09.2017, 16:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2017, 16:45
Помогаю со студенческими работами здесь

открыть Word и создать новый документ
Ребят помогите написать скрипт, нужно чтобы скрипт автоматически запускал word(исполняемый файл...

Открыть документ doc в MS Word без указания корневого пути в форме
Открываю документ следующим образом: using System.Diagnostics; ...

Создать документ Word и заполнить его данными
помогите программно создать документ Word, вставить внего строку, а после строки вставить таблицу...

Нужно по выбору из списка в Listbox открыть html документ без тегов в webbrowser
Нужно по выбору из списка в Listbox открыть html документ без тегов в webbrowser .. Если можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru