Показано с 1 по 9 из 9
Тема: Функции, запросы
-
09.02.2017, 11:12 #1
- Регистрация
- 09.02.2017
- Сообщений
- 5
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Функции, запросы
Необходимо вывести на печать табличную часть, исключив Эталон. Создал функцию, которая выполняет запрос, поиска эталона, затем вызвал функцию при выводе табличной части на печать, чтобы если в табличной части есть эталон, то он не отображался в табличном документе.
Помогите! Не могу разобраться почему в табличном документе На печать не исключается Эталон, всегда выдает таблицу вместе с Эталоном.
PHP код:Функция ПроверкаНаЭталон(Ном) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийЭлемент", ЭтотОбъект.Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| АналогиНоменклатура.Эталон,
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
|ИЗ
| Справочник.АналогиНоменклатура КАК АналогиНоменклатура,
| Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
|ГДЕ
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = АналогиНоменклатура.Эталон";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() = Истина Цикл
Возврат Истина;
Прервать;
КонецЦикла;
Возврат ложь
КонецФункции
Функция ПечатьБезАналогов()
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_БезАналогов";
Макет = ПолучитьМакет("БезАналогов");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаб");
ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаб");
ОбластьШапка.Параметры.НаименованиеСпецификации = Наименование;
ОбластьШапка.Параметры.КодСпецификации = Код;
ТабДокумент.Вывести(ОбластьШапка);
ТабДокумент.Вывести(ОбластьШапкаТаблицы);
Для Каждого СтрокаИсходныеКомпл Из ИсходныеКомплектующие Цикл
Если ПроверкаНаЭталон(СтрокаИсходныеКомпл.Номенклатура) И НЕ СтрокаИсходныеКомпл.ПометкаНаУдаление Тогда
ОбластьСтрокаТаблицы.Параметры.Код = СтрокаИсходныеКомпл.Номенклатура.Артикул;
ОбластьСтрокаТаблицы.Параметры.Наименование = СтрокаИсходныеКомпл.Номенклатура.Наименование;
ОбластьСтрокаТаблицы.Параметры.КолВИзд = СтрокаИсходныеКомпл.Количество;
ОбластьСтрокаТаблицы.Параметры.ПоНорме = СтрокаИсходныеКомпл.Норма;
ОбластьСтрокаТаблицы.Параметры.ЕдИзм = СтрокаИсходныеКомпл.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Наименование;
ТабДокумент.Вывести(ОбластьСтрокаТаблицы);
//ОбщегоНазначения.Сообщение("1", СтатусСообщения.Важное);
Иначе
//ОбщегоНазначения.Сообщение("0", СтатусСообщения.Важное);
ОбластьСтрокаТаблицы.Параметры.Код = NULL;
ОбластьСтрокаТаблицы.Параметры.Наименование = NULL;;
ОбластьСтрокаТаблицы.Параметры.КолВИзд = NULL;
ОбластьСтрокаТаблицы.Параметры.ПоНорме = NULL;
ОбластьСтрокаТаблицы.Параметры.ЕдИзм = NULL;
ТабДокумент.Вывести(ОбластьСтрокаТаблицы);
КонецЕсли;
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
-
09.02.2017, 14:02 #2
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
Re: Функции, запросы
Мля... Выполнение запроса в цикле - охринеть.. За такое при сдаче в 1С ставят сразу двойку и выгоняют с экзамена
ПыСы. у тебя вызов ПроверкаНаЭталон(Ном)
значит Текущая номенклатура у тебя находится в переменной Ном
Так?
А в запрос ты устанавливаешь ЭтотОбъект.Ссылка - Запрос.УстановитьПараметр( "ТекущийЭлемент", ЭтотОбъект.Ссылка);
Как это связано с НомИ?
Или
-
09.02.2017, 14:22 #3
- Регистрация
- 09.02.2017
- Сообщений
- 5
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
-
09.02.2017, 15:09 #4
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
-
09.02.2017, 16:21 #5
- Регистрация
- 09.02.2017
- Сообщений
- 5
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Функции, запросы
Я уже в конец запутался) насколько я понял вы имели ввиду это:
PHP код:Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийЭлемент", ЭтотОбъект.Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| АналогиНоменклатура.Эталон,
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
|ИЗ
| Справочник.АналогиНоменклатура КАК АналогиНоменклатура,
| Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
|ГДЕ
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = АналогиНоменклатура.Эталон
| И СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = &ТекущийЭлемент
| ";
-
09.02.2017, 17:05 #6
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
-
10.02.2017, 07:42 #7
- Регистрация
- 09.02.2017
- Сообщений
- 5
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Функции, запросы
:) очень "помогли"
-
13.02.2017, 09:09 #8
- Регистрация
- 09.02.2017
- Сообщений
- 5
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Функции, запросы
Разобрался, все было очень просто. Может кому-то пригодится)
PHP код:Функция ПроверкаНаЭталон(Ном) Экспорт
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| АналогиНоменклатура.Эталон
|ИЗ
| Справочник.АналогиНоменклатура КАК АналогиНоменклатура
|ГДЕ
| АналогиНоменклатура.Эталон = &Ном";
Запрос.УстановитьПараметр("Ном", Ном);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Возврат Истина;
Прервать;
КонецЦикла;
Возврат Ложь
КонецФункции
Функция ПечатьБезАналогов()
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_БезАналогов";
Макет = ПолучитьМакет("БезАналогов");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаб");
ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаб");
ОбластьШапка.Параметры.НаименованиеСпецификации = Наименование;
ОбластьШапка.Параметры.КодСпецификации = Код;
ТабДокумент.Вывести(ОбластьШапка);
ТабДокумент.Вывести(ОбластьШапкаТаблицы);
Для Каждого СтрокаИсходныеКомпл Из ИсходныеКомплектующие Цикл
Если ПроверкаНаЭталон(СтрокаИсходныеКомпл.Номенклатура) И НЕ СтрокаИсходныеКомпл.ПометкаНаУдаление Тогда
Иначе
ОбластьСтрокаТаблицы.Параметры.Код = СтрокаИсходныеКомпл.Номенклатура.Артикул;
ОбластьСтрокаТаблицы.Параметры.Наименование = СтрокаИсходныеКомпл.Номенклатура.Наименование;
ОбластьСтрокаТаблицы.Параметры.КолВИзд = СтрокаИсходныеКомпл.Количество;
ОбластьСтрокаТаблицы.Параметры.ПоНорме = СтрокаИсходныеКомпл.Норма;
ОбластьСтрокаТаблицы.Параметры.ЕдИзм = СтрокаИсходныеКомпл.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Наименование;
ТабДокумент.Вывести(ОбластьСтрокаТаблицы);
КонецЕсли;
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
-
13.02.2017, 09:16 #9
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
Re: Функции, запросы
Ну видишь. Все настолько просто :blush:, что даже не понятно как "помогать" :confused:
-
Социальные закладки