1С 7.7 Бухгалтерия. Нужно выводить Заказ-Наряды только по одному производителю

1. Zabey 04.01.10 13:44 Сейчас в теме
Проблема такова, что при подобной задаче по расходным накладным было достаточно:

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
...
|Произ = Документ.РасходнаяНакладная.Товар.Производитель;
...
|"//}}ЗАПРОС

и условия
Если Флаг2 = 1 Тогда
Имя2К = "2K";
лПроиз = СоздатьОбъект ("Справочник.Производители");
Если лПроиз.НайтиПоНаименованию (Имя2К,0,0) = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Произ.Наименование = Имя2К);"
КонецЕсли;
КонецЕсли;

Но это расходным-накладным. В заказ-нарядах поле составного типа, в итоге не получается подобным образом сделать выборку деталей. Подскажите в чем ошибка...
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. kompas-dm 781 04.01.10 15:40 Сейчас в теме
Я делаю так:

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

Функция НашаЛиЭто(Посмотрим)
........
Если лПроиз.НайтиПоНаименованию ("2K"; ,0,0) = 1 Тогда
Возврат 1;
КонецЕсли;
Возврат 0;
КонецФункции


ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
...
|Произ = Документ.РасходнаяНакладная.Товар.Производитель;

|Условие(НашаЛиЭто(Произ)=1);
...
|"//}}ЗАПРОС
3. kompas-dm 781 04.01.10 15:48 Сейчас в теме
Если лПроиз.НайтиПоНаименованию ("2K"; ,0,0) = 1 Тогда

------
Алголритм поиска в функции придумайте сами...
4. Zabey 04.01.10 15:53 Сейчас в теме
Если Товар.Вид() = "Номенклатура" Тогда
   Возврат 1;
 КонецЕсли;
 Возврат 0;
КонецФункции;


на подобии такого ?

Если Товар.Вид() = "Номенклатура" Тогда
ТекПроизводитель = Товар.Производитель;
Иначе
ТекПроизводитель = "";
КонецЕсли; 


или такого?

И еще... ведь это нужно сделать для заказ-нарядов, а у них вроде поле составного типа... .и обычным запросом производителя не вытащить...
9. Styvi 6 07.01.10 00:46 Сейчас в теме
Да и не надо вытаскивать Производителя в Запросе!!!
Надо вытащить ТОЛЬКО ТОВАР ;)

После того, что ты написал в (4) все успокоились, поняв, что ты на верном пути :)
А Новогодние праздники тебя опять с пути этого сбили ;)

В общем так - вытаскиваешь Товар в Запросе, (или Материал или другое
что), и по своему же рецепту (4) проверяешь Производителя... в Условии Запроса через Функцию:

Функция НашЛиЭтоПроизводитель(Товар)
Если Товар.Вид() = "Номенклатура" Тогда
Если Товар.Производитель.Наименование="2K" Тогда
Возврат 1;
КонецЕсли;
КонецЕсли;
Возврат 0;
КонецФункции

....................................
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
.............
|Товар= Документ.РасходнаяНакладнаяИлиДругойДокумент.ТоварИлиДругоеПоле;
|Условие(НашЛиЭтоПроизводитель(Товар)=1);
............
|"//}}ЗАПРОС
5. kompas-dm 781 04.01.10 17:06 Сейчас в теме
.........
|Условие(НашаЛиЭто(Произ)=1);
отреагирует только на 1 или 0
Фишка в том, что в функции (НашаЛиЭто(Посмотрим) ) делайте что угодно, любые операторы, переборы, анализ на наличие в наименовании "2К"....
Ваш производитель - возврат 1, нет - 0
6. Zabey 04.01.10 17:13 Сейчас в теме
а если нужно сделать 4 условия выборки производителей, нужно будет делать 4 функции?
7. kompas-dm 781 05.01.10 10:57 Сейчас в теме
8. Zabey 06.01.10 11:06 Сейчас в теме
выдает ошибку на запросе
|Произв = Документ.ЗаказНаряд.Производитель;
и в таком виде тоже
|Произв = Документ.ЗаказНаряд.Товар.Производитель;

есть подозрение что в заказ-наряде вообще запросом не вытащить производителя...
10. Zabey 08.01.10 13:06 Сейчас в теме
вот блин... вроде также делал...
это все и-за запроса :evil: !

благодарю за совет)
Оставьте свое сообщение

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