|
УТ 11.1 Программный ввод на основании документа "УстановкаЦенНоменклатуры" | ☑ | ||
---|---|---|---|---|
0
kn
30.10.15
✎
15:40
|
Приветствую, форумчане.
Как правильно программно на основании док ПоступлениеТиУ создать документ УстановкаЦенНоменклатуры? Делаю так &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Оповестить("Запись_ПоступлениеТоваровУслуг", ПараметрыЗаписи, Объект.Ссылка); МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи); //здесь создание УстановкиЦен НовыйДокумент = СоздатьУстановкуЦенНоменклатурыНаСервере(); Если ЗначениеЗаполнено(НовыйДокумент) Тогда ОткрытьФорму("Документ.УстановкаЦенНоменклатуры.ФормаОбъекта", Новый Структура("Основание", НовыйДокумент)); КонецЕсли; КонецПроцедуры &НаСервере Функция СоздатьУстановкуЦенНоменклатурыНаСервере() ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); Если ОбъектНаСервере.Проведен Тогда КодФормы = "УстановкаЦенНоменклатуры"; Дата = ОбъектНаСервере.Дата; НовДок = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); НомерВПределахДня = УстановкаЦенВызовСервера.РассчитатьНомерВПределахДня(Дата, НовДок.Ссылка); НовДок.Дата = УстановкаЦенКлиентСервер.РассчитатьДатуДокумента(Дата, НомерВПределахДня); ДанныеЗаполнения = ОбъектНаСервере.Ссылка; НовДок.Заполнить(ДанныеЗаполнения); флУспех = Истина; Попытка НовДок.Записать(); Исключение флУспех = Ложь; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Если флУспех Тогда Возврат НовДок.Ссылка; Иначе Возврат Неопределено; КонецЕсли; КонецЕсли; КонецФункции Но почему-то документ не заполняется, так понимаю табличная часть документа ВидыЦен не заполняется.Что не так в программном вводе на основании.Если интерактивно из документа ПоступлениеТиУ вводить на основании УстановкуЦенНоменклатуры, то все Ок, какой процедуры не хватает при программном вводе? Подскажите, кто знает. |
|||
1
VikingKosmo
30.10.15
✎
15:44
|
Ради интереса открой форму документа УстановкаЦенНоменклатуры, удивись как эта аццкая поделка работает. Закрой и больше никогда не ходи в этот адов документ.
|
|||
2
kn
30.10.15
✎
15:46
|
приходилось открывать, очень интересно что в Обработкезаполнения вызавается
Процедура ЗаполнитьПоПоступлениюТоваровУслуг( Знач ДокументОснование, ДанныеЗаполнения) // Заполним данные шапки документа. Запрос = Новый Запрос( "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, | ПоступлениеТоваровУслугТовары.Характеристика КАК Характеристика, | ПоступлениеТоваровУслугТовары.Упаковка КАК Упаковка, | ВидыЦен.Ссылка КАК ВидЦены, | 0 КАК Цена |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен | ПО (ВидыЦен.УстанавливатьЦенуПриВводеНаОсновании) | И (НЕ ВидыЦен.ПометкаУдаления) |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"); Запрос.УстановитьПараметр("Ссылка", ДокументОснование); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не требуется вводить установку цен номенклатуры на основании документа %1'"), ДокументОснование); ВызватьИсключение Текст; Иначе ЭтотОбъект.ДокументОснование = ДокументОснование; Товары.Загрузить(РезультатЗапроса.Выгрузить()); КонецЕсли; КонецПроцедуры И все... |
|||
3
VikingKosmo
30.10.15
✎
15:49
|
Видимо этого достаточно для интерактивного заполнения документа. Еще раз повторюсь, открой МодульФормыДокумента и проникнись процессом заполнения этого самого документа.
|
|||
4
kn
30.10.15
✎
15:50
|
как достаточно там даже цены 0!
|
|||
5
VikingKosmo
30.10.15
✎
15:51
|
(4) 1С так не считает...
|
|||
6
vantus
30.10.15
✎
15:53
|
(0) ДанныеЗаполнения = ОбъектНаСервере.Ссылка; в отладчике слева с права что?
|
|||
7
kn
30.10.15
✎
15:56
|
ДанныеЗаполнения - это просто временная переменная, думаю что там ссылка на док Поступление
|
|||
8
kn
30.10.15
✎
16:00
|
Видимо в процедуре ПриСозданииНаСервере происходит дальнейшее заполнение, может вот здесь
ДанныеДляРасчетаВычисляемыхЦенНаКлиенте = ЗаполнитьДокумент(); |
|||
9
FuriKuri
30.10.15
✎
16:09
|
Держи, может пригодится, я как то создавал док программно по нажатию кнопки. Это код из серверной процедуры:
НовыйДок = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); НовыйДок.Комментарий = Объект.Комментарий; НовыйДок.Ответственный = Объект.Ответственный; НовыйДок.Дата = ТекущаяДата(); НовыйДок.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован; Базовая = Справочники.ВидыЦен.НайтиПоНаименованию("Базовая"); НовыйТипЦен = НовыйДок.ВидыЦен.Добавить(); НовыйТипЦен.ВидЦены = Базовая; Рубли = Справочники.Валюты.НайтиПоКоду("643"); Для каждого стр из Объект.Товары цикл НоваяСтрока = НовыйДок.Товары.Добавить(); НоваяСтрока.Номенклатура = Стр.Номенклатура; НоваяСтрока.Характеристика = стр.Характеристика; НоваяСтрока.Цена = стр.БазоваяЦенаГруппы; НоваяСтрока.ВидЦены = Базовая; НоваяСтрока.ЦенаИзмененаВручную = Истина; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХарактеристикиНоменклатуры.Ссылка |ИЗ | Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры |ГДЕ | ХарактеристикиНоменклатуры.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", Стр.Номенклатура); Результат = Запрос.Выполнить().Выгрузить(); // добавим характеристики номенклатуры Для каждого строка из Результат цикл НоваяСтрока = НовыйДок.Товары.Добавить(); НоваяСтрока.Номенклатура = Стр.Номенклатура; НоваяСтрока.Характеристика = строка.Ссылка; НоваяСтрока.Цена = стр.БазоваяЦенаГруппы; НоваяСтрока.ВидЦены = Базовая; НоваяСтрока.ЦенаИзмененаВручную = Истина; КонецЦикла; КонецЦикла; Попытка НовыйДок.Записать(РежимЗаписиДокумента.Проведение); Сообщить("Документ - Установка цен номенклатуры успешно создан!"); Возврат НовыйДок.Ссылка; Исключение Сообщить("Не удалось записать документ установки цен: " + ОписаниеОшибки(), СтатусСообщения.Важное); КонецПопытки; |
|||
10
kn
30.10.15
✎
16:12
|
Спасибо, программно создавать было, загрузка из файла, тут же ввод на основании, там цены все зависимые должны рассчитываться вот в чем полезность.
|
|||
11
VikingKosmo
30.10.15
✎
16:15
|
(10) для того, что бы рассчитывались зависимые цены все же настоятельно рекомендую изучить процесс их расчета...
|
|||
12
kn
30.10.15
✎
16:24
|
т.е легких путей не искать?
|
|||
13
VikingKosmo
30.10.15
✎
16:26
|
в документе УстановкаЦенНоменклатуры? Пятнично!
|
|||
14
kn
30.10.15
✎
18:02
|
вверх
|
|||
15
kn
30.10.15
✎
19:17
|
Делюсь, нужно просто было открыть форму документа УстановкаЦенНоменклатуры, а в качестве Основания подставить ссылку на это Поступление.
&НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Оповестить("Запись_ПоступлениеТоваровУслуг", ПараметрыЗаписи, Объект.Ссылка); МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи); ОткрытьФорму("Документ.УстановкаЦенНоменклатуры.ФормаОбъекта", Новый Структура("Основание", ПолучитьСсылкуНаЭтотОбъект())); КонецПроцедуры &НаСервере Функция ПолучитьСсылкуНаЭтотОбъект() ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); Возврат ОбъектНаСервере.Ссылка; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |