1С Печать документа поступление

1. _7445_ 01.02.19 14:52 Сейчас в теме
Здравствуйте. Я очень плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В макета есть колонка артикул но запрос выбирает коды не артикул. Изменил но сейчас повторяется артикул. Как исправится с этим?
Спасибо всем за ранее
Функция ПечатьПоступлениеТоваров()
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
	Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
		ВыводитьКоды    = Истина;
		Колонка         = "Artikul";
		ТекстКодАртикул = "Артикул";
	ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
		ВыводитьКоды    = Истина;
		Колонка         = "Kod";
		ТекстКодАртикул = "Код";
	Иначе
		ВыводитьКоды    = Ложь;
		Колонка         = "";
		ТекстКодАртикул = "Код";
	КонецЕсли;

	Если ВыводитьКоды Тогда
		ОбластьШапки  = "ШапкаСКодом";
		ОбластьСтроки = "СтрокаСКодом";
	Иначе
		ОбластьШапки  = "ШапкаТаблицы";
		ОбластьСтроки = "Строка";
	Конецесли;

	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

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

	СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ПоступлениеТоваровУслуг");
	
	ЗапросПоТоварам = Новый Запрос();
	ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", Ссылка);
	ЗапросПоТоварам.Текст =
	"ВЫБРАТЬ
	|   ВложенныйЗапрос.ВалютаДокумента,
	|	ВложенныйЗапрос.Номенклатура,
	|	ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
	|	ВложенныйЗапрос.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
	|	ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
	|	ВложенныйЗапрос.ЕдиницаИзмеренияМест.Представление КАК ЕдиницаИзмеренияМест,
	|	ВложенныйЗапрос.КоличествоМест,
	|	ВложенныйЗапрос.Количество,
	|	ВложенныйЗапрос.Коэффициент,
	|	ВложенныйЗапрос.Цена,
	|	ВложенныйЗапрос.Сумма,
	|	ВложенныйЗапрос.СуммаНДС,
	|	ВложенныйЗапрос.СтавкаНДС,
	|	ВложенныйЗапрос.Характеристика,
	|	ВложенныйЗапрос.Серия,
	|	ВложенныйЗапрос.НомерСтроки,
	|	ВложенныйЗапрос.Метка
	|ИЗ
	|	(ВЫБРАТЬ
	|		ПоступлениеТоваровУслуг.Номенклатура КАК Номенклатура,
	|		СУММА(ПоступлениеТоваровУслуг.КоличествоМест) КАК КоличествоМест,
	|		СУММА(ПоступлениеТоваровУслуг.Количество) КАК Количество,
	|		ПоступлениеТоваровУслуг.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|		ПоступлениеТоваровУслуг.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
	|		ПоступлениеТоваровУслуг.Коэффициент КАК Коэффициент,
	|		ПоступлениеТоваровУслуг.Цена КАК Цена,
	|		СУММА(ПоступлениеТоваровУслуг.Сумма) КАК Сумма,
	|		СУММА(ПоступлениеТоваровУслуг.СуммаНДС) КАК СуммаНДС,
	|		ПоступлениеТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
	|		ПоступлениеТоваровУслуг.ХарактеристикаНоменклатуры КАК Характеристика,
	|		ПоступлениеТоваровУслуг.СерияНоменклатуры КАК Серия,
	|		МИНИМУМ(ПоступлениеТоваровУслуг.НомерСтроки) КАК НомерСтроки,
	|		0 КАК Метка,
	|       ПоступлениеТоваров.ВалютаДокумента КАК ВалютаДокумента
	|	ИЗ
	|		Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг,
	|       Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваров 
	|	
	|	ГДЕ
	|		ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент И ПоступлениеТоваров.Ссылка = &ТекущийДокумент  
	|	
	|	СГРУППИРОВАТЬ ПО
	|		ПоступлениеТоваровУслуг.Номенклатура,
	|		ПоступлениеТоваровУслуг.СтавкаНДС,
	|		ПоступлениеТоваровУслуг.Цена,
	|		ПоступлениеТоваровУслуг.ЕдиницаИзмерения,
	|		ПоступлениеТоваровУслуг.ЕдиницаИзмеренияМест,
	|		ПоступлениеТоваровУслуг.Коэффициент,
	|		ПоступлениеТоваровУслуг.ХарактеристикаНоменклатуры,
	|       ПоступлениеТоваров.ВалютаДокумента,
	|		ПоступлениеТоваровУслуг.СерияНоменклатуры) КАК ВложенныйЗапрос
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	" + СтрокаВыборкиПоляСодержания + ",
	|	" + СтрокаВыборкиПоляСодержания + ",
	|	ПоступлениеТоваровУслуг.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
	|	NULL,
	|	NULL,
	|	NULL,
	|	ПоступлениеТоваровУслуг.Количество,
	|	1,
	|	ПоступлениеТоваровУслуг.Цена,
	|	ПоступлениеТоваровУслуг.Сумма,
	|	ПоступлениеТоваровУслуг.СуммаНДС,
	|	ПоступлениеТоваровУслуг.СтавкаНДС,
	|	NULL,
	|	NULL,
	|	НомерСтроки,
	|	1 КАК Метка,
	|   ПоступлениеТоваровУслуг.Ссылка.ВалютаДокумента
	|ИЗ
	|	Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслуг
	|
	|ГДЕ
	|	ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ПоступлениеТоваровУслуг.Номенклатура,
	|	ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
	|	ПоступлениеТоваровУслуг.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
	|	ПоступлениеТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
	|	NULL,
	|	NULL,
	|	ПоступлениеТоваровУслуг.Количество КАК Количество,
	|	1,
	|	ПоступлениеТоваровУслуг.Цена,
	|	ПоступлениеТоваровУслуг.Сумма КАК Сумма,
	|	0,
	|	""Без НДС"",
	|	NULL,
	|	NULL,
	|	НомерСтроки КАК НомерСтроки,
	|	2 КАК Метка,
	|   ПоступлениеТоваровУслуг.ВалютаДокумента
	|ИЗ
	|(ВЫБРАТЬ
	|	ПоступлениеТоваровУслуг.Номенклатура,
	|	СУММА(ПоступлениеТоваровУслуг.Количество) КАК Количество,
	|	ПоступлениеТоваровУслуг.Цена,
	|	СУММА(ПоступлениеТоваровУслуг.Сумма) КАК Сумма,
	|	МИНИМУМ(НомерСтроки) КАК НомерСтроки,
	|   ПоступлениеТоваровУслуг.Ссылка.ВалютаДокумента КАК ВалютаДокумента
	|ИЗ
	|	Документ.ПоступлениеТоваровУслуг.ВозвратнаяТара КАК ПоступлениеТоваровУслуг
	|ГДЕ
	|	ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент
	|СГРУППИРОВАТЬ ПО
	|	ПоступлениеТоваровУслуг.Номенклатура,
	|	ПоступлениеТоваровУслуг.Цена,
	|   ПоступлениеТоваровУслуг.Ссылка.ВалютаДокумента
	|) КАК ПоступлениеТоваровУслуг
	|УПОРЯДОЧИТЬ ПО Метка ВОЗР, НомерСтроки ВОЗР
	|";

	ВыборкаСтрок = ЗапросПоТоварам.Выполнить().Выгрузить();

	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеТоваровУслуг_Накладная";
	Макет       = ПолучитьМакет("Накладная");

	// Выводим шапку накладной

	ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
	ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Mədaxil qaiməsi");
	ТабДокумент.Вывести(ОбластьМакета);

	ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
	ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,");
	ОбластьМакета.Параметры.Поставщик = Шапка.Контрагент;
	ТабДокумент.Вывести(ОбластьМакета);

	ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
	ОбластьМакета.Параметры.ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.Дата), "ПолноеНаименование,");
	ОбластьМакета.Параметры.Получатель = Шапка.Организация;
	ТабДокумент.Вывести(ОбластьМакета);

	// Вывести табличную часть
	ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
	Если ВыводитьКоды Тогда
		ОбластьМакета.Параметры.Колонка = Колонка;
	КонецЕсли;

	ТабДокумент.Вывести(ОбластьМакета);

	ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);
	Сумма    = 0;
	СуммаНДС = 0;

	Для Каждого ВыборкаСтрокТовары Из ВыборкаСтрок Цикл

		ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
		ОбластьМакета.Параметры.НомерСтроки = ВыборкаСтрок.Индекс(ВыборкаСтрокТовары) + 1;
		ОбластьМакета.Параметры.Товар       = СокрЛП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
		                                    + ?(ВыборкаСтрокТовары.Метка = 2, " (qaytarılan tara)", "");
											
        ОбластьМакета.Параметры.Валюта = ВыборкаСтрокТовары.ВалютаДокумента;
		Если ОбластьМакета.Параметры.Валюта = Справочники.Валюты.НайтиПоНаименованию("AZN",,,) Тогда
			ОбластьМакета.Параметры.ЦенаМанат = ОбластьМакета.Параметры.Цена;
			ОбластьМакета.Параметры.СуммаМанат = ОбластьМакета.Параметры.Сумма;
		ИначеЕсли ОбластьМакета.Параметры.Валюта = Справочники.Валюты.НайтиПоНаименованию("USD",,,) Тогда
				Запрос = Новый Запрос;
				Запрос.Текст = "
				|ВЫБРАТЬ
				|ЕСТЬNULL(Цены.Курс, 0) КАК Курс
				|ИЗ
				|РегистрСведений.КурсыВалют.СрезПоследних(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), &Валюта = Валюта) КАК Цены";
				Запрос.УстановитьПараметр("КонецПериода", ЭтотОбъект.Дата);
				Запрос.УстановитьПараметр("Валюта", ОбластьМакета.Параметры.Валюта);
				Выборка = Запрос.Выполнить().Выбрать();
				Пока Выборка.Следующий() Цикл
		        ОбластьМакета.Параметры.ЦенаМанат = ЧИСЛО(ОбластьМакета.Параметры.Цена) * ЧИСЛО(Выборка.Курс);
				ОбластьМакета.Параметры.СуммаМанат = ЧИСЛО(ОбластьМакета.Параметры.Сумма) * ЧИСЛО(Выборка.Курс); 
				КонецЦикла;
				ИначеЕсли 
					ОбластьМакета.Параметры.Валюта = Справочники.Валюты.НайтиПоНаименованию("EUR",,,) Тогда
				Запрос = Новый Запрос;
				Запрос.Текст = "
				|ВЫБРАТЬ
				|ЕСТЬNULL(Цены.Курс, 0) КАК Курс
				|ИЗ
				|РегистрСведений.КурсыВалют.СрезПоследних(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), &Валюта = Валюта) КАК Цены";
				Запрос.УстановитьПараметр("КонецПериода", ЭтотОбъект.Дата);
				Запрос.УстановитьПараметр("Валюта", ОбластьМакета.Параметры.Валюта);
				Выборка = Запрос.Выполнить().Выбрать();
				Пока Выборка.Следующий() Цикл
		        ОбластьМакета.Параметры.ЦенаМанат = ОбластьМакета.Параметры.Цена * Выборка.Курс;
				ОбластьМакета.Параметры.СуммаМанат = ЧИСЛО(ОбластьМакета.Параметры.Сумма) * ЧИСЛО(Выборка.Курс);
				КонецЦикла;
                КонецЕсли;
			Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|СНоменклатура.Артикул КАК Артикул
	|ИЗ
	|Документ.ПоступлениеТоваровУслуг.Товары КАК Документы
	|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СНоменклатура
	|ПО Документы.Номенклатура = СНоменклатура.Ссылка
	|ГДЕ
	|Документы.Ссылка = &ТекущийДокумент";
	Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			ОбластьМакета.Параметры.Артикул = Выборка.Артикул;
		КонецЦикла;			
		
		Если ВыводитьКоды Тогда
			ОбластьМакета.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
		КонецЕсли;

		ТабДокумент.Вывести(ОбластьМакета);

		Сумма    = Сумма    + ВыборкаСтрокТовары.Сумма;
		СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

	КонецЦикла;

	// Вывести Итого
	ОбластьМакета                 = Макет.ПолучитьОбласть("Итого");
	ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
	ТабДокумент.Вывести(ОбластьМакета);

	// Вывести ИтогоНДС
	Если Шапка.УчитыватьНДС Тогда
		ОбластьМакета                    = Макет.ПолучитьОбласть("ИтогоНДС");
		ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
		ОбластьМакета.Параметры.НДС      = ?(Шапка.СуммаВключаетНДС, "O cümlədən ƏDV:", "ƏDV məbləği:");
		ТабДокумент.Вывести(ОбластьМакета);
	КонецЕсли;

	// Вывести Сумму прописью
	ОбластьМакета                          = Макет.ПолучитьОбласть("СуммаПрописью");
	СуммаКПрописи                          = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
	ОбластьМакета.Параметры.ИтоговаяСтрока ="Ümumi sayı " + ВыборкаСтрок.Количество()
	                                       + ", məbləğə " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
	ОбластьМакета.Параметры.СуммаПрописью  = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
	ТабДокумент.Вывести(ОбластьМакета);

	// Вывести подписи
	ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
	ОбластьМакета.Параметры.Заполнить(Шапка);
	ТабДокумент.Вывести(ОбластьМакета);
	
	//если места в документе не заполнены,
	МестВсего = ВыборкаСтрок.Итог("КоличествоМест");
	Если МестВсего = 0 Тогда
		УниверсальныеМеханизмы.СкрытьКолонкиВТабличномДокументе(ТабДокумент, "Мест", 5,ОбластьШапки);
	КонецЕсли;

	Возврат ТабДокумент;

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

Проблема тут, всегда выводит артикул последней строки документа.

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

Проблема тут, всегда выводит артикул последней строки документа.

Нужно это удалить и установить в константу ДополнительнаяКолонкаПечатныхФормДокументов
это значение - Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул (где-то в настройках)
4. _7445_ 01.02.19 15:23 Сейчас в теме
3. YannikAlx 27 01.02.19 15:19 Сейчас в теме
Покажи макет...
Зачем указал ERP2 - там все работает, а у тебя вообще не управляемые формы...?
5. YannikAlx 27 01.02.19 15:27 Сейчас в теме
И зачем вообще Это добавил явно

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


Оно не нужно

У тебя Код/Артикул заполняет следующие строки

Если ВыводитьКоды Тогда
ОбластьМакета.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
КонецЕсли;


Если ты изменил Название параметра макета - КодАртикул на свое Артикул , то ясно - перестало работать...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот