|
1C 8.3 Создать документ, заполнить и открыть без записи | ☑ | ||
---|---|---|---|---|
0
keber
21.09.17
✎
14:05
|
Начинаю программировать на 8.3 после 7.7. Установили 1С 8.3 пока без сервера, файловая база используется. С 7.7 документ Заказ покупателя сохранён в mxl, в 8.3 нужно прочитать это и создать документ Заказ покупателя с данными из mxl.
Написал такой код: ДокОбъект.Дата = ТекущаяДата(); Для Строка_=19 По ТабДок.ВысотаТаблицы Цикл НоваяСтрок = ДокОбъект.Товары.Добавить(); НоваяСтрок.Количество = 10; НоваяСтрок.Цена = 55; КонецЦикла; Не получается далее открыть документ. Если делать так: ФормаДокумента = ПолучитьФорму("Документы.ЗаказПокупателя.ФормаОбъекта"); ФормаДокумента.Объект.Дата = ТекущаяДата(); Не получается заполнить документ, рругается на Объект, что Поле объекта не обнаружено (Объект). Как правильно сделать, чтобы создать документ, запонить и открыть без записи? |
|||
1
keber
21.09.17
✎
14:07
|
Пропущено случайно в самом начале кода
ДокОбъект = Документы.ЗаказПокупателя.СоздатьДокумент(); |
|||
2
Jokerman
21.09.17
✎
14:09
|
ДанныеЗаполнения = Новый Структура("Значение1,Значение2",Значение1,Значение2);
ОткрытьФорму("Документ.ЗаказПокупателя.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",ДанныеЗаполнения), Элемент); |
|||
3
Jokerman
21.09.17
✎
14:10
|
В обработку заполнения:
Если ТипЗнч(ДанныеЗаполнения)=Тип("Структура") Тогда ЗаполнитьЗначенияСвойств(ЭтотОбъект,ДанныеЗаполнения); КонецЕсли; |
|||
4
keber
21.09.17
✎
14:21
|
Если будет сто строк прочитано из файла mxl, то при создании ДанныеЗаполнения нужно будет двести значений цены и количества указать "Значение1,Значение2"? Числа я тут только для примера написал, а на самом деле они зачитываются в табличную часть ТабДок из файла и там много лишнего, потому что просто печатная форма от заказа в 7.7. Я циклом получаю нужные значения кода номенклатуры,их цены и количества. Как же через цикл заполнить либо строки документа или ДанныеЗаполнения для последующего заполнения?
|
|||
5
Jokerman
21.09.17
✎
14:23
|
(4) В данные заполнения что хочешь можешь кидать. в том числе и таблицу значений
|
|||
6
keber
21.09.17
✎
14:38
|
Сначала значит из ТабДок в таблицу значений ТЗ отобрать нужные - номенклатура, количество, цена и кинуть в данные. Табличная часть Товары содержит немало колонок. Можно ли создавать ТЗ лишь с колонками (номенклатура, цена, количество), подойдёт ли для заполнения?
И реквизиты документа как заполнить перед открытием? Дата, Поставщик, Получатель и т.д. |
|||
7
Jokerman
21.09.17
✎
14:53
|
(6) про реквизиты шапки я писал в (3), а зачем создавать тз лишь с колонками я не понял
|
|||
8
Вафель
21.09.17
✎
14:56
|
код из (0) вполне норм. возможно у тебя основной реквизит не Объект
|
|||
9
keber
21.09.17
✎
15:14
|
Где же тогда смотреть основной реквизит документа ЗаказПокупателя? Есть разные реквизиты у документа - Реквизиты (АдресДоставки, ВалютаДокумента, ...).
|
|||
10
Вафель
21.09.17
✎
15:15
|
жирным шрифтом в форме
|
|||
11
keber
21.09.17
✎
15:41
|
Спасибо, оказалось что реквизит называется ДокументОбъект.
Jokerman: "а зачем создавать тз лишь с колонками я не понял". Будут там и строки, заполню их значениями номенклатура из справочника (найдя по зачитанному коду в ТабДок), количества и цены. Другие колонки(реквизиты) в табличной части документ а не заполняю пока, так что будут эти три колонки в ТЗ. ТЗ собираюсь кинуть в структуру ДанныеЗаполнения. Как указать, чтобы заполнялись нужные колонки в табличной части документа из ТЗ с колонками Номенклатура, Цена и Количество? |
|||
12
keber
21.09.17
✎
16:49
|
Заработало, всем спасибо за помощь.
Форма_ = ПолучитьФорму("Документ.ЗаказПокупателя.ФормаОбъекта"); Форма_.ДокументОбъект.Дата = ТекущаяДата(); Для Строка_=19 По ТабДок.ВысотаТаблицы Цикл Код_ = СокрЛП(ТабДок.Область(Строка_,44).Текст); Если Код_ <>"" Тогда ЭлементСсылка = Справочники.Номенклатура.НайтиПоКоду(Код_); Если ЗначениеЗаполнено(ЭлементСсылка) Тогда НоваяСтрок = Форма_.ДокументОбъект.Товары.Добавить(); НоваяСтрок.Номенклатура = ЭлементСсылка; НоваяСтрок.Количество = 10; НоваяСтрок.Цена = 55; КонецЕсли; КонецЕсли КонецЦикла; Форма_.Открыть(); |
|||
13
Cyberhawk
21.09.17
✎
16:59
|
(12) Не делай так, делай как в (2)
https://its.1c.ru/db/v8std#content:2149184053:hdoc |
|||
14
Вафель
21.09.17
✎
17:06
|
(13) Это нужно конфу модифицировать
|
|||
15
Cyberhawk
21.09.17
✎
17:10
|
(14) А модуль объекта в расширении на 8.3.9 еще нельзя модифицировать?
|
|||
16
keber
21.09.17
✎
17:59
|
Нашёл в текстах конфы.
НовыйЗаказ = Документы.ЗаказПокупателя.СоздатьДокумент(); НовыйЗаказ.ПолучитьФорму().Открыть(); Заполнять через НовыйЗаказ.Товары.Добавить() нельзя? Что значит модифицировать конфу? |
|||
17
Вафель
21.09.17
✎
18:20
|
так у тебя ОФ?
|
|||
18
AlvlSpb
21.09.17
✎
19:44
|
(15) Можно, и модуль менеджера тоже можно
|
|||
19
keber
21.09.17
✎
22:32
|
ОФ - это имеется ввиду что база нп локальном компьютере (файловая)?
|
|||
20
jsmith82
21.09.17
✎
23:13
|
(19) Обычные, формы, йопт
Такое на уф не проканает (16) |
|||
21
jsmith82
21.09.17
✎
23:14
|
(16) Это значит, что в процедуре ОбработкаЗаполнения могет не быть кода, отвечающего за заполнение из переданной произвольной структуры
|
|||
22
jsmith82
21.09.17
✎
23:16
|
(2) выгоден только тогда, когда есть (21) и особо ухищряться не надо
В иных случаях всё правильно в (12), но |
|||
23
jsmith82
21.09.17
✎
23:24
|
Вот тебе юнивёрсал способ
|
|||
24
keber
21.09.17
✎
23:35
|
"Обычные, формы"
Ну да, вроде как обычная форма открылась форма заказа, практически как в 7.7 версии. Для ОФ одно катит, для УФ другое значит катит. После 7.7 всё просто непривычно. Первую обработку создал и код домучал таки до рабочего состояния. |
|||
25
jsmith82
21.09.17
✎
23:35
|
Хотя, похоже, не в тему. У тебя конфигурация какая? УТ 10.3 в итоге окажется.
|
|||
26
keber
21.09.17
✎
23:49
|
Управление производственным предприятием, редакция 1.3 (1.3.52.1)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |