Передача параметра в запрос из текущего выбранного документа.

1. BuryMeInVegas 18.11.19 10:19 Сейчас в теме
Добрый день. Столкнулся с очередной проблемой. У меня есть внешняя печатная форма, которая может цепляться к любым документам (нестандартная форма МБ-8). Необходимо получить из регистра сведений цену на номенклатуру, которая лежит в документе, на основе которого нужно построить печатную форму. То есть, например, в документе "ВнутреннееПотребление" у нас указано 10 ручек, но цена на ручки лежит в регистре сведений. Чтобы достать цену на эти ручки, я не могу явно указать параметр через док "ВнутреннееПотребление", потому что кроме этого документа, печатную форму формируют ещё, например, 15 документов. Я придерживаюсь следующей логики:

Запрос = Новый Запрос ("ВЫБРАТЬ
	                       |	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
	                       |ИЗ
	                       |	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
	                       |			,
	                       |			ВидЦены = &ВидЦены
	                       |				И Номенклатура.Ссылка = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних");

Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект.ВидЦены);
Запрос.УстановитьПараметр("Номенклатура", СсылкаНаОбъект.Товары.Номенклатура);
Показать
,
Где в
Запрос.УстановитьПараметр("Номенклатура", СсылкаНаОбъект.Товары.Номенклатура);
- СсылкаНаОбъект - текущий выбранный документ, Товары - его табличная часть.

Такой вариант не работает. Но я не знаю других вариантов передачи параметра в этот запрос. Подскажите, пожалуйста, как можно решить эту задачу.
По теме из базы знаний
Найденные решения
14. PriestVI 18.11.19 10:35 Сейчас в теме
Если вы хотите выбрать по всем номенклатурам в запросе используйте вместо = "В".
"Конструкция «В» позволяет сравнить значения поля с произвольным списком значения, массива или другого запроса. "
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. demONx7 18.11.19 10:25 Сейчас в теме
А что именно не работает то?
СсылкаНаОбъект содержит ссылку на объект?
3. BuryMeInVegas 18.11.19 10:27 Сейчас в теме
(2)Да, но при этом в этом параметре поле Номенклатура остаётся незамеченным.
4. пользователь 18.11.19 10:28
Сообщение было скрыто модератором.
...
5. xSavantx 25 18.11.19 10:30 Сейчас в теме
Вы как-то странно делаете. Непойму как вы номенклатуру как перебираете?
6. demONx7 18.11.19 10:31 Сейчас в теме
Может так надо?
СсылкаНаОбъект.Товары[К].Номенклатура

Где К - номер строки
7. PriestVI 18.11.19 10:33 Сейчас в теме
Так да, вы ведь пытаетесь сравнить ссылку на номенклатуру с табличной частью. Колонкой табличной части.
9. BuryMeInVegas 18.11.19 10:33 Сейчас в теме
(7)Кстати, да, что-то здесь я откровенную глупость сделал.
8. PriestVI 18.11.19 10:33 Сейчас в теме
Поставьте точку остановки и посмотрите что у Вас в "СсылкаНаОбъект.Товары.Номенклатура".
10. demONx7 18.11.19 10:34 Сейчас в теме
Может соединением проще будет сделать?

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


Только документ свой подставь.
12. BuryMeInVegas 18.11.19 10:34 Сейчас в теме
(10) Но у меня может быть неограниченное количество доков, а как их динамически менять - я вообще без понятия.
15. demONx7 18.11.19 10:37 Сейчас в теме
(12)Можно определять тип документа, а в запросе вместо РеализацияТоваровУслуг написать "ТипДокумента" + Товары.Номенклатура.
Так же заменить все найденные значения типа документа.

В переменную ТипДокумента запихивать нужный тип.
11. mifka186 9 18.11.19 10:34 Сейчас в теме
Попробуйте запросе изменить
|  И Номенклатура.Ссылка В (&Номенклатура)) КАК ЦеныНоменклатурыСрезПоследних");

А в параметр передать всю номенклатуру из таб. части
Запрос.УстановитьПараметр("Номенклатура", СсылкаНаОбъект.Товары.ВыгрузитьКолонку("Номенклатура"));
13. xSavantx 25 18.11.19 10:35 Сейчас в теме
Вообще правильно было бы убрать отбор по номенклатуре и получать цену сразу для всех номенклатур в табличной части, чтобы потом не получить запрос в цикле
14. PriestVI 18.11.19 10:35 Сейчас в теме
Если вы хотите выбрать по всем номенклатурам в запросе используйте вместо = "В".
"Конструкция «В» позволяет сравнить значения поля с произвольным списком значения, массива или другого запроса. "
17. BuryMeInVegas 18.11.19 10:48 Сейчас в теме
(14)При таком варианте запрос, конечно, работает, но при этом запрос вынимает только одно значение цены.

Т.е. цены у этих наименований должны быть разными. Первое фото - моя форма, второе фото - форма накладной.


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

Показать
Прикрепленные файлы:
18. PriestVI 18.11.19 11:28 Сейчас в теме
(17) Так да, ведь вы достаете цену без привязки к номенклатуре.Получите не только цену, но и номенклатуру. И потом по номенклатуре свяжите с тем, что у Вас в таблице.
19. BuryMeInVegas 18.11.19 11:41 Сейчас в теме
(18) Простите, но я откровенно не понимаю, с какой таблицей мне нужно связаться по номенклатуре...
20. PriestVI 18.11.19 11:49 Сейчас в теме
(19) Почему-то не могу в личные сообщения написать. На данный момент по тому запросу, что Вы привели вы получаете просто цену. Т.е. она никак не связана с номенклатурой, сделайте так:
ВЫБРАТЬ
|    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
|    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура

И покажите как Вы потом эту цену используете.
21. BuryMeInVegas 18.11.19 13:15 Сейчас в теме
(20) В итоге запрос оставил вот таким, он прекрасно работает:

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


А далее, я делаю вот так:
Выборка = Результат.НайтиСледующий(Новый Структура("Номенклатура", ТекущаяСтрока.Номенклатура));
		Если Выборка <> Неопределено Тогда
			ОбластьСтроки.Параметры.Цена = Результат.Цена;
			Сумма = Колво * Результат.Цена; 		
		КонецЕсли;
т.е. перебираю выборку. Только сейчас проблема заключается в том, что Результат.Цена не хочет преобразовываться в число. :)
22. PriestVI 18.11.19 13:36 Сейчас в теме
(21) Тут либо Выразить в запросе, либо Число() уже по результату.
23. BuryMeInVegas 18.11.19 13:42 Сейчас в теме
(22)Число() по результату не работало, потому что у определённых документов возвращался пустой результат запроса (соответственно приведение типов не проходило). Однако обработав запрос на пустоту, можно абсолютно без проблем получить результат. Финальный вид вот таков:
Запрос = Новый Запрос ("ВЫБРАТЬ
	                       |	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
	                       |	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
	                       |ИЗ
	                       |	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
	                       |			,
	                       |			Номенклатура.Ссылка В (&Номенклатура)
	                       |				И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних");
	Запрос.УстановитьПараметр("ВидЦены", СсылкаНаОбъект.ВидЦены);
	Запрос.УстановитьПараметр("Номенклатура", СсылкаНаОбъект.Товары.ВыгрузитьКолонку("Номенклатура"));

//Строки кода
//Ещё больше строк
//И ещё немного

Выборка = Результат.НайтиСледующий(Новый Структура("Номенклатура", ТекущаяСтрока.Номенклатура));
Если ВыборкаНаПустоту.Пустой() Тогда
		ОбластьСтроки.Параметры.Цена = NULL;
		ОбластьСтроки.Параметры.Сумма = NULL;
Иначе
	Если Выборка <> Неопределено Тогда
		ОбластьСтроки.Параметры.Цена = Результат.Цена;
		Сумма = Колво * Результат.Цена;
		ОбластьСтроки.Параметры.Сумма = Сумма;
		СуммаИтог = СуммаИтог + Сумма;
	КонецЕсли;
КонецЕсли;


Показать
24. PriestVI 18.11.19 13:49 Сейчас в теме
(23) Если честно, мне не очень нравится такой вариант. Я бы скорее в самом запросе проверял на пустую цену, через ЕСТЬNULL, да и следующий кусок как-то немного странно выглядит. Но это уже совсем другая история...
25. BuryMeInVegas 18.11.19 14:00 Сейчас в теме
(24) С удовольствием бы, на самом деле, послушал её, потому что при проверке работоспособности оказалось, что если существует товар, но для него не указана цена, то ему присваивается последняя записанная на форму цена, что неверно, должен быть ноль. Вероятнее всего, ошибка в сравнении имён номенклатур, но я уже просто закипел с этой печатной формой. :)
26. PriestVI 18.11.19 14:24 Сейчас в теме
(25) Честно говоря из того куска кода, что я вижу я вообще мало что понимаю. Что такое ВыборкаНаПустоту мне не понятно.
Вникнуть толком у меня не выходит - голова другим отчетом забита.
Откуда вообще берутся номенклатуры в таблице?
27. BuryMeInVegas 18.11.19 14:28 Сейчас в теме
(26) Из табличной части документа. Сейчас покажу:

СуммаИтог = 0;
	Запрос = Новый Запрос ("ВЫБРАТЬ
	                       |	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
	                       |	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
	                       |ИЗ
	                       |	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
	                       |			,
	                       |			Номенклатура.Ссылка В (&Номенклатура)
	                       |				И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних");
	Запрос.УстановитьПараметр("ВидЦены", СсылкаНаОбъект.ВидЦены);
	Запрос.УстановитьПараметр("Номенклатура", СсылкаНаОбъект.Товары.ВыгрузитьКолонку("Номенклатура"));
	ВыборкаНаПустоту = Запрос.Выполнить();
	Результат = ВыборкаНаПустоту.Выбрать();
	ТабличныйДокумент = Новый ТабличныйДокумент;
	МакетПечФормы = ПолучитьМакет("ПФ_MXL_МБ8");
	
	//Вот тут вывод шапки и заголовка таблицы
        //то есть ничего интересного
	
	ОбластьСтроки = МакетПечФормы.ПолучитьОбласть("Строка");
	Для Каждого ТекущаяСтрока из СсылкаНаОбъект.Товары Цикл
		ОбластьСтроки.Параметры.МатериалНаименование = ТекущаяСтрока.Номенклатура;
		ОбластьСтроки.Параметры.НоменклатурныйНомер = ТекущаяСтрока.Номенклатура.Код;
		ОбластьСтроки.Параметры.ЕдИзмер = ТекущаяСтрока.Номенклатура.ЕдиницаИзмерения;
		ОбластьСтроки.Параметры.КодЕдиницыИзм = ТекущаяСтрока.Номенклатура.ЕдиницаИзмерения.Код;
		ОбластьСтроки.Параметры.Количество = ТекущаяСтрока.КоличествоУпаковок;
		Колво = Число (ТекущаяСтрока.КоличествоУпаковок);
		Выборка = Результат.НайтиСледующий(Новый Структура("Номенклатура", ТекущаяСтрока.Номенклатура));
		Если ВыборкаНаПустоту.Пустой() Тогда
			ОбластьСтроки.Параметры.Цена = NULL;
			ОбластьСтроки.Параметры.Сумма = NULL;
		Иначе
			Если Выборка <> Неопределено Тогда
				ОбластьСтроки.Параметры.Цена = Результат.Цена;
				Сумма = Колво * Результат.Цена;
				ОбластьСтроки.Параметры.Сумма = Сумма;
				СуммаИтог = СуммаИтог + Сумма;
			КонецЕсли;
		КонецЕсли;
		ТабличныйДокумент.Вывести(ОбластьСтроки);
	КонецЦикла;	  
Показать


Собственно, номенклатура достаётся из табличной части документа (Товары - имя таб. части). ВыборкаНаПустоту - строка для проверки результата запроса, пуст он или нет. Разделяю на две переменные для наглядности, чтобы самому потом не путаться.
28. PriestVI 18.11.19 14:38 Сейчас в теме
(27) Если я все правильно понимаю, "Выборка" не будет равна неопределенно.
Возвращаемое значение:

Тип: Булево.
Истина - запись найдена; Ложь - в противном случае.
Описание:

Осуществляет поиск записи по указанным условиям и установку указателя выборки на нее.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Текущая запись не рассматривается.
30. BuryMeInVegas 18.11.19 14:42 Сейчас в теме
(28) Касательно этой строки - здесь все работает так, как должно. Проблема в следующем:

Запрос возвращает, например:

Наименование = ОПГС, Цена = 100
Наименование = ОПГС (продажа), Цена = 0

Однако в форму пишется

Наим Цена
ОПГС 100
ОПГС(продажа) 100

Т.е. при прохождении моих условий, цене присваивается последнее найденное значение.
33. PriestVI 18.11.19 14:43 Сейчас в теме
(30) Посмотрте на значение "Выборка" в отладчике по номенклатуре ОПГС(продажа)
34. BuryMeInVegas 18.11.19 14:44 Сейчас в теме
(33) Да дело в том, что отладчик отключен заказчиком.) Так бы много головной боли не было, будь он включен.
35. PriestVI 18.11.19 14:47 Сейчас в теме
(34) Жесть. Мне кажется, что с большой вероятность проблема именно там.
Добавьте:
Если Выборка <> Неопределено Тогда
Сообщить(Выборка.Номенклатура) ;
И там будет видно что за Номенклатуру оно смотрит.
29. PriestVI 18.11.19 14:40 Сейчас в теме
(27) Мне стыдно это советовать или говорить, но самое примитивное - попробуйте выгрузить результат запроса в ТЗ, а потом просто ищите там по номенклатуре. Вместо "Выборка = Результат.НайтиСледующий(Новый Структура("Номенклатура", ТекущаяСтрока.Номенклатура));"
Но в запросе добавьте ЕстьNULL
31. PriestVI 18.11.19 14:42 Сейчас в теме
(27) Или я могу попробовать посмотреть со свежим взглядом сам, когда разберусь со своими делами - вечером. Но надо мне как то написать, личные сообщения я почему-то слать не могу.
32. BuryMeInVegas 18.11.19 14:43 Сейчас в теме
(31) Если вас не затруднит, я мог бы написать вам на почту.
36. PriestVI 18.11.19 14:48 Сейчас в теме
(32) per0v0yivan Нужный символ rambler
Замените нули на о и дополните последующим.
37. BuryMeInVegas 18.11.19 14:49 Сейчас в теме
(36) Принял, благодарю. Кстати говоря, что-то я не догадался использовать сообщить. А запрос 2 раза возвращает одну и ту же номенклатуру, проблема в этом. Это вообще жесть какая-то.

UPD. Понял, в чём проблема: в регистре нет записи с ценой для ОПГС (продажа), поэтому и получается хрень. Сейчас нужно подумать, как исключить задвоение записи в таком случае.
Прикрепленные файлы:
38. PriestVI 18.11.19 14:59 Сейчас в теме
(37) Сделайте выгрузку в ТЗ, а потом по ней ищите - будет проще. И при условии если потом из нее не будет находиться ставьте нули.
39. PriestVI 18.11.19 15:24 Сейчас в теме
(37) Или вообще. Зачем все это. Просто найдите выбранный документ в запросе по ссылке и по нему по каждой строке из таблицы товары соедините с Ценой.
40. BuryMeInVegas 18.11.19 15:27 Сейчас в теме
(39) Аааа, не всё так просто.) В этом регистре ни один из нужных мне документов не двигается, соответственно, ссылок на него там тоже нет.) Связь с ценой можно наладить именно через номенклатуру (либо её код). Сейчас вот проблема заключается в том, что если в документе встречается номенклатура, которой нет в запросе, запрос пугается и задваивает последнюю запись. Отсюда и баг с ценой. Сейчас вот думаю, как исключить это задваивание. Т.е., если в регистре нет записи на номенклатуру, цена = 0.
41. PriestVI 18.11.19 15:35 Сейчас в теме
(40
СуммаИтог = 0;
    Запрос = Новый Запрос ("ВЫБРАТЬ
                           |    ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
                           |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
                           |ИЗ
                           |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                           |            ,
                           |            Номенклатура.Ссылка В (&Номенклатура)
                           |                И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних");
    Запрос.УстановитьПараметр("ВидЦены", СсылкаНаОбъект.ВидЦены);
    Запрос.УстановитьПараметр("Номенклатура", СсылкаНаОбъект.Товары.ВыгрузитьКолонку("Номенклатура"));
    ВыборкаНаПустоту = Запрос.Выполнить();
    Результат = ВыборкаНаПустоту.Выгрузить();
    ТабличныйДокумент = Новый ТабличныйДокумент;
    МакетПечФормы = ПолучитьМакет("ПФ_MXL_МБ8");
    
    //Вот тут вывод шапки и заголовка таблицы
        //то есть ничего интересного
    
    ОбластьСтроки = МакетПечФормы.ПолучитьОбласть("Строка");
    Для Каждого ТекущаяСтрока из СсылкаНаОбъект.Товары Цикл
        ОбластьСтроки.Параметры.МатериалНаименование = ТекущаяСтрока.Номенклатура;
        ОбластьСтроки.Параметры.НоменклатурныйНомер = ТекущаяСтрока.Номенклатура.Код;
        ОбластьСтроки.Параметры.ЕдИзмер = ТекущаяСтрока.Номенклатура.ЕдиницаИзмерения;
        ОбластьСтроки.Параметры.КодЕдиницыИзм = ТекущаяСтрока.Номенклатура.ЕдиницаИзмерения.Код;
        ОбластьСтроки.Параметры.Количество = ТекущаяСтрока.КоличествоУпаковок;
        Колво = Число (ТекущаяСтрока.КоличествоУпаковок);
        ЦенаПоНоменклатуре = Результат.Найти(ТекущаяСтрока.Номенклатура, "Номенклатура")
                ОбластьСтроки.Параметры.Цена = ЦенаПоНоменклатуре.Цена;
                Сумма = Колво * ЦенаПоНоменклатуре.Цена;
                ОбластьСтроки.Параметры.Сумма = Сумма;
                СуммаИтог = СуммаИтог + Сумма;
         
        КонецЕсли;
        ТабличныйДокумент.Вывести(ОбластьСтроки);
    КонецЦикла;      
Показать
)
Попробуйте
42. BuryMeInVegas 18.11.19 15:39 Сейчас в теме
(41) Метод объекта не обнаружен (Найти).
43. PriestVI 18.11.19 15:44 Сейчас в теме
(42) Тут поправили?
Результат = ВыборкаНаПустоту.Выгрузить();
44. BuryMeInVegas 18.11.19 15:48 Сейчас в теме
(43) Исправил, да, после того, как вы обратили моё внимание на это.) Но теперь в строке Сумма = Колво * ЦенаПоНоменклатуре.Цена; компилятор не может преобразовать ЦенаПоНоменклатуре.Цена в Число. Это, вероятнее всего, потому что для одной номенклатуры соответствия не найдено.
45. PriestVI 18.11.19 15:51 Сейчас в теме
(44) А тут поправили?
| ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
46. PriestVI 18.11.19 15:59 Сейчас в теме
(44) Блин, туплю:
ЦенаПоНоменклатуре = Результат.Найти(ТекущаяСтрока.Номенклатура, "Номенклатура")
Если ЦенаПоНоменклатуре<> Неопределено Тогда              
  ОбластьСтроки.Параметры.Цена = ЦенаПоНоменклатуре.Цена;
                Сумма = Колво * ЦенаПоНоменклатуре.Цена;
                ОбластьСтроки.Параметры.Сумма = Сумма;
                СуммаИтог = СуммаИтог + Сумма;
