сделал отчет. Проблема в накладной расходной например 3 товара, у меня в отчете появляется только первый товар, суммы, кол-во за три товара, в чем проблема помогите. ЛИСТИНГ:
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|Обрабатывать НеПомеченныеНаУдаление;
|РеализацияРозница = Документ.РеализацияРозница.ТекущийДокумент;
|Контрагент = Документ.РеализацияРозница.Контрагент;
|Скидка = Документ.РеализацияРозница.Скидка;
|ВидОперации = Документ.РеализацияРозница.ВидОперации;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
|ВремяДок = Документ.РеализацияРозница.ВремяДок;
|Количество = Документ.РеализацияРозница.Количество;
|Наименование = Документ.РеализацияРозница.Номенклатура.Наименование;
|Артикул = Документ.РеализацияРозница.Номенклатура.Артикул;
|Функция КоличествоСумма = Сумма(Количество);
|Функция ЦенаСумма = Сумма(Цена);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка РеализацияРозница упорядочить по РеализацияРозница.ДатаДок, РеализацияРозница.ВидОперации, РеализацияРозница.Контрагент, РеализацияРозница.Номенклатура.Наименование, РеализацияРозница.Скидка, РеализацияРозница.Номенклатура.Артикул, КоличествоСумма, ЦенаСумма, СуммаСумма;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей РеализацияРозница
Таб.ВывестиСекцию("РеализацияРозница");
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|Обрабатывать НеПомеченныеНаУдаление;
|РеализацияРозница = Документ.РеализацияРозница.ТекущийДокумент;
|Контрагент = Документ.РеализацияРозница.Контрагент;
|Скидка = Документ.РеализацияРозница.Скидка;
|ВидОперации = Документ.РеализацияРозница.ВидОперации;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
|ВремяДок = Документ.РеализацияРозница.ВремяДок;
|Количество = Документ.РеализацияРозница.Количество;
|Наименование = Документ.РеализацияРозница.Номенклатура.Наименование;
|Артикул = Документ.РеализацияРозница.Номенклатура.Артикул;
|Функция КоличествоСумма = Сумма(Количество);
|Функция ЦенаСумма = Сумма(Цена);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка РеализацияРозница упорядочить по РеализацияРозница.ДатаДок, РеализацияРозница.ВидОперации, РеализацияРозница.Контрагент, РеализацияРозница.Номенклатура.Наименование, РеализацияРозница.Скидка, РеализацияРозница.Номенклатура.Артикул, КоличествоСумма, ЦенаСумма, СуммаСумма;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей РеализацияРозница
Таб.ВывестиСекцию("РеализацияРозница");
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
По теме из базы знаний
- Отчет по проданным акцизным маркам в декалитрах (ДАЛ) для составления алкогольной декларации (Управление торговлей УТ 10.3, Розница 2.2)
- Обмен между 1С:Розница и Frontol 6 по организациям (Розница - Фронтол)
- Права на объект (расширение, отчет)
- Привилегированные отчеты
- Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Что - то опять не то делаю.Гляньте плиз...
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|Обрабатывать НеПомеченныеНаУдаление;
|РеализацияРозница = Документ.РеализацияРозница.ТекущийДокумент;
|Контрагент = Документ.РеализацияРозница.Контрагент;
|Скидка = Документ.РеализацияРозница.Скидка;
|ВидОперации = Документ.РеализацияРозница.ВидОперации;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
|ВремяДок = Документ.РеализацияРозница.ВремяДок;
// добавил строку номенкул
|Номенклатура = Документ.РеализацияРозница.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество;
|Наименование = Документ.РеализацияРозница.Номенклатура.Наименование;
|Артикул = Документ.РеализацияРозница.Номенклатура.Артикул;
|Функция КоличествоСумма = Сумма(Количество);
|Функция ЦенаСумма = Сумма(Цена);
|Функция СуммаСумма = Сумма(Сумма);
// |Группировка РеализацияРозница.Номенклатура упорядочить по РеализацияРозница.Номенклатура.Наименование;
|Группировка РеализацияРозница упорядочить по РеализацияРозница.ДатаДок, РеализацияРозница.ВидОперации, РеализацияРозница.Контрагент, РеализацияРозница.Номенклатура.Наименование, РеализацияРозница.Скидка, РеализацияРозница.Номенклатура.Артикул, КоличествоСумма, ЦенаСумма, СуммаСумма;
|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей РеализацияРозница
Таб.ВывестиСекцию("РеализацияРозница");
КонецЦикла;
// добавил
Пока Запрос.Группировка(2) = 1 Цикл
Таб.ВывестиСекцию("Номенклатура");
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|Обрабатывать НеПомеченныеНаУдаление;
|РеализацияРозница = Документ.РеализацияРозница.ТекущийДокумент;
|Контрагент = Документ.РеализацияРозница.Контрагент;
|Скидка = Документ.РеализацияРозница.Скидка;
|ВидОперации = Документ.РеализацияРозница.ВидОперации;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
|ВремяДок = Документ.РеализацияРозница.ВремяДок;
// добавил строку номенкул
|Номенклатура = Документ.РеализацияРозница.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество;
|Наименование = Документ.РеализацияРозница.Номенклатура.Наименование;
|Артикул = Документ.РеализацияРозница.Номенклатура.Артикул;
|Функция КоличествоСумма = Сумма(Количество);
|Функция ЦенаСумма = Сумма(Цена);
|Функция СуммаСумма = Сумма(Сумма);
// |Группировка РеализацияРозница.Номенклатура упорядочить по РеализацияРозница.Номенклатура.Наименование;
|Группировка РеализацияРозница упорядочить по РеализацияРозница.ДатаДок, РеализацияРозница.ВидОперации, РеализацияРозница.Контрагент, РеализацияРозница.Номенклатура.Наименование, РеализацияРозница.Скидка, РеализацияРозница.Номенклатура.Артикул, КоличествоСумма, ЦенаСумма, СуммаСумма;
|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей РеализацияРозница
Таб.ВывестиСекцию("РеализацияРозница");
КонецЦикла;
// добавил
Пока Запрос.Группировка(2) = 1 Цикл
Таб.ВывестиСекцию("Номенклатура");
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Мне кажется, что и такое подробное упорядочивание ни к чему.... :-/
И ещё, здесь правильно сказали, что нужна группировка по документу и по строкам документа
Результаты обходить надо через
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
...
КонецЦикла;
КонецЦикла;
И ещё, здесь правильно сказали, что нужна группировка по документу и по строкам документа
Результаты обходить надо через
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
...
КонецЦикла;
КонецЦикла;
Спасибо за советы сейчас выводит номенклатуру, НО ...
Номенкулатура выводится:итог по фирме товара|название группы товара|а затем только сам товар, первые две строчки лишние, одна из них добавляется с помощью второй групировки
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|РеализацияРозница = Документ.РеализацияРозница.ТекущийДокумент;
|Контрагент = Документ.РеализацияРозница.Контрагент;
|Процент = Документ.РеализацияРозница.Скидка.Процент;
|Номенклатура = Документ.РеализацияРозница.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
|Функция КоличествоСумма = Сумма(Количество);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка РеализацияРозница упорядочить по РеализацияРозница.ДатаДок, РеализацияРозница.Контрагент, РеализацияРозница.Скидка;
|Группировка Номенклатура упорядочить по Номенклатура.Наименование, Номенклатура.Артикул, КоличествоСумма, СуммаСумма;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей РеализацияРозница
Таб.ВывестиСекцию("РеализацияРозница");
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей Номенклатура
Таб.ВывестиСекцию("Номенклатура");
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Номенкулатура выводится:итог по фирме товара|название группы товара|а затем только сам товар, первые две строчки лишние, одна из них добавляется с помощью второй групировки
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|РеализацияРозница = Документ.РеализацияРозница.ТекущийДокумент;
|Контрагент = Документ.РеализацияРозница.Контрагент;
|Процент = Документ.РеализацияРозница.Скидка.Процент;
|Номенклатура = Документ.РеализацияРозница.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
|Функция КоличествоСумма = Сумма(Количество);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка РеализацияРозница упорядочить по РеализацияРозница.ДатаДок, РеализацияРозница.Контрагент, РеализацияРозница.Скидка;
|Группировка Номенклатура упорядочить по Номенклатура.Наименование, Номенклатура.Артикул, КоличествоСумма, СуммаСумма;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей РеализацияРозница
Таб.ВывестиСекцию("РеализацияРозница");
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей Номенклатура
Таб.ВывестиСекцию("Номенклатура");
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Вообщем пробовал сделать по регистрам Документ (Document) - позволяет детализацию до документа;
СтрокаДокумента (DocumentLine) - позволяет детализацию до строки документа; не получаеться у меня ...(немогу понять как переменные описать, и как таблицу линовать?) Сделал я таки по своему всё выводиться ОК(одну лишнюю строку в таблице просто убрал :)). Теперь надо добавить Возврат от покупателя, вроде бы сделал всё как и раньше, ощибок на синтаксис нет, а на выводе не отображается по Возврату НИЧЕГО, в чем причина не могу понять (в таблице секции прописал)? Листинг:
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Количество1 = Регистр.ОстаткиТМЦ.Количество;
|ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод;
|Функция КоличествоНачОст = НачОст(Количество1);
|Функция КоличествоКонОст = КонОст(Количество1);
|Функция ЦенаПродСумма = Сумма(ЦенаПрод);
|РеализацияРозница = Документ.РеализацияРозница.ТекущийДокумент;
|Контрагент = Документ.РеализацияРозница.Контрагент;
|Процент = Документ.РеализацияРозница.Скидка.Процент;
|Номенклатура = Документ.РеализацияРозница.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
// возврат
|ВозвратОтПокупателя = Документ.ВозвратОтПокупателя.ТекущийДокумент;
|КонтрагентВ = Документ.ВозвратОтПокупателя.Контрагент;
|ПроцентВ = Документ.ВозвратОтПокупателя.Скидка.Процент;
|НоменклатураВ = Документ.ВозвратОтПокупателя.Номенклатура;
// |АртикулВ = Документ.ВозвратОтПокупателя.Номенклатура.Артикул;
|КоличествоВ = Документ.ВозвратОтПокупателя.Количество;
|ЦенаВ = Документ.ВозвратОтПокупателя.Цена;
|СуммаВ = Документ.ВозвратОтПокупателя.Сумма;
|Функция КоличествоВСумма = Сумма(КоличествоВ);
|Функция СуммаВСумма = Сумма(СуммаВ);
|Функция ЦенаВСумма = Сумма(ЦенаВ);
// конец возврата
|Функция ЦенаСумма = Сумма(Цена);
|Функция КоличествоСумма = Сумма(Количество);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка РеализацияРозница без групп упорядочить по РеализацияРозница.ДатаДок, РеализацияРозница.Контрагент, РеализацияРозница.Скидка,ЦенаСумма;
|Группировка Номенклатура без групп упорядочить по Номенклатура.Наименование, Номенклатура.Артикул,КоличествоСумма, СуммаСумма;
// возврат
|Группировка ВозвратОтПокупателя упорядочить по ВозвратОтПокупателя.ДатаДок, ВозвратОтПокупателя.Контрагент, ВозвратОтПокупателя.Скидка без групп;
|Группировка НоменклатураВ упорядочить по НоменклатураВ.Наименование, НоменклатураВ.Артикул, КоличествоВСумма, ЦенаВСумма, СуммаВСумма без групп;
// конец группировки возврата
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей РеализацияРозница
Таб.ВывестиСекцию("РеализацияРозница");
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей Номенклатура
Таб.ВывестиСекцию("Номенклатура");
// возврат
Пока Запрос.Группировка(3) = 1 Цикл
Таб.ВывестиСекцию("ВозвратОтПокупателя");
Пока Запрос.Группировка(4) = 1 Цикл
Таб.ВывестиСекцию("НоменклатураВ");
КонецЦикла;
КонецЦикла;
// возврат
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
Таб.ВывестиСекцию("Итого1");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
СтрокаДокумента (DocumentLine) - позволяет детализацию до строки документа; не получаеться у меня ...(немогу понять как переменные описать, и как таблицу линовать?) Сделал я таки по своему всё выводиться ОК(одну лишнюю строку в таблице просто убрал :)). Теперь надо добавить Возврат от покупателя, вроде бы сделал всё как и раньше, ощибок на синтаксис нет, а на выводе не отображается по Возврату НИЧЕГО, в чем причина не могу понять (в таблице секции прописал)? Листинг:
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Количество1 = Регистр.ОстаткиТМЦ.Количество;
|ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод;
|Функция КоличествоНачОст = НачОст(Количество1);
|Функция КоличествоКонОст = КонОст(Количество1);
|Функция ЦенаПродСумма = Сумма(ЦенаПрод);
|РеализацияРозница = Документ.РеализацияРозница.ТекущийДокумент;
|Контрагент = Документ.РеализацияРозница.Контрагент;
|Процент = Документ.РеализацияРозница.Скидка.Процент;
|Номенклатура = Документ.РеализацияРозница.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
// возврат
|ВозвратОтПокупателя = Документ.ВозвратОтПокупателя.ТекущийДокумент;
|КонтрагентВ = Документ.ВозвратОтПокупателя.Контрагент;
|ПроцентВ = Документ.ВозвратОтПокупателя.Скидка.Процент;
|НоменклатураВ = Документ.ВозвратОтПокупателя.Номенклатура;
// |АртикулВ = Документ.ВозвратОтПокупателя.Номенклатура.Артикул;
|КоличествоВ = Документ.ВозвратОтПокупателя.Количество;
|ЦенаВ = Документ.ВозвратОтПокупателя.Цена;
|СуммаВ = Документ.ВозвратОтПокупателя.Сумма;
|Функция КоличествоВСумма = Сумма(КоличествоВ);
|Функция СуммаВСумма = Сумма(СуммаВ);
|Функция ЦенаВСумма = Сумма(ЦенаВ);
// конец возврата
|Функция ЦенаСумма = Сумма(Цена);
|Функция КоличествоСумма = Сумма(Количество);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка РеализацияРозница без групп упорядочить по РеализацияРозница.ДатаДок, РеализацияРозница.Контрагент, РеализацияРозница.Скидка,ЦенаСумма;
|Группировка Номенклатура без групп упорядочить по Номенклатура.Наименование, Номенклатура.Артикул,КоличествоСумма, СуммаСумма;
// возврат
|Группировка ВозвратОтПокупателя упорядочить по ВозвратОтПокупателя.ДатаДок, ВозвратОтПокупателя.Контрагент, ВозвратОтПокупателя.Скидка без групп;
|Группировка НоменклатураВ упорядочить по НоменклатураВ.Наименование, НоменклатураВ.Артикул, КоличествоВСумма, ЦенаВСумма, СуммаВСумма без групп;
// конец группировки возврата
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей РеализацияРозница
Таб.ВывестиСекцию("РеализацияРозница");
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей Номенклатура
Таб.ВывестиСекцию("Номенклатура");
// возврат
Пока Запрос.Группировка(3) = 1 Цикл
Таб.ВывестиСекцию("ВозвратОтПокупателя");
Пока Запрос.Группировка(4) = 1 Цикл
Таб.ВывестиСекцию("НоменклатураВ");
КонецЦикла;
КонецЦикла;
// возврат
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
Таб.ВывестиСекцию("Итого1");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Попробовал воспользоваься запросом выше, любезно предоставленный Poppy. Задача такова: сделать отчет продаж в котором столбцы
ДатаДок/ВремяДок/ВидОперации/Контрагент/Артикул/Номенклатура /Цена/Скидка/Кол-во/Сумма и итоги.(ВидОперации : РелизацияРозница и ВозвратОтПокупателя. Приход не включать.)
После редактирования выше запроса что неполучилось:
1)время документа неверное показывает (00:00:19)у всех одинаковое!
2)ВидОперации по продаже показывает, по ВозвратуОтПокупателя пустая строка?
3)Одна лишняя строка остается кот. показывает итоги по документу (получается группировкой по документу).
4)Надо кол-во и Сумму по возвратуОтПокупателя как-то со знаком минус сделать, а то Итоги неверные получаются.
Листинг:
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
// выводятся остатки
|Количество1 = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоНачОст = НачОст(Количество1);
|Функция КоличествоКонОст = КонОст(Количество1);
//
|ТекущийДокумент = Документ.РеализацияРозница.ТекущийДокумент, Документ.ВозвратОтПокупателя.ТекущийДокумент;
|Номенклатура = Документ.РеализацияРозница.Номенклатура, Документ.ВозвратОтПокупателя.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество,Документ.ВозвратОтПокупателя.Количество;
|Цена = Документ.РеализацияРозница.Цена,Документ.ВозвратОтПокупателя.Цена;
|Сумма = Документ.РеализацияРозница.Сумма,Документ.ВозвратОтПокупателя.Сумма;
//|КоличествоВ = Документ.ВозвратОтПокупателя.Количество;
//|ЦенаВ = Документ.ВозвратОтПокупателя.Цена;
//|СуммаВ = Документ.ВозвратОтПокупателя.Сумма;
//|Функция КоличествоВСумма = Сумма(КоличествоВ);
//|Функция СуммаВСумма = Сумма(СуммаВ);
//|Функция ЦенаВСумма = Сумма(ЦенаВ);
|Функция ЦенаСумма = Сумма(Цена);
|Функция КоличествоСумма = Сумма(Количество);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка ТекущийДокумент упорядочить по ТекущийДокумент.ДатаДок,ТекущийДокумент.ВремяДок,ТекущийДокумент.КодОперации, ТекущийДокумент.Контрагент.Наименование, ТекущийДокумент.Скидка;
|Группировка Номенклатура упорядочить по Номенклатура.Артикул,Номенклатура.Наименование без групп;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей ТекущийДокумент
Таб.ВывестиСекцию("ТекущийДокумент");
// Заполнение полей Номенклатура
Таб.ВывестиСекцию("Номенклатура");
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
Таб.ВывестиСекцию("Итого1");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
ДатаДок/ВремяДок/ВидОперации/Контрагент/Артикул/Номенклатура
После редактирования выше запроса что неполучилось:
1)время документа неверное показывает (00:00:19)у всех одинаковое!
2)ВидОперации по продаже показывает, по ВозвратуОтПокупателя пустая строка?
3)Одна лишняя строка остается кот. показывает итоги по документу (получается группировкой по документу).
4)Надо кол-во и Сумму по возвратуОтПокупателя как-то со знаком минус сделать, а то Итоги неверные получаются.
Листинг:
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
// выводятся остатки
|Количество1 = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоНачОст = НачОст(Количество1);
|Функция КоличествоКонОст = КонОст(Количество1);
//
|ТекущийДокумент = Документ.РеализацияРозница.ТекущийДокумент, Документ.ВозвратОтПокупателя.ТекущийДокумент;
|Номенклатура = Документ.РеализацияРозница.Номенклатура, Документ.ВозвратОтПокупателя.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество,Документ.ВозвратОтПокупателя.Количество;
|Цена = Документ.РеализацияРозница.Цена,Документ.ВозвратОтПокупателя.Цена;
|Сумма = Документ.РеализацияРозница.Сумма,Документ.ВозвратОтПокупателя.Сумма;
//|КоличествоВ = Документ.ВозвратОтПокупателя.Количество;
//|ЦенаВ = Документ.ВозвратОтПокупателя.Цена;
//|СуммаВ = Документ.ВозвратОтПокупателя.Сумма;
//|Функция КоличествоВСумма = Сумма(КоличествоВ);
//|Функция СуммаВСумма = Сумма(СуммаВ);
//|Функция ЦенаВСумма = Сумма(ЦенаВ);
|Функция ЦенаСумма = Сумма(Цена);
|Функция КоличествоСумма = Сумма(Количество);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка ТекущийДокумент упорядочить по ТекущийДокумент.ДатаДок,ТекущийДокумент.ВремяДок,ТекущийДокумент.КодОперации, ТекущийДокумент.Контрагент.Наименование, ТекущийДокумент.Скидка;
|Группировка Номенклатура упорядочить по Номенклатура.Артикул,Номенклатура.Наименование без групп;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей ТекущийДокумент
Таб.ВывестиСекцию("ТекущийДокумент");
// Заполнение полей Номенклатура
Таб.ВывестиСекцию("Номенклатура");
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
Таб.ВывестиСекцию("Итого1");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
led Написал:
-------------------------------------------------------
> После редактирования выше запроса что
> неполучилось:
> 1)время документа неверное показывает (00:00:19)у
> всех одинаковое!
Должно быть правильное :-/ Или попробуй воспользоваться методом для документа ПолучитьВремя();
> 2)ВидОперации по продаже показывает, по
> ВозвратуОтПокупателя пустая строка?
Посмотри в отладчике значение у документа реквизита КодОперации при возврате.
> 3)Одна лишняя строка остается кот. показывает
> итоги по документу (получается группировкой по
> документу).
Ну так не выводи её раз лишняя и всё, т.е. убери строку
Таб.ВывестиСекцию("ТекущийДокумент");
или выводи её только при первом обходе этой группировки(установив счётчик обхода)
> 4)Надо кол-во и Сумму по возвратуОтПокупателя
> как-то со знаком минус сделать, а то Итоги
> неверные получаются.
Если перебираешь суммы по документам реализации и возврата, в модуле так и пропиши:
Сумма=Запрос.СуммаСумма;
Если Запрос.ТекущийДокумент.Вид()="ВозвратОтПокупателя" тогда
Сумма=-Запрос.СуммаСумма ;
КонецЕсли;
И в таблице исправь Запрос.СуммаСумма на Сумма
А итоги считай уже вручную,
СуммаИтого=СуммаИтого+Сумма;
т.е.
СуммаИтого=0;
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
Сумма=Запрос.СуммаСумма;
Если Запрос.ТекущийДокумент.Вид()="ВозвратОтПокупателя" тогда
Сумма=-Запрос.СуммаСумма ;
КонецЕсли;
СуммаИтого=СуммаИтого+Сумма;
Таб.ВывестиСекцию("Номенклатура");
КонецЦикла;
КонецЦикла;
> // выводятся остатки
> |Количество1 = Регистр.ОстаткиТМЦ.Количество;
> |Функция КоличествоНачОст = НачОст(Количество1);
> |Функция КоличествоКонОст = КонОст(Количество1);
А это тебе зачем?
-------------------------------------------------------
> После редактирования выше запроса что
> неполучилось:
> 1)время документа неверное показывает (00:00:19)у
> всех одинаковое!
Должно быть правильное :-/ Или попробуй воспользоваться методом для документа ПолучитьВремя();
> 2)ВидОперации по продаже показывает, по
> ВозвратуОтПокупателя пустая строка?
Посмотри в отладчике значение у документа реквизита КодОперации при возврате.
> 3)Одна лишняя строка остается кот. показывает
> итоги по документу (получается группировкой по
> документу).
Ну так не выводи её раз лишняя и всё, т.е. убери строку
Таб.ВывестиСекцию("ТекущийДокумент");
или выводи её только при первом обходе этой группировки(установив счётчик обхода)
> 4)Надо кол-во и Сумму по возвратуОтПокупателя
> как-то со знаком минус сделать, а то Итоги
> неверные получаются.
Если перебираешь суммы по документам реализации и возврата, в модуле так и пропиши:
Сумма=Запрос.СуммаСумма;
Если Запрос.ТекущийДокумент.Вид()="ВозвратОтПокупателя" тогда
Сумма=-Запрос.СуммаСумма ;
КонецЕсли;
И в таблице исправь Запрос.СуммаСумма на Сумма
А итоги считай уже вручную,
СуммаИтого=СуммаИтого+Сумма;
т.е.
СуммаИтого=0;
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
Сумма=Запрос.СуммаСумма;
Если Запрос.ТекущийДокумент.Вид()="ВозвратОтПокупателя" тогда
Сумма=-Запрос.СуммаСумма ;
КонецЕсли;
СуммаИтого=СуммаИтого+Сумма;
Таб.ВывестиСекцию("Номенклатура");
КонецЦикла;
КонецЦикла;
> // выводятся остатки
> |Количество1 = Регистр.ОстаткиТМЦ.Количество;
> |Функция КоличествоНачОст = НачОст(Количество1);
> |Функция КоличествоКонОст = КонОст(Количество1);
А это тебе зачем?
Vladko Написал:
> > 4)Надо кол-во и Сумму по
> возвратуОтПокупателя
> > как-то со знаком минус сделать, а то Итоги
> > неверные получаются.
> Если перебираешь суммы по документам реализации и
> возврата, в модуле так и пропиши:
>
> А итоги считай уже вручную,
> СуммаИтого=СуммаИтого+Сумма;
> т.е.
> СуммаИтого=0;
> Пока Запрос.Группировка(1) = 1 Цикл
> Пока Запрос.Группировка(2) = 1 Цикл
> Сумма=Запрос.СуммаСумма;
> Если
> Запрос.ТекущийДокумент.Вид()="ВозвратОтПокупателя"
> тогда
> Сумма=-Запрос.СуммаСумма ;
> КонецЕсли;
> СуммаИтого=СуммаИтого+Сумма;
> Таб.ВывестиСекцию("Номенклатура");
> КонецЦикла;
> КонецЦикла;
>
Зачем так сложно? Ведь в первоначальном запросе было две переменных: СуммаСумма - продажи, СуммаВСумма - возвраты.
Соответсвенно СуммаИтого = Запрос.СуммаСумма - Запрос.СуммаВСумма
> > 4)Надо кол-во и Сумму по
> возвратуОтПокупателя
> > как-то со знаком минус сделать, а то Итоги
> > неверные получаются.
> Если перебираешь суммы по документам реализации и
> возврата, в модуле так и пропиши:
>
> А итоги считай уже вручную,
> СуммаИтого=СуммаИтого+Сумма;
> т.е.
> СуммаИтого=0;
> Пока Запрос.Группировка(1) = 1 Цикл
> Пока Запрос.Группировка(2) = 1 Цикл
> Сумма=Запрос.СуммаСумма;
> Если
> Запрос.ТекущийДокумент.Вид()="ВозвратОтПокупателя"
> тогда
> Сумма=-Запрос.СуммаСумма ;
> КонецЕсли;
> СуммаИтого=СуммаИтого+Сумма;
> Таб.ВывестиСекцию("Номенклатура");
> КонецЦикла;
> КонецЦикла;
>
Зачем так сложно? Ведь в первоначальном запросе было две переменных: СуммаСумма - продажи, СуммаВСумма - возвраты.
Соответсвенно СуммаИтого = Запрос.СуммаСумма - Запрос.СуммаВСумма
Группировка Документ;
Группировка СтрокаДокумента;
..
читаем ЖКК
..
особенно втыкнуло
|Функция ЦенаСумма = Сумма(Цена);
..
юзай запрос по регистру - и будет счастье.
и кардинальный вопрос: какой смысл брать в выборку и проведенные и непроведенные доки? галиматья получится..
Группировка СтрокаДокумента;
..
читаем ЖКК
..
особенно втыкнуло
|Функция ЦенаСумма = Сумма(Цена);
..
юзай запрос по регистру - и будет счастье.
и кардинальный вопрос: какой смысл брать в выборку и проведенные и непроведенные доки? галиматья получится..
Группировка <?> Упорядочить по ;
Синтаксис:
Группировка <ИмяГруппировки>|<ПредопредГруппировка> [Упорядочить по <КонкретизацГруппировки>, ...][Без Упорядочивания][Без Групп][Все [ВошедшиеВЗапрос]];
Англоязычный синоним:
Group <ИмяГруппировки>|<ПредопредГруппировка> [Order By КонкретизацГруппировки, ...][Without Groups][All [IncludedInQuery]];
Назначение:
Установить порядок выборки информации.
Параметры:
<ИмяГруппировки> - имя внутренней переменной, задающей группировку;
<ПредопредГруппировка> - ключевое слово одной из встроенных группировок;
<КонкретизацГруппировки> - конкретизация переменной <ИмяГруппировки>, задающая порядок групп.
Ключевые слова:
Упорядочить по - параметры, следующие за данным ключевым словом, определяют упорядочивание строк в группировке.
Без Упорядочивания - необязательное добавочное ключевое слово, которое преследует цель уменьшения времени формирования запроса, при условии, что ни упорядочивание, ни значения упорядочивания при использовании данного запроса не нужны.
!!!! внимание !!!!
Без Групп - группы справочника не выводятся в запрос (для группировки по справочнику);
!!!! конец вниманию !!!
Все - в запрос выводятся все значения, и нулевые тоже (используется для группировок по справочникам и временных группировок).
ВошедшиеВЗапрос - уточняет предыдущее ключевое слово 'Все'. Использование данного слова подразумевает, что в каждую строку запроса будут включены значения данных (в том числе нулевые), для которых есть ненулевое значение хотя бы в одной строке запроса.
Замечание:
Предопределенные группировки:
Документ (Document) - позволяет детализацию до документа;
СтрокаДокумента (DocumentLine) - позволяет детализацию до строки документа;
ПериодЖурнала (JournalPeriod) - группировка по времени ввода записи журнала расчетов или по времени ее действия.
Группировки по дате:
День (Day);
Неделя (Week);
Месяц (Month);
Квартал (Quarter);
Год (Year).
Подробнее см. в документации, глава ''Язык Генерации Запросов''
Синтаксис:
Группировка <ИмяГруппировки>|<ПредопредГруппировка> [Упорядочить по <КонкретизацГруппировки>, ...][Без Упорядочивания][Без Групп][Все [ВошедшиеВЗапрос]];
Англоязычный синоним:
Group <ИмяГруппировки>|<ПредопредГруппировка> [Order By КонкретизацГруппировки, ...][Without Groups][All [IncludedInQuery]];
Назначение:
Установить порядок выборки информации.
Параметры:
<ИмяГруппировки> - имя внутренней переменной, задающей группировку;
<ПредопредГруппировка> - ключевое слово одной из встроенных группировок;
<КонкретизацГруппировки> - конкретизация переменной <ИмяГруппировки>, задающая порядок групп.
Ключевые слова:
Упорядочить по - параметры, следующие за данным ключевым словом, определяют упорядочивание строк в группировке.
Без Упорядочивания - необязательное добавочное ключевое слово, которое преследует цель уменьшения времени формирования запроса, при условии, что ни упорядочивание, ни значения упорядочивания при использовании данного запроса не нужны.
!!!! внимание !!!!
Без Групп - группы справочника не выводятся в запрос (для группировки по справочнику);
!!!! конец вниманию !!!
Все - в запрос выводятся все значения, и нулевые тоже (используется для группировок по справочникам и временных группировок).
ВошедшиеВЗапрос - уточняет предыдущее ключевое слово 'Все'. Использование данного слова подразумевает, что в каждую строку запроса будут включены значения данных (в том числе нулевые), для которых есть ненулевое значение хотя бы в одной строке запроса.
Замечание:
Предопределенные группировки:
Документ (Document) - позволяет детализацию до документа;
СтрокаДокумента (DocumentLine) - позволяет детализацию до строки документа;
ПериодЖурнала (JournalPeriod) - группировка по времени ввода записи журнала расчетов или по времени ее действия.
Группировки по дате:
День (Day);
Неделя (Week);
Месяц (Month);
Квартал (Quarter);
Год (Year).
Подробнее см. в документации, глава ''Язык Генерации Запросов''
led:
|Группировка Номенклатура упорядочить по Номенклатура.Наименование, Номенклатура.Артикул, КоличествоСумма, СуммаСумма БЕЗ ГРУПП;
тогда и не будут выводиться группы номенклатуры
Сhe Burashka:
>вопрос: а откуда у тебя в документе в качестве номенклатуры
>используется группа?
У него и не используются группы, ведь если не сказать в запросе, что без групп, то всегда группы номенклатуры будут выводиться :-/
|Группировка Номенклатура упорядочить по Номенклатура.Наименование, Номенклатура.Артикул, КоличествоСумма, СуммаСумма БЕЗ ГРУПП;
тогда и не будут выводиться группы номенклатуры
Сhe Burashka:
>вопрос: а откуда у тебя в документе в качестве номенклатуры
>используется группа?
У него и не используются группы, ведь если не сказать в запросе, что без групп, то всегда группы номенклатуры будут выводиться :-/
О ужас...
Попробуй такой текст запроса:
Хотелось бы получить общую постановку задачу. ИМХО код очень кривой и не понятно в какую сторону его править.
Попробуй такой текст запроса:
Код |
---|
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ТекущийДокумент = Документ.РеализацияРозница.ТекущийДокумент, Документ.ВозвратОтПокупателя.ТекущийДокумент;
|Номенклатура = Документ.РеализацияРозница.Номенклатура, Документ.ВозвратОтПокупателя.Номенклатура;
|Количество = Документ.РеализацияРозница.Количество;
|Цена = Документ.РеализацияРозница.Цена;
|Сумма = Документ.РеализацияРозница.Сумма;
|КоличествоВ = Документ.ВозвратОтПокупателя.Количество;
|ЦенаВ = Документ.ВозвратОтПокупателя.Цена;
|СуммаВ = Документ.ВозвратОтПокупателя.Сумма;
|Функция КоличествоВСумма = Сумма(КоличествоВ);
|Функция СуммаВСумма = Сумма(СуммаВ);
|Функция ЦенаВСумма = Сумма(ЦенаВ);
|Функция ЦенаСумма = Сумма(Цена);
|Функция КоличествоСумма = Сумма(Количество);
|Функция СуммаСумма = Сумма(Сумма);
|Группировка ТекущийДокумент;
|Группировка Номенклатура без групп;
|"//}}ЗАПРОС
; Показать полностью |
Хотелось бы получить общую постановку задачу. ИМХО код очень кривой и не понятно в какую сторону его править.
Во первых 60 строк, во вторых я в 1с первый раз в жизни залез 22 декабря 06г. пытался сделать отчет с помощью конструктора отчетов, не получилось, я залез в интернет начал искать что-нибудь похожее, но не нашел. Тогда я пошел к знакомому он работает администратором по 1с, я объяснил ему задачу,он сказал через два дня будет готово, наступило 28 декабря, звоню ему он говорит что он сделал, но не доконца и больше не сможет мне помочь, тогда я понял что помощи ждать не от кого и вечером я наткнулся на этот форум и решил написать от безнадёги( см. проблемы в первом моем послании), я думал врят ли кто ответит, НО нашлись добрые люди, спасибо ИМ. Да пишу ТАК коряво, но пытаюсь Сам что-то понять, чтобы потом было не коряво. В университете изучал Фортран, бейсик, Ассемблер. А с базами данных никогда не сталкивался. Но я всё равно сделаю отчёт, чисто из-за принципа. А код отчета для профи простятский ИМХО, и грех не помочь начинающему. А Форум для того и создан чтобы люди общались и делились своими проблемами и успехами.
Большое Спасибо Vladko за советы! Последнюю проблемму решил итоги работают, вопреки опасениям Che BuraShka, проверял надежно. Проблему 3) допер сам, просто не вывожу :).
Что осталось:
1)Проблема с правильным временем. Группировка по ТекущийДокумент.ВремяДок выводит какое-то странное время 00:00:19.
Метод ПолучитьВремя(), попытки его вставить (как пример из книги по описанию языка) одна ругань. Куда его вставлять?
2) КодОперации если пишешь первым РеализацияРозница,то
>|ТекущийДокумент = Документ.РеализацияРозница.ТекущийДокумент, Документ.ВозвратОтПокупателя.ТекущийДокумент;
Код Операции выводится только по РеализацияРозница, по возврату пустая строка
Если пишешь первым ВозвратОтПокупателя, то
>|ТекущийДокумент = Документ.ВозвратОтПокупателя.ТекущийДокумент, Документ.РеализацияРозница.ТекущийДокумент;
Код Операции выводится только по ВозвратОтПокупателя, по РеализацияРозница пустая строка.
Другие способы вывода я не нашел...
Посоветуйте что-нибудь...
// выводятся остатки
> |Количество1 = Регистр.ОстаткиТМЦ.Количество;
> |Функция КоличествоНачОст = НачОст(Количество1);
> |Функция КоличествоКонОст = КонОст(Количество1);
>А это тебе зачем?
А это я вывожу отдельно остатки товара на складе на начПериода и на КонецПериода в таблицу.
Что осталось:
1)Проблема с правильным временем. Группировка по ТекущийДокумент.ВремяДок выводит какое-то странное время 00:00:19.
Метод ПолучитьВремя(), попытки его вставить (как пример из книги по описанию языка) одна ругань. Куда его вставлять?
2) КодОперации если пишешь первым РеализацияРозница,то
>|ТекущийДокумент = Документ.РеализацияРозница.ТекущийДокумент, Документ.ВозвратОтПокупателя.ТекущийДокумент;
Код Операции выводится только по РеализацияРозница, по возврату пустая строка
Если пишешь первым ВозвратОтПокупателя, то
>|ТекущийДокумент = Документ.ВозвратОтПокупателя.ТекущийДокумент, Документ.РеализацияРозница.ТекущийДокумент;
Код Операции выводится только по ВозвратОтПокупателя, по РеализацияРозница пустая строка.
Другие способы вывода я не нашел...
Посоветуйте что-нибудь...
// выводятся остатки
> |Количество1 = Регистр.ОстаткиТМЦ.Количество;
> |Функция КоличествоНачОст = НачОст(Количество1);
> |Функция КоличествоКонОст = КонОст(Количество1);
>А это тебе зачем?
А это я вывожу отдельно остатки товара на складе на начПериода и на КонецПериода в таблицу.
led Написал:
-------------------------------------------------------
> Большое Спасибо Vladko за советы! Последнюю
> проблемму решил итоги работают, вопреки опасениям
> Che BuraShka, проверял надежно. Проблему 3) допер
> сам, просто не вывожу .
> Что осталось:
> 1)Проблема с правильным временем. Группировка по
> ТекущийДокумент.ВремяДок выводит какое-то странное
> время 00:00:19.
> Метод ПолучитьВремя(), попытки его вставить (как
> пример из книги по описанию языка) одна ругань.
> Куда его вставлять?
Попробуй:
Док=СоздатьОбъект("Документ");
Часы=0;Минуты=0;Сек=0;
Док.НайтиДокумент(Запрос.ТекущийДокумент);//не обязательно
Док.ПолучитьВремя(Часы,Минуты,Сек);
Сообщить("У "+Док.ТекущийДокумент()+" время "+Часы+":"+Минуты+":"+Сек); //для проверки срабатывания метода
> 2) КодОперации если пишешь первым
...
> Другие способы вывода я не нашел...
> Посоветуйте что-нибудь...
Попробуй Код операции вывести как:
Запрос.ТекущийДокумент.КодОперации;
-------------------------------------------------------
> Большое Спасибо Vladko за советы! Последнюю
> проблемму решил итоги работают, вопреки опасениям
> Che BuraShka, проверял надежно. Проблему 3) допер
> сам, просто не вывожу .
> Что осталось:
> 1)Проблема с правильным временем. Группировка по
> ТекущийДокумент.ВремяДок выводит какое-то странное
> время 00:00:19.
> Метод ПолучитьВремя(), попытки его вставить (как
> пример из книги по описанию языка) одна ругань.
> Куда его вставлять?
Попробуй:
Док=СоздатьОбъект("Документ");
Часы=0;Минуты=0;Сек=0;
Док.НайтиДокумент(Запрос.ТекущийДокумент);//не обязательно
Док.ПолучитьВремя(Часы,Минуты,Сек);
Сообщить("У "+Док.ТекущийДокумент()+" время "+Часы+":"+Минуты+":"+Сек); //для проверки срабатывания метода
> 2) КодОперации если пишешь первым
...
> Другие способы вывода я не нашел...
> Посоветуйте что-нибудь...
Попробуй Код операции вывести как:
Запрос.ТекущийДокумент.КодОперации;
Vladko Написал:
-------------------------------------------------------
> Попробуй:
> Док=СоздатьОбъект("Документ");
> Часы=0;Минуты=0;Сек=0;
> Док.НайтиДокумент(Запрос.ТекущийДокумент);//не
> обязательно
> Док.ПолучитьВремя(Часы,Минуты,Сек);
> Сообщить("У "+Док.ТекущийДокумент()+" время
> "+Часы+":"+Минуты+":"+Сек); //для проверки
> срабатывания метода
Не получится?
-------------------------------------------------------
> Попробуй:
> Док=СоздатьОбъект("Документ");
> Часы=0;Минуты=0;Сек=0;
> Док.НайтиДокумент(Запрос.ТекущийДокумент);//не
> обязательно
> Док.ПолучитьВремя(Часы,Минуты,Сек);
> Сообщить("У "+Док.ТекущийДокумент()+" время
> "+Часы+":"+Минуты+":"+Сек); //для проверки
> срабатывания метода
Код |
---|
ВремяДок = Запрос.ТекущийДокумент.ПолучитьВремя();
Показать полностью |
Не получится?
led Написал:
-------------------------------------------------------
> // выводятся остатки
> > |Количество1 = Регистр.ОстаткиТМЦ.Количество;
> > |Функция КоличествоНачОст = НачОст(Количество1);
> > |Функция КоличествоКонОст = КонОст(Количество1);
> >А это тебе зачем?
> А это я вывожу отдельно остатки товара на складе на начПериода и на КонецПериода в таблицу.
>
Из-за этой части текста запроса у тебя проблема #3. Ты, led, вероятно взрослый чел, раз там мужественно преодолеваешь сложности, которые сам себе создаешь.
Я посоветую рассматривемый код вынести в отдельный запрос, ведь он никак не связан с остальной частью основного запроса.
-------------------------------------------------------
> // выводятся остатки
> > |Количество1 = Регистр.ОстаткиТМЦ.Количество;
> > |Функция КоличествоНачОст = НачОст(Количество1);
> > |Функция КоличествоКонОст = КонОст(Количество1);
> >А это тебе зачем?
> А это я вывожу отдельно остатки товара на складе на начПериода и на КонецПериода в таблицу.
>
Из-за этой части текста запроса у тебя проблема #3. Ты, led, вероятно взрослый чел, раз там мужественно преодолеваешь сложности, которые сам себе создаешь.
Я посоветую рассматривемый код вынести в отдельный запрос, ведь он никак не связан с остальной частью основного запроса.
УУУУРРРРААААА заработало... :) ВСЕМ СПАСИБО ОГРОМНОЕ.
А теперь цифры...
Первое место получает Poppy!!! 6 сообщений и ПЕРВЫЙ откликнулся на помощь(объяктивная составляющая), 4 из них мне по настоящему помогли, КПД считаем в уме :) (субъективная сост-щая).
Второе место VLADKO 4 сообщения, 2 (субъективно) из них очень мне помогли СПАСИБО!
Третье Che Burachka 4 сообщения, молодец!! не бросишь друга в беде, одно из них мне здорово помогло(субективная).
Четвертое O-Planet, 2 сообщения спасибо, судя по имени Програмист планетарного масштаба, очень краток и по делу.....(субъективно)
Считаю Заседание , т.е. тема закрыта. Большое спасибо ВСЕМ :)
А теперь цифры...
Первое место получает Poppy!!! 6 сообщений и ПЕРВЫЙ откликнулся на помощь(объяктивная составляющая), 4 из них мне по настоящему помогли, КПД считаем в уме :) (субъективная сост-щая).
Второе место VLADKO 4 сообщения, 2 (субъективно) из них очень мне помогли СПАСИБО!
Третье Che Burachka 4 сообщения, молодец!! не бросишь друга в беде, одно из них мне здорово помогло(субективная).
Четвертое O-Planet, 2 сообщения спасибо, судя по имени Програмист планетарного масштаба, очень краток и по делу.....(субъективно)
Считаю Заседание , т.е. тема закрыта. Большое спасибо ВСЕМ :)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот