Имя: Пароль:
1C
1С v8
Помогите с кодом запроса печатной формой счф для БП 1.6
0 zmeyako999
 
25.01.12
10:14
Вообщем сделал и гдет накосячил а найти не могу где:
шибка при вызове метода контекста (Выполнить): В случае использования операторов ОБЪЕДИНИТЬ, поля предложений УПОРЯДОЧИТЬ ПО и ИТОГИ ПО должны находиться в списке выбора.

Перем мНадписьПредоплата;

Перем мВалютаРегламентированногоУчета Экспорт;

#Если Клиент Тогда

// Функция возвращает пустую таблицу значений под
// табличную часть документа основания.
//
Функция ИнициализацияТаблицыСтрок()

   Товары = Новый ТаблицаЗначений();

   Товары.Колонки.Добавить("Товар");
   Товары.Колонки.Добавить("ТоварНаименование");
   Товары.Колонки.Добавить("СтранаПроисхожденияКод");
   Товары.Колонки.Добавить("СтранаПроисхождения");
   Товары.Колонки.Добавить("ПредставлениеСтраны");
   Товары.Колонки.Добавить("НомерГТД");
   Товары.Колонки.Добавить("ПредставлениеГТД");
   Товары.Колонки.Добавить("Количество");
   Товары.Колонки.Добавить("ЕдиницаИзмерения");
   Товары.Колонки.Добавить("ЕдиницаИзмеренияКод");
   Товары.Колонки.Добавить("Цена");
   Товары.Колонки.Добавить("СтавкаНДС");
   Товары.Колонки.Добавить("СуммаНДС");
   Товары.Колонки.Добавить("Сумма");
   Товары.Колонки.Добавить("СуммаВключаетНДС");

   Возврат Товары;

КонецФункции

// Функция собирает данные по документу основанию ОтчетаКомитенту и
// возвращает типизированную структуру с данными
//
Функция СобратьДанныеПоОтчетКомитентуОПродажах(ТекущееОснование)

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

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

   Товары = ИнициализацияТаблицыСтрок();

   Если ВыборкаСтрокТовары.Следующий() Тогда
       Строчка = Товары.Добавить();
       Строчка.Товар               = ?(НЕ ЗначениеЗаполнено(Шапка.Товар), "Комиссионное вознаграждение", Шапка.Товар);
       Строчка.ТоварНаименование   = ?(НЕ ЗначениеЗаполнено(Шапка.Товар), "Комиссионное вознаграждение", Шапка.ТоварНаименование);
       Строчка.СтранаПроисхождения = "";
       Строчка.ПредставлениеСтраны = "";
       Строчка.НомерГТД            = "";
       Строчка.ПредставлениеГТД    = "";
       Строчка.Количество          = 0;
       Строчка.ЕдиницаИзмерения    = "";
       Строчка.СтавкаНДС = Шапка.СтавкаНДС;
       СуммаДляПечати    = ?(ВыборкаСтрокТовары.Сумма = Null, 0, ВыборкаСтрокТовары.Сумма);
       Строчка.СуммаНДС  = ?(ВыборкаСтрокТовары.СуммаНДС = Null, 0, ВыборкаСтрокТовары.СуммаНДС);
       Строчка.Сумма     = СуммаДляПечати;
       Строчка.Цена      = 0;

   КонецЕсли;

   ДанныеДляПечати.Вставить("ТабличнаяЧасть", Товары);

   Возврат ДанныеДляПечати;

КонецФункции // СобратьДанныеПоОтчетКомитентуОПродажах()

// Функция собирает данные по документу основанию ОтчетаКомисиионера и
// возвращает типизированную структуру с данными
//
Функция СобратьДанныеПоОтчетКомиссионераОПродажах(ТекущееОснование)

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

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

   Товары = ИнициализацияТаблицыСтрок();

   Пока ВыборкаСтрокТовары.Следующий() = 1 Цикл
       Строчка = Товары.Добавить();
       Строчка.Товар               = ВыборкаСтрокТовары.Товар;
       Строчка.ТоварНаименование   = СокрЛП(ВыборкаСтрокТовары.ТоварНаименование);
       Строчка.СтранаПроисхождения = ВыборкаСтрокТовары.СтранаПроисхождения;
       Строчка.СтранаПроисхожденияКод = ВыборкаСтрокТовары.СтранаПроисхожденияКод;
       Строчка.ПредставлениеСтраны = ?(НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.ПредставлениеСтраны), ВыборкаСтрокТовары.СтранаПроисхождения, ВыборкаСтрокТовары.ПредставлениеСтраны);
       Строчка.НомерГТД            = ВыборкаСтрокТовары.НомерГТД;
       Строчка.ПредставлениеГТД    = ВыборкаСтрокТовары.ПредставлениеГТД;
       Строчка.Количество          = ВыборкаСтрокТовары.Количество;
       Строчка.ЕдиницаИзмерения    = ВыборкаСтрокТовары.ЕдиницаИзмерения;
       Строчка.ЕдиницаИзмеренияКод    = ВыборкаСтрокТовары.ЕдиницаИзмеренияКод;
       Строчка.СтавкаНДС           = ВыборкаСтрокТовары.СтавкаНДС;
       Строчка.СуммаНДС            = ВыборкаСтрокТовары.СуммаНДС;
       Строчка.Сумма               = ВыборкаСтрокТовары.Сумма;
       Строчка.Цена                = ВыборкаСтрокТовары.Цена;
   КонецЦикла;
       
   ДанныеДляПечати.Вставить("ТабличнаяЧасть", Товары);

   Возврат ДанныеДляПечати;

КонецФункции // СобратьДанныеПоОтчетКомиссионераОПродажах()

// Функция собирает данные по документу основанию реализации и возвращает типизированную
// структуру с данными
//
Функция СобратьДанныеПоРеализацияТоваровУслуг(ТекущееОснование)

   Запрос = Новый Запрос;
   Если ТипЗнч(ТекущееОснование) = Тип("ДокументСсылка.РеализацияОтгруженныхТоваров") Тогда
       Запрос.УстановитьПараметр("ДокументОснование", ТекущееОснование.ДокументОтгрузки);
   Иначе
       Запрос.УстановитьПараметр("ДокументОснование", ТекущееОснование);
   КонецЕсли;
   Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());

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

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

   ДанныеДляПечати = Новый Структура();
   ДанныеДляПечати.Вставить("Организация",      Шапка.Организация);
   ДанныеДляПечати.Вставить("Номер",            СсылкаНаОбъект.Номер);
   ДанныеДляПечати.Вставить("Дата",             СсылкаНаОбъект.Дата);
   ДанныеДляПечати.Вставить("Поставщик",        Шапка.Поставщик);
   ДанныеДляПечати.Вставить("Грузоотправитель", Шапка.Грузоотправитель);
   ДанныеДляПечати.Вставить("Покупатель",       Шапка.Покупатель);
   ДанныеДляПечати.Вставить("Грузополучатель",  Шапка.Грузополучатель);
   ДанныеДляПечати.Вставить("АдресДоставки",    Шапка.АдресДоставки);
   ДанныеДляПечати.Вставить("Сумма",            Шапка.Сумма);
   ДанныеДляПечати.Вставить("Валюта",           Шапка.Валюта);
   ДанныеДляПечати.Вставить("УчитыватьНДС",     Шапка.УчитыватьНДС);
   ДанныеДляПечати.Вставить("СуммаВключаетНДС", Шапка.СуммаВключаетНДС);

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

   Товары = ИнициализацияТаблицыСтрок();
   
   ЕстьТовары = Ложь;

   Пока ВыборкаСтрокТовары.Следующий() = 1 Цикл

       Если ВыборкаСтрокТовары.ID = 1 Тогда
           ЕстьТовары = Истина;                            
       КонецЕсли;
       
       Строчка = Товары.Добавить();
       Строчка.Товар               = ВыборкаСтрокТовары.Товар;
       Строчка.ТоварНаименование   = СокрЛП(ВыборкаСтрокТовары.ТоварНаименование);
       Строчка.СтранаПроисхождения = ВыборкаСтрокТовары.СтранаПроисхождения;
       Строчка.ПредставлениеСтраны = ?(НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.ПредставлениеСтраны), ВыборкаСтрокТовары.СтранаПроисхождения, ВыборкаСтрокТовары.ПредставлениеСтраны);
       Строчка.СтранаПроисхожденияКод = ВыборкаСтрокТовары.СтранаПроисхожденияКод;
       Строчка.НомерГТД            = ВыборкаСтрокТовары.НомерГТД;
       Строчка.ПредставлениеГТД    = ВыборкаСтрокТовары.ПредставлениеГТД;
       Строчка.Количество          = ВыборкаСтрокТовары.Количество;
       Строчка.ЕдиницаИзмерения    = ВыборкаСтрокТовары.ЕдиницаИзмерения;
       Строчка.ЕдиницаИзмеренияКод = ВыборкаСтрокТовары.ЕдиницаИзмеренияКод;
       Строчка.Цена                = ВыборкаСтрокТовары.Цена;
       Строчка.СтавкаНДС           = ВыборкаСтрокТовары.СтавкаНДС;
       Строчка.СуммаНДС            = ВыборкаСтрокТовары.СуммаНДС;
       Строчка.Сумма               = ВыборкаСтрокТовары.Сумма;
       
   КонецЦикла;

   Если Не ЕстьТовары Тогда
       ДанныеДляПечати.Грузоотправитель = "";
       ДанныеДляПечати.Грузополучатель = "";        
       ДанныеДляПечати.АдресДоставки = "";        
   КонецЕсли;
   
   ДанныеДляПечати.Вставить("ТабличнаяЧасть", Товары);

   Возврат ДанныеДляПечати;

КонецФункции // СобратьДанныеПоРеализацияТоваровУслуг()

// Функция собирает данные по документу основанию реализации и возвращает типизированную
// структуру с данными
//
Функция СобратьДанныеПоВозвратТоваровПоставщику(ТекущееОснование)

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

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

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

   ДанныеДляПечати = Новый Структура();
   ДанныеДляПечати.Вставить("Организация",      Шапка.Организация);
   ДанныеДляПечати.Вставить("Номер",            СсылкаНаОбъект.Номер);
   ДанныеДляПечати.Вставить("Дата",             СсылкаНаОбъект.Дата);
   ДанныеДляПечати.Вставить("Поставщик",        Шапка.Поставщик);
   ДанныеДляПечати.Вставить("Грузоотправитель", Шапка.Грузоотправитель);
   ДанныеДляПечати.Вставить("Покупатель",       Шапка.Покупатель);
   ДанныеДляПечати.Вставить("Грузополучатель",  Шапка.Грузополучатель);
   ДанныеДляПечати.Вставить("Сумма",            Шапка.Сумма);
   ДанныеДляПечати.Вставить("Валюта",           Шапка.Валюта);
   ДанныеДляПечати.Вставить("УчитыватьНДС",     Шапка.УчитыватьНДС);
   ДанныеДляПечати.Вставить("СуммаВключаетНДС", Шапка.СуммаВключаетНДС);

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

   Товары = ИнициализацияТаблицыСтрок();
   
   ЕстьТовары = Ложь;

   Пока ВыборкаСтрокТовары.Следующий() = 1 Цикл

       Если ВыборкаСтрокТовары.ID = 1 Тогда
           ЕстьТовары = Истина;                            
       КонецЕсли;
       
       Строчка = Товары.Добавить();
       Строчка.Товар               = ВыборкаСтрокТовары.Товар;
       Строчка.ТоварНаименование   = СокрЛП(ВыборкаСтрокТовары.ТоварНаименование);
       Строчка.СтранаПроисхождения = ВыборкаСтрокТовары.СтранаПроисхождения;
       Строчка.СтранаПроисхожденияКод = ВыборкаСтрокТовары.СтранаПроисхожденияКод;
       Строчка.ПредставлениеСтраны = ?(НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.ПредставлениеСтраны), ВыборкаСтрокТовары.СтранаПроисхождения, ВыборкаСтрокТовары.ПредставлениеСтраны);
       Строчка.НомерГТД            = ВыборкаСтрокТовары.НомерГТД;
       Строчка.ПредставлениеГТД    = ВыборкаСтрокТовары.ПредставлениеГТД;
       Строчка.Количество          = ВыборкаСтрокТовары.Количество;
       Строчка.ЕдиницаИзмерения    = ВыборкаСтрокТовары.ЕдиницаИзмерения;
       Строчка.ЕдиницаИзмеренияКод    = ВыборкаСтрокТовары.ЕдиницаИзмеренияКод;
       Строчка.Цена                = ВыборкаСтрокТовары.Цена;
       Строчка.СтавкаНДС           = ВыборкаСтрокТовары.СтавкаНДС;
       Строчка.СуммаНДС            = ВыборкаСтрокТовары.СуммаНДС;
       Строчка.Сумма               = ВыборкаСтрокТовары.Сумма;
       
   КонецЦикла;

   Если Не ЕстьТовары Тогда
       ДанныеДляПечати.Грузоотправитель = "";
       ДанныеДляПечати.Грузополучатель = "";        
   КонецЕсли;
   
   ДанныеДляПечати.Вставить("ТабличнаяЧасть", Товары);

   Возврат ДанныеДляПечати;

КонецФункции // СобратьДанныеПоРеализацияТоваровУслуг()

Функция СобратьДанныеПоАкту(ТекущееОснование)

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

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

   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
   ВыборкаСтрокТовары = Шапка.Услуги.Выбрать();

   ДанныеДляПечати = Новый Структура();
   ДанныеДляПечати.Вставить("Организация",      Шапка.Организация);
   ДанныеДляПечати.Вставить("Номер",            СсылкаНаОбъект.Номер);
   ДанныеДляПечати.Вставить("Дата",             СсылкаНаОбъект.Дата);
   ДанныеДляПечати.Вставить("Поставщик",        Шапка.Поставщик);
   ДанныеДляПечати.Вставить("Грузоотправитель", );
   ДанныеДляПечати.Вставить("Покупатель",       Шапка.Покупатель);
   ДанныеДляПечати.Вставить("Грузополучатель",  );
   ДанныеДляПечати.Вставить("Сумма",            Шапка.Сумма);
   ДанныеДляПечати.Вставить("Валюта",           Шапка.Валюта);
   ДанныеДляПечати.Вставить("УчитыватьНДС",     Шапка.УчитыватьНДС);
   ДанныеДляПечати.Вставить("СуммаВключаетНДС", Шапка.СуммаВключаетНДС);

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

   Товары = ИнициализацияТаблицыСтрок();

   Пока ВыборкаСтрокТовары.Следующий() = 1 Цикл
       Строчка = Товары.Добавить();
       Строчка.Товар               = ВыборкаСтрокТовары.Товар;
       Строчка.ТоварНаименование   = СокрЛП(ВыборкаСтрокТовары.ТоварНаименование);
       Строчка.СтранаПроисхождения = "";
       Строчка.ПредставлениеСтраны = "";
       Строчка.НомерГТД            = "";
       Строчка.ПредставлениеГТД    = "";
       Строчка.Количество          = ВыборкаСтрокТовары.Количество;
       Строчка.ЕдиницаИзмерения    = ВыборкаСтрокТовары.ЕдиницаИзмерения;
       Строчка.Цена                = ВыборкаСтрокТовары.Цена;
       Строчка.СтавкаНДС           = ВыборкаСтрокТовары.СтавкаНДС;
       Строчка.СуммаНДС            = ВыборкаСтрокТовары.СуммаНДС;
       Строчка.Сумма               = ВыборкаСтрокТовары.Сумма;
   КонецЦикла;

   ДанныеДляПечати.Вставить("ТабличнаяЧасть", Товары);

   Возврат ДанныеДляПечати;


КонецФункции

// Функция собирает данные по документу основанию ПередачаОС и возвращает типизированную
// структуру с данными
//
Функция СобратьДанныеПоПередачеОС(ТекущееОснование)

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ДокументОснование", ТекущееОснование);
   Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());
   
  &n
1 zmeyako999
 
25.01.12
10:15
2 zmeyako999
 
25.01.12
10:15
3 Wobland
 
25.01.12
10:15
(0) и где ИТОГИ в этой портянке?
4 Wobland
 
25.01.12
10:18
УПОРЯДОЧИТЬ ПО
|    ID,
|    НомерСтроки

откуда у тебя запрос узнает, что такое ИД и НомерСтроки?
5 zmeyako999
 
25.01.12
10:22
Блин да это все было в старой счф внешней, я перечертил макет и вставил коды единиц измерения и коды страны, синтаксис весь он прошел
6 Wobland
 
25.01.12
10:23
(5) смотри текст запроса в момент исполнения. собирается как-то криво он
7 zmeyako999
 
25.01.12
11:46
Если Не (ТипЗнч(ТекущееОснование) = Тип("ДокументСсылка.РеализацияОтгруженныхТоваров") Или
          ТекущееОснование.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности) Тогда
       Запрос.Текст = Запрос.Текст + "ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |    РеализацияТоваровУслугУслуги.Номенклатура,
                  |    ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Содержание КАК СТРОКА(1000)),
                  |    NULL,
                  |    """",
                  |    РеализацияТоваровУслугУслуги.Номенклатура.БазоваяЕдиницаИзмерения,
                  |    РеализацияТоваровУслугУслуги.Номенклатура.БазоваяЕдиницаИзмерения.Код,
                  |    NULL,
                  |    """",
                  |    РеализацияТоваровУслугУслуги.Количество,
                  |    РеализацияТоваровУслугУслуги.Цена,
                  |    РеализацияТоваровУслугУслуги.СтавкаНДС,
                  |    РеализацияТоваровУслугУслуги.СуммаНДС,
                  |    РеализацияТоваровУслугУслуги.Сумма,
                  |    РеализацияТоваровУслугУслуги.НомерСтроки,
                  |    2
                  |ИЗ
                  |    Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
                  |ГДЕ
                  |    РеализацияТоваровУслугУслуги.Ссылка = &ДокументОснование
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    ID,
                  |    НомерСтроки";
   КонецЕсли;




Походу разное количество полей но исправить хз как
8 Wobland
 
25.01.12
11:47
(7) тогда б ругался на разное количество полей
9 zmeyako999
 
25.01.12
11:50
конструктором синтаксис проходит
10 zmeyako999
 
25.01.12
12:48
11 zmeyako999
 
25.01.12
12:49
Помогите кто нить ... чет вообще уже в ступоре, убрал ИД сделал автоупорядочивание и все равно никак
12 zmeyako999
 
25.01.12
12:50
ссылкка выше
13 zmeyako999
 
26.01.12
06:49
есть у когонибудь готовая форма под 8.1?
14 IamAlexy
 
26.01.12
07:02
15 zmeyako999
 
26.01.12
07:39
там платно
16 zmeyako999
 
26.01.12
12:19
Wobland  - пасиба разобралсо правда с чужой помощью но разобралсся
17 zak555
 
26.01.12
12:20
(0) зачем тебе СФ ?
18 zmeyako999
 
26.01.12
12:21
было в первой половине запроса 3 строки про страну происхождения, а во второй половине я 2 строки нулевые выводил, добавил третью пустую, вот и все дела
19 zmeyako999
 
26.01.12
12:23
(17) Конфа на обменах - на переферийках инет УГ, а с Урала на Алтай ехать никто не хочет, да и грядет переход на УПП посредствам терминала, поэтому заткнул таким макаром на время
Ошибка? Это не ошибка, это системная функция.