Иначе
ОбластьСтроки.Параметры.Цена = 0;
ОбластьСтроки.Параметры.Сумма = 0;
КонецЕсли;
Показать
47. BuryMeInVegas 18.11.19 16:15 Сейчас в теме
(46) Везде поправил. Сумма = Колво * ЦенаПоНоменклатуре.Цена; - не может преобразоваться к (Число). Условие Если ЦенаПоНоменклатуре<> Неопределено Тогда, как я понимаю, не выполняется, потому что ТЗ возвращает хотя бы одну запись, а значит она определена. Опять же, как я понимаю.
48. PriestVI 18.11.19 16:19 Сейчас в теме
(47) Возвращаемое значение:
Тип: СтрокаТаблицыЗначений, Неопределено.
Строка, в которой содержится искомое значение. Если значение не найдено, то возвращается значение Неопределено.

Не должно. Надо через сообщить вычислить что там за номенклатура и какая цена.
49. BuryMeInVegas 18.11.19 16:24 Сейчас в теме
(48) Ох, я жёстко ступил, в запросе вместо цены, вытянул ВидЦены, а это действительно ни разу не число.) Как только в запросе сменил на ЕстьNULL(ЦеныНоменклатурыСрезПоследних.ЦЕНА, 0) КАК Цена, сразу всё исправилось. Прошу прощения за последние 10 минут потерянного времени, это исключительно моя невнимательность.)
50. PriestVI 18.11.19 16:29 Сейчас в теме
(49) Да ничего. Но имейте ввиду, что решение это очень корявое, по хорошему так лучше не делать.
51. BuryMeInVegas 18.11.19 16:53 Сейчас в теме
(50) Учту это в своей следующей задаче, ведь новая задача тоже про доработку печатной формы! :)
52. TimurD 6 19.11.19 15:37 Сейчас в теме
(46) Для обнуления значений выводимой строки, можно ее получать непосредственно в цикле Чтоб наверняка прошлые значения не попали в новую строку.
Для Каждого ТекущаяСтрока из СсылкаНаОбъект.Товары Цикл
ОбластьСтроки = МакетПечФормы.ПолучитьОбласть("Строка");
..............
53. TimurD 6 19.11.19 15:42 Сейчас в теме
(27) Метод "НайтиСледующий" аналогичен методу "Следующий", за тем исключением, что "НайтиСледующий" выбирает запись из выборки, которая удовлетворяет условию. Можно было написать так

Для Каждого ТекущаяСтрока из СсылкаНаОбъект.Товары Цикл
ОбластьСтроки = МакетПечФормы.ПолучитьОбласть("Строка");

...............................

Если Результат.НайтиСледующий(Новый Структура("Номенклатура", ТекущаяСтрока.Номенклатура)); Тогда
ОбластьСтроки.Параметры.Цена = Результат.Цена;
..........................
КонецЕсли;
16. YannikAlx 27 18.11.19 10:39 Сейчас в теме
Если ваша цель добиться универсальности вашей печатной формы, то самый простой способ - менять текст запроса в зависимости от типа документа из которого она была вызвана.
Этот способ - древний как сама 1С...
Вы просто делаете замену кусочка текста запроса в можуле ЕСЛИ...
Оставьте свое сообщение

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