Создание документа "Установка цен номенклатуры" на основании "Поступления от переработчика"
Всем здравствуйте!
В расширении добавил общую команду создания документа "Установка цен номенклатуры". Команда работает, форма документа открывается, заполняются необходимые реквизиты. Но ТЧ с номенклатурой и ценами не заполняется.
Вот код
Всяко уже пробовал, добавлял в заполнении ТЧ следующие строки:
Пока безуспешно. То есть, форма должна выглядеть вот так после выполнения команды (см. скрин прикреп.). Прошу помощи у более опытных специалистов
В расширении добавил общую команду создания документа "Установка цен номенклатуры". Команда работает, форма документа открывается, заполняются необходимые реквизиты. Но ТЧ с номенклатурой и ценами не заполняется.
Вот код
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ФормаУстановкаЦенНоменклатуры = ПолучитьФорму("Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента");
Если ФормаУстановкаЦенНоменклатуры.Открыта() Тогда
ФормаУстановкаЦенНоменклатуры.Открыть();
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура("Ключ", ПараметрКоманды);
ФормаПоступлениеОтПереработчика = ПолучитьФорму("Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента", ПараметрыФормы);
ОбъектПоступлениеОтПереработчика = ФормаПоступлениеОтПереработчика.Объект;
ДанныеФормы = ФормаУстановкаЦенНоменклатуры.Объект;
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("Дата", ТекущаяДата());
ДанныеЗаполнения.Вставить("Организация", ОбъектПоступлениеОтПереработчика.Организация);
ДанныеЗаполнения.Вставить("ДокументОснование", ОбъектПоступлениеОтПереработчика.Ссылка);
ЗаполнитьЗначенияСвойств(ДанныеФормы, ДанныеЗаполнения);
Для Каждого ВидЦены Из ФормаУстановкаЦенНоменклатуры.ВыбранныеЦены Цикл
Если НЕ ВидЦены.Ссылка = ОбъектПоступлениеОтПереработчика.ВидЦены Тогда
Продолжить;
КонецЕсли;
ВидЦены.Выбрана = Истина;
КонецЦикла;
ФормаУстановкаЦенНоменклатуры.Элементы.ГруппаСтраницы.ТекущаяСтраница = ФормаУстановкаЦенНоменклатуры.Элементы.ГруппаСтраницы.ПодчиненныеЭлементы.ГруппаУстановкаЦен;
Для Каждого Позиция Из ОбъектПоступлениеОтПереработчика.Товары Цикл
Стр = ДанныеФормы.Товары.Добавить();
Стр.Номенклатура = Позиция.Номенклатура;
Стр.ВидЦены = ОбъектПоступлениеОтПереработчика.ВидЦены;
Стр.Цена = Позиция.Цена;
КонецЦикла;
//ФормаУстановкаЦенНоменклатуры.Элементы.ДокументОснованиеНадпись.Заголовок = РаботаСФормойДокументаКлиентСервер.СформироватьНадписьДокументОснование(ОбъектПоступлениеОтПереработчика.Ссылка);
КопироватьДанныеФормы(ДанныеФормы, ФормаУстановкаЦенНоменклатуры.Объект);
ФормаУстановкаЦенНоменклатуры.Открыть();
КонецПроцедуры
ПоказатьВсяко уже пробовал, добавлял в заполнении ТЧ следующие строки:
ФормаУстановкаЦенНоменклатуры.Элементы.ГруппаУстановкаЦен.ПодчиненныеЭлементы.ГруппаУкажитеНоменклатуруУточнитеЦены.ПодчиненныеЭлементы.ДеревоЦен.ТекущийЭлемент = ФормаУстановкаЦенНоменклатуры.Элементы.ГруппаУстановкаЦен.ПодчиненныеЭлементы.ГруппаУкажитеНоменклатуруУточнитеЦены.ПодчиненныеЭлементы.ДеревоЦен.ПодчиненныеЭлементы[2];
ФормаУстановкаЦенНоменклатуры.Элементы.ГруппаУстановкаЦен.ПодчиненныеЭлементы.ГруппаУкажитеНоменклатуруУточнитеЦены.ПодчиненныеЭлементы.ДеревоЦен.ТекущаяСтрока = Стр.ПолучитьИдентификатор();
ФормаУстановкаЦенНоменклатуры.Элементы.ГруппаУстановкаЦен.ПодчиненныеЭлементы.ГруппаУкажитеНоменклатуруУточнитеЦены.ПодчиненныеЭлементы.ДеревоЦен.ДобавитьСтроку();
Пока безуспешно. То есть, форма должна выглядеть вот так после выполнения команды (см. скрин прикреп.). Прошу помощи у более опытных специалистов
Прикрепленные файлы:
По теме из базы знаний
- Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки
- 1С:Управление металлургическим комбинатом 2. Модуль для 1С:ERP
- ED Обмен УПП 1.3, КА 1.1, УТ 10.3 с EnterpriseData (универсальный формат обмена)
- Автотесты для типовых БП КОРП 3.0 и БП 3.0 (vanessa automation)
- Перенос данных из УПП в ERP 2.5 / КА 2 (Импорт ЕРП / КА), обработка переноса документов и справочной информации
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) Немного переделал, но пока безуспешно. Код вот такой получается
Это я по примеру из модуля объекта документа написал функцию. Как-то бы добраться до обработки заполнения или ещё чего. Так как документ не записан, ссылка на него пустая, ПолучитьОбъект() тоже не получается. Уже даже не знаю, что дальше пробовать
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормыПОП = Новый Структура("Ключ", ПараметрКоманды);
ФормаПоступлениеОтПереработчика = ПолучитьФорму("Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента", ПараметрыФормыПОП);
ОбъектПоступлениеОтПереработчика = ФормаПоступлениеОтПереработчика.Объект;
ФормаУстановкаЦенНоменклатуры = ПолучитьФорму("Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента");
ОбъектУстановкаЦенНоменклатуры = ФормаУстановкаЦенНоменклатуры.Объект;
Если ФормаУстановкаЦенНоменклатуры.Открыта() Тогда
ФормаУстановкаЦенНоменклатуры.Открыть();
Возврат;
КонецЕсли;
ДокУЦ = мит_ЗаполнитьДокумент(ОбъектПоступлениеОтПереработчика, ОбъектУстановкаЦенНоменклатуры);
ПараметрыФормыУЦ = Новый Структура("Ключ", ДокУЦ);
ФормаУстановкаЦенНоменклатуры = ПолучитьФорму("Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента", ПараметрыФормыУЦ);
ФормаУстановкаЦенНоменклатуры.Элементы.ГруппаСтраницы.ТекущаяСтраница = ФормаУстановкаЦенНоменклатуры.Элементы.ГруппаСтраницы.ПодчиненныеЭлементы.ГруппаУстановкаЦен;
КопироватьДанныеФормы(ОбъектУстановкаЦенНоменклатуры, ФормаУстановкаЦенНоменклатуры.Объект);
ФормаУстановкаЦенНоменклатуры.Открыть(ДокУЦ);
КонецПроцедуры
&НаСервере
Функция мит_ЗаполнитьДокумент(ДокПоступление, ДокУстановкаЦен)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидыЦен.Ссылка КАК Ссылка,
| ВидыЦен.УстанавливатьЦенуПриВводеНаОсновании КАК УстанавливатьЦенуПриВводеНаОсновании,
| ВидыЦен.ПометкаУдаления КАК ПометкаУдаления
|ПОМЕСТИТЬ ВидыЦен
|ИЗ
| Справочник.ВидыЦен КАК ВидыЦен
|ГДЕ
| ВидыЦен.УстанавливатьЦенуПриВводеНаОсновании
| И ВидыЦен.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДействияВидовЦен.Действует)
| И НЕ ВидыЦен.ПометкаУдаления
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ПоступлениеОтПереработчикаТовары.Номенклатура КАК Номенклатура,
| ПоступлениеОтПереработчикаТовары.Характеристика КАК Характеристика,
| ПоступлениеОтПереработчикаТовары.Упаковка КАК Упаковка,
| ВидыЦен.Ссылка КАК Ссылка,
| СУММА(0) КАК Цена
|ИЗ
| Документ.ПоступлениеОтПереработчика.Товары КАК ПоступлениеОтПереработчикаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ВидыЦен КАК ВидыЦен
| ПО ПоступлениеОтПереработчикаТовары.Ссылка.ВидЦены = ВидыЦен.Ссылка
|ГДЕ
| ПоступлениеОтПереработчикаТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеОтПереработчикаТовары.Номенклатура,
| ПоступлениеОтПереработчикаТовары.Характеристика,
| ПоступлениеОтПереработчикаТовары.Упаковка,
| ВидыЦен.Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокПоступление.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить установку цен номенклатуры на основании документа %1'"),
ДокПоступление);
ВызватьИсключение Текст;
Иначе
ДокУстановкаЦен.ДокументОснование = ДокПоступление.Ссылка;
ДокУстановкаЦен.Товары.Загрузить(РезультатЗапроса.Выгрузить());
КонецЕсли;
Возврат ДокУстановкаЦен;
КонецФункции
ПоказатьЭто я по примеру из модуля объекта документа написал функцию. Как-то бы добраться до обработки заполнения или ещё чего. Так как документ не записан, ссылка на него пустая, ПолучитьОбъект() тоже не получается. Уже даже не знаю, что дальше пробовать
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
СтруктураДанных = Новый Структура();
СтруктураДанных.Вставить("Основание", Основание);
СтруктураДанных.Вставить("ВводНаОсновании", Истина);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения" , СтруктураДанных);
ОткрытьФорму("ТвояФорма",
ПараметрыФормы);
КонецПроцедуры
ПоказатьДальше управление передается в модуль объекта в процедуру ОбработкаЗаполнения
Посмотри как реализовано заполнение УстановкиЦен на основании ПриходнойНакладной.
(7) Спасибо за подсказку. Написал вот такой код
В модуле общей команды
И добавил ещё процедуру заполнения по поступлению от переработчика
Падает теперь вот в такую ошибку (см. скрин). Она в процедуре "ЗагрузитьТоварыВДеревоЦен" в общем модуле "УстановкаЦенСервер" в строке:
В модуле общей команды
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормыПОП = Новый Структура("Ключ", ПараметрКоманды);
ФормаПоступлениеОтПереработчика = ПолучитьФорму("Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента", ПараметрыФормыПОП);
ОбъектПоступлениеОтПереработчика = ФормаПоступлениеОтПереработчика.Объект;
СтруктураДанных = Новый Структура();
СтруктураДанных.Вставить("Основание", ОбъектПоступлениеОтПереработчика.Ссылка);
СтруктураДанных.Вставить("ВидЦены", ОбъектПоступлениеОтПереработчика.ВидЦены);
СтруктураДанных.Вставить("ВводНаОсновании", Истина);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", СтруктураДанных);
ОткрытьФорму("Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента", ПараметрыФормы);
КонецПроцедуры
ПоказатьИ добавил ещё процедуру заполнения по поступлению от переработчика
&НаСервере
Процедура ЗаполнитьПоПоступлениюОтПереработчика(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидыЦен.Ссылка КАК Ссылка,
| ВидыЦен.УстанавливатьЦенуПриВводеНаОсновании КАК УстанавливатьЦенуПриВводеНаОсновании,
| ВидыЦен.ПометкаУдаления КАК ПометкаУдаления
|ПОМЕСТИТЬ ВидыЦен
|ИЗ
| Справочник.ВидыЦен КАК ВидыЦен
|ГДЕ
| ВидыЦен.Ссылка = &ВидЦены
| И НЕ ВидыЦен.ПометкаУдаления
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ПоступлениеОтПереработчикаТовары.Номенклатура КАК Номенклатура,
| ПоступлениеОтПереработчикаТовары.Характеристика КАК Характеристика,
| ПоступлениеОтПереработчикаТовары.Упаковка КАК Упаковка,
| ВидыЦен.Ссылка КАК ВидЦены,
| 0 КАК Цена
|ИЗ
| Документ.ПоступлениеОтПереработчика.Товары КАК ПоступлениеОтПереработчикаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ВидыЦен КАК ВидыЦен
| ПО (ИСТИНА)
|ГДЕ
| ПоступлениеОтПереработчикаТовары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.УстановитьПараметр("ВидЦены", ДанныеЗаполнения.ВидЦены);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить установку цен номенклатуры на основании документа %1'"),
ДокументОснование);
ВызватьИсключение Текст;
Иначе
ЭтотОбъект.ДокументОснование = ДокументОснование;
Товары.Загрузить(РезультатЗапроса.Выгрузить());
КонецЕсли;
КонецПроцедуры
ПоказатьПадает теперь вот в такую ошибку (см. скрин). Она в процедуре "ЗагрузитьТоварыВДеревоЦен" в общем модуле "УстановкаЦенСервер" в строке:
ЭлементНоменклатура[ ИмяКолонки] = ВыборкаНоменклатура.Цена;
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот