1. ulvi96 11.02.19 16:01 Сейчас в теме

1С Документи

Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. Пользователь может создать документ реализация товаров услуг через кнопку на основании в документе расходный ордер на товары. Код работает но в документа реализация не заполняется цена. Есть товары которые у них есть 3 или 4 тип цен.
Как исправится с этим? Полный код ниже
Чтобы заполняться колонка цена
Спасибо всем за ранее
Функция СоздатьТЗ()
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Номенклатура",,,);
	ТЗ.Колонки.Добавить("Количество",,,);
	ТЗ.Колонки.Добавить("ЕдиницаИзмерения",,,);
	ТЗ.Колонки.Добавить("Коэффициент",,,);
	ТЗ.Колонки.Добавить("СтавкаНДС",,,);
	ТЗ.Колонки.Добавить("ХарактеристикаНоменклатуры",,,);
	ТЗ.Колонки.Добавить("СерияНоменклатуры",,,);
	ТЗ.Колонки.Добавить("Качество",,,);
	ТЗ.Колонки.Добавить("Цена",,,);
	ТЗ.Колонки.Добавить("Сумма",,,);
	ТЗ.Колонки.Добавить("СуммаБезСкидок",,,);
КонецФункции

Функция ЗаполнитьТЗ(Ссылка)
	// Для номер строки 
		Стро = ЭлементыФормы.Товары.ТекущиеДанные;
	Для Строка = 1 ПО Стро.НомерСтроки Цикл 		
		Ст = ТЗ.Добавить();
		// Для заполнение ТЗ
		Стр = ЭлементыФормы.Товары.ТекущиеДанные;
		Ст.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Стр.Номенклатура);
		Ст.Количество = Стр.Количество;
		Ст.ЕдиницаИзмерения = Стр.ЕдиницаИзмерения;
		Ст.Коэффициент = Стр.Коэффициент;
		Ст.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
		Ст.ХарактеристикаНоменклатуры = Стр.ХарактеристикаНоменклатуры;
		Ст.СерияНоменклатуры = Стр.СерияНоменклатуры;
		Ст.Качество = Стр.Качество;
				Запрос = Новый Запрос;
				Запрос.Текст = "ВЫБРАТЬ
				|    РеализацияТоваровУслугТовары.Номенклатура,
				|    РеализацияТоваровУслугТовары.Ссылка.ТипЦен КАК ТипЦен,
				|    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
				|ИЗ
				|    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
				|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
				|        ПО РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
				|            И РеализацияТоваровУслугТовары.Ссылка.ТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен
				|            И РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
				|ГДЕ
				|    РеализацияТоваровУслугТовары.Ссылка = &Ссылка И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура";
		Запрос.УстановитьПараметр("Ссылка", Ссылка);
		Запрос.УстановитьПараметр("Номенклатура", Ст.Номенклатура);
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
		Ст.Цена = Выборка.Цена;
		Ст.Сумма = Ст.Количество * Ст.Цена;
	    Ст.СуммаБезСкидок = Ст.Сумма;
	КонецЦикла;
    КонецЦикла;	
КонецФункции

Процедура ДействияФормыРеализацияТоваровУслуг(Кнопка)
	СоздатьТЗ();
   
   Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
   
   Сл = ЭтотОбъект.Ссылка;
   Док.Контрагент = Сл.Контрагент;
   Док.Дата = ТекущаяДата();
   Док.Организация = Сл.Организация;
   Док.Склад = Сл.Склад;
   ЗаполнитьТЗ(Док.Ссылка);
 Док.Товары.Загрузить(ТЗ);
   

   
   ОсновнаяФормаДок = Док.ПолучитьФорму();
  
   ОсновнаяФормаДок.Открыть();
КонецПроцедуры
Показать
Ответы
Избранное Подписка Сортировка: Древо
2. _qqq 45 18.02.19 11:17 Сейчас в теме
Функция СоздатьТЗ должна содержать в конце
Возврат ТЗ;

Вызов этой функции в ДействияФормыРеализацияТоваровУслуг должен выглядеть как-то так
ТЗ = СоздатьТЗ();

Функция ЗаполнитьТЗ(Ссылка) ничего не возвращает, лучше сделать её процедурой.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
Полный день

Программист 1С
Москва
зарплата от 100 000 руб. до 130 000 руб.
Полный день

Бизнес-аналитик 1С ERP
Пермь
зарплата от 80 000 руб.
Полный день

Программист 1С УТ 11
Омск
зарплата от 60 000 руб.
Полный день

Бизнес-аналитик 1С УТ 11
Омск
зарплата от 60 000 руб.
Полный день