|
Как програмно создать и заполнить документ на основании? | ☑ | ||
---|---|---|---|---|
0
avcherkasov
29.10.13
✎
16:38
|
Задача: при проведении поступления товаров и услуг на основании программно вводить документ установка цен номенклатуры.
Делаю так: НовыйДокУстановкаЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); НовыйДокУстановкаЦен.Заполнить(ЭтотОбъект.Ссылка); // Заполним реквизиты из стандартного набора по документу основанию. ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(НовыйДокУстановкаЦен, ЭтотОбъект.Ссылка); НовыйДокУстановкаЦен.Записать(РежимЗаписиДокумента.Проведение); В итоге документ создаётся пустой. Направте на путь истинный, пожалуйста. |
|||
1
Wobland
29.10.13
✎
16:40
|
отладчик, конечно, не предлагать?
|
|||
2
avcherkasov
29.10.13
✎
16:45
|
(1) )) Был я там, решения не нашёл.
|
|||
3
aka AMIGO
29.10.13
✎
16:49
|
||||
4
Maxus43
29.10.13
✎
16:49
|
в доке УстановкаЦенНоменклатуры в процедуре ОбработкаЗаполнения должно всё заполнятся, юзать дополнительные ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(НовыйДокУстановкаЦен, ЭтотОбъект.Ссылка);
поидее не надо |
|||
5
Wobland
29.10.13
✎
16:49
|
а ты верно думаешь, что от магического слова "заполнить" сразу что-то появится в ТЧ?
|
|||
6
avcherkasov
29.10.13
✎
16:55
|
(5) Это вопрос ко мне или к (4)?
|
|||
7
Wobland
29.10.13
✎
16:56
|
(6) к тебе. и ещё один: что такое пустой документ?
|
|||
8
palpetrovich
29.10.13
✎
16:59
|
имхается мне, что табличной части "типы цен" в доке "поступление товаров" нет, ее прийдется таки РукоКодом заполнять, ибо без нее ТЧ Номенклатура (или как там она зовется) - не заполнится
|
|||
9
avcherkasov
29.10.13
✎
17:02
|
(7) Я имел ввиду документ с пустой табличной частью.
(8) Нет типа цен там, меня интересует вопрос, когда я не программно нажимаю ввести на основании, то док открывается уже заполненным, значит ОюработкаЗаполнения срабатывает, почему она тогда не срабатывает при открытии программно? |
|||
10
Wobland
29.10.13
✎
17:04
|
надо как-то себя пересилить и открыть таки отладчик
|
|||
11
avcherkasov
29.10.13
✎
17:06
|
(5) Дело в том, что на днях писал обработку, где программно создавал один док на основании другого и он открывался уже с заполненной табличной частью. Вот пример:
НовыйДокПереоценка = Документы.ПереоценкаТоваровВРознице.СоздатьДокумент(); НовыйДокПереоценка.Заполнить(НовыйДок.Ссылка); НовыйДокПереоценка.Комментарий = "Записан программно"; НовыйДокПереоценка.Записать(РежимЗаписиДокумента.Проведение); В чем прикол с установкой цен? |
|||
12
Wobland
29.10.13
✎
17:06
|
(11) ну не умеет установка цен заполнять ТЧ по обработке заполнения. так уж она устроена
|
|||
13
palpetrovich
29.10.13
✎
17:08
|
(9) где "Нет типа цен там"?
(11) я таки пока не изменил своего мнения, ибо в Поступлении ТипЦены - это реквизит, а в УстановкеЦен - это ТЧ |
|||
14
Wobland
29.10.13
✎
17:10
|
(13) если это не ЗУП, конечно
|
|||
15
avcherkasov
29.10.13
✎
17:12
|
(12) Как не умеет, а это тогда для чего?ЗаполнитьТабличнуюЧастьПоПоступлениюНаОсновании(ПараметрОснование);
(14) УТП |
|||
16
Wobland
29.10.13
✎
17:13
|
(15) а про это слово речи не было
|
|||
17
avcherkasov
29.10.13
✎
17:18
|
Как мне этот параметр основание передавать перед открытием документа?
|
|||
18
Wobland
29.10.13
✎
17:20
|
(17) посмотреть, что там внутре ожидается от параметра, поразмыслить, применить результат работы
|
|||
19
Serg_1960
29.10.13
✎
17:26
|
Читаю и думаю: а какие именно цены устанавливать по поступления собирается ТС? Цены поставщика? :) Так ведь поставщик их уже установил :)) Тут разумно только зарегистрировать эти цены на основании поступления. Но это уже другой документ и другая тема.
"Бойтесь исполнения своих желаний"(с) |
|||
20
avcherkasov
29.10.13
✎
17:32
|
(18) ДокументСсылка там внутри.
(19) Нет не цены поставщика, их механизм мне понятен, а цены номенклатуры, которые в карточке товаров, а изменяет их документ Установка цен. Цены контрагентов мы не используем. |
|||
21
1Cv8_accepted
29.10.13
✎
17:32
|
(0) ОбработкаЗаполнения() не предлагать?
|
|||
22
avcherkasov
29.10.13
✎
17:35
|
(21) А поподробнее можно уточнить ход ваших мыслей?
|
|||
23
palpetrovich
29.10.13
✎
17:50
|
(22) посмотрел ЗаполнитьТабличнуюЧастьПоПоступлениюНаОсновании(ПараметрОснование); - не все так просто там, наверное надо или повторять фукционал или делать ее экспортной и вызывать
а если не хо, можно обойтись быдлокодом типа: НовыйДокУстановкаЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); НовыйДокУстановкаЦен.Заполнить(ПоступлениеТоваровУслуг); ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(НовыйДокУстановкаЦен, ПоступлениеТоваровУслуг); НовыйДокУстановкаЦен.Дата = ТекущаяДата(); НоваяСтрока = НовыйДокУстановкаЦен.ТипыЦен.Добавить(); НоваяСтрока.ТипЦен = ПоступлениеТоваровУслуг.ТипЦен.ТипЦеныНоменклатуры; Для КАЖДОГО СтрокаТовары ИЗ ПоступлениеТоваровУслуг.Товары Цикл НоваяСтрокаТов = НовыйДокУстановкаЦен.Товары.Добавить(); НоваяСтрокаТов.Номенклатура = СтрокаТовары.Номенклатура; НоваяСтрокаТов.ЕдиницаИзмерения = СтрокаТовары.ЕдиницаИзмерения; НоваяСтрокаТов.Цена = СтрокаТовары.Цена; НоваяСтрокаТов.ТипЦен = ПоступлениеТоваровУслуг.ТипЦен.ТипЦеныНоменклатуры; НоваяСтрокаТов.Валюта = ПоступлениеТоваровУслуг.ТипЦен.ВалютаЦены; КонецЦикла; Попытка НовыйДокУстановкаЦен.Записать(); Исключение КонецПопытки; :) |
|||
24
avcherkasov
29.10.13
✎
18:06
|
(23)Да в том то и дело, что она не экспортная.
Ваш код выполняет не все действия, дело в том, что в ТЧ документ Установка цен должны быть не только цена закупки (т.е базовая), но и пересчитываться все расчётные цены товара относительно этой цены. Не подскажите, как проще это реализовать или всю обработку заполнения переносить в документ поступления? |
|||
25
Михаил Козлов
29.10.13
✎
18:11
|
(24) В модуле документа установки цен посмотрите код в ОбработкаЗаполнения(Основание). В типовых есть заполнение ТЧ по ПТиУ.
|
|||
26
avcherkasov
29.10.13
✎
18:16
|
(25) Это всё что есть у меня:
Процедура ОбработкаЗаполнения(Основание) Если ТипЗнч(Основание) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда // Заполним реквизиты из стандартного набора по документу основанию. ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(ЭтотОбъект, Основание); КонецЕсли; КонецПроцедуры // ОбработкаЗаполнения() |
|||
27
Михаил Козлов
29.10.13
✎
18:47
|
Заполнение по ПТиУ делается в ПередОткрытием() формы.
Либо открывать форму (и сразу закрывать), либо перенести код заполнения из ЗаполнитьТабличнуюЧастьПоПоступлениюНаОсновании(ДокументПоступление,Перезаполнение=Ложь) |
|||
28
avcherkasov
29.10.13
✎
19:07
|
Весь код из ЗаполнитьТабличнуюЧастьПоПоступлениюНаОсновании(ДокументПоступление,Перезаполнение=Ложь) переносить как-то неудобно он с собой тянет ещё несколько процедур.
Открывать и закрывать, что вы под этим подразумеваете, не понял? |
|||
29
Михаил Козлов
29.10.13
✎
20:03
|
фрм = НовыйДокУстановкаЦен.ПолучитьФорму(...);
фрм.Открыть(); // может модально фрм.Закрыть(); Может быть можно фрм.ПередОткрытием(сюда параметр) и не открывать. |
|||
30
avcherkasov
30.10.13
✎
11:03
|
(29) Результата не дало.
|
|||
31
avcherkasov
01.11.13
✎
18:22
|
Продолжаем разговор... Док создаётся и заполняется.
Попытка мДок = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент().ПолучитьФорму("ФормаДокумента"); мДок.ПараметрОснование = Ссылка; мДок.Открыть(); мДок.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение); мДок.Закрыть(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Проблема в следующем, документ основание проводится текущей датой, а не датой документа поступления. Как это побороть? |
|||
32
Wobland
01.11.13
✎
18:25
|
(31) присвоить какую-нибудь другую дату? не, ты уже проверил. что же делать?..
|
|||
33
avcherkasov
01.11.13
✎
18:26
|
(32) Дело в том, что форма открыта
|
|||
34
Wobland
01.11.13
✎
18:53
|
(33) это плохо?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |