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

1. user1008893 18.02.19 08:08 Сейчас в теме
Так,у меня есть расписание отгрузок. Когда нажимаю на пересечение контрагента и день,то выводится новый документ с заказами,которые поедут в этот день. А если пользователь удалил какой либо документ,то этот заказ должен выпадать на следующий день и тд. Подскажите,как перебирать заказы.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
	|	ЗаказПокупателя.Контрагент КАК Контрагент,
	|	ЗаказПокупателя.ДатаИсполнения КАК ДатаИсполнения,
	|	ЗаказПокупателя.Контрагент КАК Количество,
	|	СУММА(ЗаказПокупателяТЧ.Номенклатура.Вес * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Вес,
	|	СУММА(ЗаказПокупателяТЧ.Номенклатура.Объем * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Объем,
	|	СУММА(ЗаказПокупателяТЧ.Сумма) КАК Сумма
	|{ВЫБРАТЬ
	|	ЗаказПокупателя.*,
	|	Контрагент.*}
	|ИЗ
	|	Документ.ЗаказПокупателя КАК ЗаказПокупателя
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыОбеспеченияЗаказов КАК СтатусыОбеспеченияЗаказов
	|		ПО (СтатусыОбеспеченияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
	|		ПО (СтатусыВыполненияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ТЧ КАК ЗаказПокупателяТЧ
	|		ПО ЗаказПокупателя.ТЧ.Ссылка = ЗаказПокупателяТЧ.Ссылка
	|ГДЕ
	|	ЗаказПокупателя.Проведен = ИСТИНА
	|	И СтатусыВыполненияЗаказов.Статус.Наименование <> ""Оформлен""
	|	И СтатусыВыполненияЗаказов.Статус.Наименование <> ""Выполнен""
	|	И СтатусыВыполненияЗаказов.Статус.Наименование <> ""Не оформлен""
	|	И СтатусыОбеспеченияЗаказов.Статус.Наименование <> ""Не обеспечен""
	|	И ЗаказПокупателя.ДатаИсполнения <= &СчетчикМесяца
	|	И ЗаказПокупателя.Контрагент = &Контрагент
	|
	|СГРУППИРОВАТЬ ПО
	|	ЗаказПокупателя.Ссылка,
	|	ЗаказПокупателя.Контрагент,
	|	ЗаказПокупателя.ДатаИсполнения,
	|	ЗаказПокупателя.Контрагент
	|АВТОУПОРЯДОЧИВАНИЕ";
	Запрос.УстановитьПараметр("СчетчикМесяца",День);
	Запрос.УстановитьПараметр("ДатаИсполнения",ДатаИсполнения);
	Запрос.УстановитьПараметр("Контрагент",Контрагент);
	ЭлементыОтбора=Новый Структура;
	_ТаблЗаказы = Запрос.Выполнить().Выгрузить();
	
	ДокумОтгрузок=Документы.ПС_ЗаказыДляОтгрузки;
	
	 
	ЗапросДокум = Новый Запрос;
    ЗапросДокум.Текст = "ВЫБРАТЬ
                        |	ПС_ЗаказыДляОтгрузки.Ссылка
                        |ИЗ
                        |	Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
                        |ГДЕ
                        |	ПС_ЗаказыДляОтгрузки.ДеньОтгрузки = &День
                        |	И ПС_ЗаказыДляОтгрузки.Контрагент = &Контрагент
                        |	И НЕ ПС_ЗаказыДляОтгрузки.ПометкаУдаления";
	ЗапросДокум.УстановитьПараметр("День",День);
	ЗапросДокум.УстановитьПараметр("Контрагент",Контрагент);
	 РезультатЗапроса = ЗапросДокум.Выполнить();	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Количество()>0 Тогда
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	док=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();	
	Форма = Док.ПолучитьФорму("ФормаДокумента",Док);	
	Форма.Открыть();	
	КонецЦикла;	 
Иначе		 
		 
НовДок=Документы.ПС_ЗаказыДляОтгрузки.ПолучитьФормуНовогоДокумента();
НовДок.Дата=ТекущаяДата();
НовДок.ДеньОтгрузки=День;
НовДок.Контрагент=Контрагент;
	Для Каждого СтрокаТаблЗаказы Из _ТаблЗаказы Цикл
		СтрокаТЧ =НовДок.Заказы.Добавить();
		СтрокаТЧ.Заказ  = СтрокаТаблЗаказы.ЗаказПокупателя;
		СтрокаТЧ.Вес=СтрокаТаблЗаказы.Вес;	
		СтрокаТЧ.Объем=СтрокаТаблЗаказы.Объем;
		СтрокаТЧ.Сумма=СтрокаТаблЗаказы.Сумма;	
	КонецЦикла;
	НовДок.Открыть();
	КонецЕсли;
Отказ=Истина;
КонецПроцедуры
Показать

сейчас вот так
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alxarz 31 18.02.19 08:32 Сейчас в теме
(1)
А если пользователь удалил какой либо документ,то этот заказ должен выпадать на следующий день и тд. Подскажите,как перебирать заказы.
какой документ удалил - заказ или отгрузку? начать с того, что получить запросом все заказы, которые не привязаны к отгрузке...
3. user1008893 18.02.19 08:36 Сейчас в теме
4. user1008893 18.02.19 09:08 Сейчас в теме
(2)
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
	ЗаказПокупателя.Контрагент КАК Контрагент,
	ЗаказПокупателя.ДатаИсполнения КАК ДатаИсполнения,
	ЗаказПокупателя.Контрагент КАК Количество,
	СУММА(ЗаказПокупателяТЧ.Номенклатура.Вес * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Вес,
	СУММА(ЗаказПокупателяТЧ.Номенклатура.Объем * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Объем,
	СУММА(ЗаказПокупателяТЧ.Сумма) КАК Сумма
{ВЫБРАТЬ
	ЗаказПокупателя.*,
	Контрагент.*}
ИЗ
	Документ.ЗаказПокупателя КАК ЗаказПокупателя
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыОбеспеченияЗаказов КАК СтатусыОбеспеченияЗаказов
		ПО (СтатусыОбеспеченияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
		ПО (СтатусыВыполненияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ТЧ КАК ЗаказПокупателяТЧ
		ПО ЗаказПокупателя.ТЧ.Ссылка = ЗаказПокупателяТЧ.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
			ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка
		ПО ПС_ЗаказыДляОтгрузкиЗаказы.Заказ = ЗаказПокупателя.Ссылка
ГДЕ
	ЗаказПокупателя.Проведен = ИСТИНА
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Оформлен"
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Выполнен"
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Не оформлен"
	И СтатусыОбеспеченияЗаказов.Статус.Наименование <> "Не обеспечен"
	И ЗаказПокупателя.ДатаИсполнения <= &СчетчикМесяца
	И ЗаказПокупателя.Контрагент = &Контрагент
	И ПС_ЗаказыДляОтгрузки.Контрагент = &Контрагент
	И НЕ ЗаказПокупателя.ПометкаУдаления

СГРУППИРОВАТЬ ПО
	ЗаказПокупателя.Ссылка,
	ЗаказПокупателя.Контрагент,
	ЗаказПокупателя.ДатаИсполнения,
	ЗаказПокупателя.Контрагент
АВТОУПОРЯДОЧИВАНИЕ
Показать



Так получила заказы,которые есть в документе отгрузки,а как получить те которых нет??
5. alxarz 31 18.02.19 09:29 Сейчас в теме
(4)
Так получила заказы,которые есть в документе отгрузки,а как получить те которых нет??

как-то так?
выбрать заказы
из
все_заказы
где
заказ не в (выбрать заказы из все_заказы_в_тч)
6. user1008893 18.02.19 10:19 Сейчас в теме
(5)
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
	ЗаказПокупателя.Контрагент КАК Контрагент,
	ЗаказПокупателя.ДатаИсполнения КАК ДатаИсполнения,
	ЗаказПокупателя.Контрагент КАК Количество,
	СУММА(ЗаказПокупателяТЧ.Номенклатура.Вес * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Вес,
	СУММА(ЗаказПокупателяТЧ.Номенклатура.Объем * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Объем,
	СУММА(ЗаказПокупателяТЧ.Сумма) КАК Сумма
{ВЫБРАТЬ
	ЗаказПокупателя.*,
	Контрагент.*}
ИЗ
	Документ.ЗаказПокупателя КАК ЗаказПокупателя
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыОбеспеченияЗаказов КАК СтатусыОбеспеченияЗаказов
		ПО (СтатусыОбеспеченияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
		ПО (СтатусыВыполненияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ТЧ КАК ЗаказПокупателяТЧ
		ПО ЗаказПокупателя.ТЧ.Ссылка = ЗаказПокупателяТЧ.Ссылка,
	(ВЫБРАТЬ
		ПС_ЗаказыДляОтгрузкиЗаказы.Заказ КАК Заказ,
		ПС_ЗаказыДляОтгрузки.Контрагент КАК Контрагент
	ИЗ
		Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
			ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка) КАК ЗаказыОтгрузки
ГДЕ
	ЗаказПокупателя.Проведен = ИСТИНА
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Оформлен"
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Выполнен"
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Не оформлен"
	И СтатусыОбеспеченияЗаказов.Статус.Наименование <> "Не обеспечен"
	И ЗаказПокупателя.ДатаИсполнения <= &СчетчикМесяца
	И ЗаказПокупателя.Контрагент = &Контрагент
	И НЕ ЗаказПокупателя.ПометкаУдаления
	И  ЗаказПокупателя.Ссылка НЕ В (ЗаказыОтгрузки.Заказ)

СГРУППИРОВАТЬ ПО
	ЗаказПокупателя.Ссылка,
	ЗаказПокупателя.Контрагент,
	ЗаказПокупателя.ДатаИсполнения,
	ЗаказПокупателя.Контрагент
АВТОУПОРЯДОЧИВАНИЕ
Показать



Что то не получается,выводит все заказы
7. alxarz 31 18.02.19 12:19 Сейчас в теме
(6) потому что не правильный запрос....
ВЫБРАТЬ
	ЗаказПокупателя.Ссылка
ИЗ
	Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
	ЗаказПокупателя.Ссылка НЕ В (
ВЫБРАТЬ
	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ
ИЗ
	Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы)
Показать
user1008893; +1 Ответить
8. user1008893 18.02.19 12:51 Сейчас в теме
(7)вообще ничего не выводит
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
	ЗаказПокупателя.Контрагент КАК Контрагент,
	ЗаказПокупателя.ДатаИсполнения КАК ДатаИсполнения,
	ЗаказПокупателя.Контрагент КАК Количество,
	СУММА(ЗаказПокупателяТЧ.Номенклатура.Вес * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Вес,
	СУММА(ЗаказПокупателяТЧ.Номенклатура.Объем * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Объем,
	СУММА(ЗаказПокупателяТЧ.Сумма) КАК Сумма
{ВЫБРАТЬ
	ЗаказПокупателя.*,
	Контрагент.*}
ИЗ
	Документ.ЗаказПокупателя КАК ЗаказПокупателя
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыОбеспеченияЗаказов КАК СтатусыОбеспеченияЗаказов
		ПО (СтатусыОбеспеченияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
		ПО (СтатусыВыполненияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ТЧ КАК ЗаказПокупателяТЧ
		ПО ЗаказПокупателя.ТЧ.Ссылка = ЗаказПокупателяТЧ.Ссылка
ГДЕ
	ЗаказПокупателя.Проведен = ИСТИНА
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Оформлен"
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Выполнен"
	И СтатусыВыполненияЗаказов.Статус.Наименование <> "Не оформлен"
	И СтатусыОбеспеченияЗаказов.Статус.Наименование <> "Не обеспечен"
	И ЗаказПокупателя.ДатаИсполнения <= &СчетчикМесяца
	И ЗаказПокупателя.Контрагент = &Контрагент
	И НЕ ЗаказПокупателя.ПометкаУдаления
	И ЗаказПокупателя.Ссылка НЕ В
				(ВЫБРАТЬ
					ПС_ЗаказыДляОтгрузкиЗаказы.Заказ КАК Заказ
				ИЗ
					Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы)

СГРУППИРОВАТЬ ПО
	ЗаказПокупателя.Ссылка,
	ЗаказПокупателя.Контрагент,
	ЗаказПокупателя.ДатаИсполнения,
	ЗаказПокупателя.Контрагент
АВТОУПОРЯДОЧИВАНИЕ
Показать
9. Release 18.02.19 13:00 Сейчас в теме
(8) Закоментируйте эти строки:
    И СтатусыВыполненияЗаказов.Статус.Наименование <> "Оформлен"
    И СтатусыВыполненияЗаказов.Статус.Наименование <> "Выполнен"
    И СтатусыВыполненияЗаказов.Статус.Наименование <> "Не оформлен"
    И СтатусыОбеспеченияЗаказов.Статус.Наименование <> "Не обеспечен"
    И ЗаказПокупателя.ДатаИсполнения <= &СчетчикМесяца
    И ЗаказПокупателя.Контрагент = &Контрагент
    И НЕ ЗаказПокупателя.ПометкаУдаления

и проверьте результат.

Лучше всего для отладки запросов и использовать "Консоль запросов".
10. user1008893 18.02.19 13:09 Сейчас в теме
(9)я через консоль и делаю
все получилось,спасибо
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
    ЗаказПокупателя.Контрагент КАК Контрагент,
    ЗаказПокупателя.ДатаИсполнения КАК ДатаИсполнения,
       СУММА(ЗаказПокупателяТЧ.Номенклатура.Вес * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Вес,
    СУММА(ЗаказПокупателяТЧ.Номенклатура.Объем * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Объем,
    СУММА(ЗаказПокупателяТЧ.Сумма) КАК Сумма
{ВЫБРАТЬ
    ЗаказПокупателя.*,
    Контрагент.*}
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыОбеспеченияЗаказов КАК СтатусыОбеспеченияЗаказов
        ПО (СтатусыОбеспеченияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
        ПО (СтатусыВыполненияЗаказов.Заказ = ЗаказПокупателя.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ТЧ КАК ЗаказПокупателяТЧ
        ПО ЗаказПокупателя.ТЧ.Ссылка = ЗаказПокупателяТЧ.Ссылка
ГДЕ
    ЗаказПокупателя.Проведен = ИСТИНА
    И СтатусыВыполненияЗаказов.Статус.Наименование <> "Оформлен"
    И СтатусыВыполненияЗаказов.Статус.Наименование <> "Выполнен"
    И СтатусыВыполненияЗаказов.Статус.Наименование <> "Не оформлен"
    И СтатусыОбеспеченияЗаказов.Статус.Наименование <> "Не обеспечен"
    И ЗаказПокупателя.ДатаИсполнения <= &СчетчикМесяца
    И ЗаказПокупателя.Контрагент = &Контрагент
    И НЕ ЗаказПокупателя.ПометкаУдаления
    И ЗаказПокупателя.Ссылка НЕ В
                (ВЫБРАТЬ
	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ
	ИЗ
	Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
		ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка
ГДЕ
	НЕ ПС_ЗаказыДляОтгрузки.ПометкаУдаления
	)

СГРУППИРОВАТЬ ПО
    ЗаказПокупателя.Ссылка,
    ЗаказПокупателя.Контрагент,
    ЗаказПокупателя.ДатаИсполнения,
    ЗаказПокупателя.Контрагент
АВТОУПОРЯДОЧИВАНИЕ
Показать
12. Release 18.02.19 13:13 Сейчас в теме
(10) Не понимаю, зачем вам левое соединение в условии?
	Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
		ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка
13. user1008893 18.02.19 13:18 Сейчас в теме
(12)а что оно мешает? Без него не работает ГДЕ
14. Release 18.02.19 13:22 Сейчас в теме
(13)В ГДЕ без соединения можно прописать:
НЕ ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка.ПометкаУдаления

Это не изменит скорость выполнения, но улучшит читаемость.
user1008893; +1 Ответить
15. user1008893 18.02.19 13:24 Сейчас в теме
(12)Можно еще вопрос?
Вот у меня есть форма документа ЗаказыДляОтгрузки. Вот если я ее открываю,то выводятся заказы со всеми данными. А вот если я поменяю заказ покупателя,то данные Вес,Объем и сумма не подставляются. Как это сделать? Думаю в процедуре ЗаказПриИзменении,но как получить заказ который сейчас стоит
Прикрепленные файлы:
16. Release 18.02.19 13:28 Сейчас в теме
(15) Получить ссылку ЭлемнтыФормы.Заказы.ТекущиеДанные.Заказ, считать данные по ссылке, заполнить в ТекущиеДанные.
гаврюша; user1008893; +2 Ответить
17. user1008893 18.02.19 13:30 Сейчас в теме
18. user1008893 18.02.19 13:35 Сейчас в теме
(16)В заказе который получила,надо из тч вывести вес и объем
 СУММА(ЗаказПокупателяТЧ.Номенклатура.Вес * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Вес,
    СУММА(ЗаказПокупателяТЧ.Номенклатура.Объем * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Объем,

вот как в этом запросе
19. Release 18.02.19 13:41 Сейчас в теме
(18) Не понял. Не получается получить данные из ТЧ документа заказа?
У вас же предыдущий запрос получает. Замените условие на "ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = &СсылкаНаДокументЗаказа"
user1008893; +1 Ответить
20. user1008893 18.02.19 13:57 Сейчас в теме
(19)
текЗаказ=ЭлементыФормы.Заказы.ТекущиеДанные.Заказ;
	ЭлементыФормы.Заказы.ТекущиеДанные.Сумма= текЗаказ.СуммаДок;
	ЗапросДанных=Новый Запрос;
	ЗапросДанных="ВЫБРАТЬ
	|	ЗаказПокупателяТЧ.Ссылка,
	|	СУММА(ЗаказПокупателяТЧ.Номенклатура.Вес * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Вес,
	|	СУММА(ЗаказПокупателяТЧ.Номенклатура.Объем * ЗаказПокупателяТЧ.Кол * ЗаказПокупателяТЧ.ЕдИзм.Коэффициент) КАК Объем,
	|	СУММА(ЗаказПокупателяТЧ.Сумма) КАК Сумма
	|ИЗ
	|	Документ.ЗаказПокупателя.ТЧ КАК ЗаказПокупателяТЧ
	|ГДЕ
	|	ЗаказПокупателяТЧ.Ссылка = &текЗаказ
	|
	|СГРУППИРОВАТЬ ПО
	|	ЗаказПокупателяТЧ.Ссылка";
	ЗапросДанных.УстановитьПараметр("текЗаказ",текЗаказ);
	РезультатЗапроса = ЗапросДанных.Выполнить();	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ЭлементыФормы.Заказы.ТекущиеДанные.Вес=ВыборкаДетальныеЗаписи.Вес;
		ЭлементыФормы.Заказы.ТекущиеДанные.Объем=ВыборкаДетальныеЗаписи.Объем;
	КонецЦикла;	 
Показать

что то не пойму
21. Release 18.02.19 14:05 Сейчас в теме
22. user1008893 18.02.19 14:05 Сейчас в теме
(21) Значение не является значением объектного типа (УстановитьПараметр)
ЗапросДанных.УстановитьПараметр("текЗаказ",текЗаказ);
11. alxarz 31 18.02.19 13:10 Сейчас в теме
(8) видимо нет заказов которые не входят в документы отгрузки и со списком ограничений...
И СтатусыВыполненияЗаказов.Статус.Наименование <> "Оформлен"
И СтатусыВыполненияЗаказов.Статус.Наименование <> "Выполнен"
И СтатусыВыполненияЗаказов.Статус.Наименование <> "Не оформлен"
И СтатусыОбеспеченияЗаказов.Статус.Наименование <> "Не обеспечен"

а какой же должен быть статус если с указанными статусами заказы не интересуют?
45. Release 19.02.19 13:17 Сейчас в теме
(4) замените строку:
ВыборкаЗаказы = ВыборкаКонтрагенты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

на
ВыборкаЗаказы = ВыборкаКонтрагенты.Выбрать();

Прошу прощения, сложно набирать длинный код из головы сразу в браузере.
user1008893; +1 Ответить
46. user1008893 19.02.19 13:19 Сейчас в теме
47. user1008893 19.02.19 13:24 Сейчас в теме
(45) _Период не увеличивается
48. Release 19.02.19 13:34 Сейчас в теме
(47) добавьте две строки
    Пока _Период <= _КонПериод Цикл
         Пока Выборка.Следующий() Цикл
            Если НачалоДня(Выборка.Дата) = _Период Тогда
                ВыборкаКонтрагенты = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                
                Пока ВыборкаКонтрагенты.Следующий() Цикл
                    СтрокЗаказов = 0;

                    ВыборкаЗаказы = ВыборкаКонтрагенты.Выбрать();

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

                        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаЗаказы);
                     ТабДок.Вывести(ОбластьСтрока);
                    КонецЦикла;
                КонецЦикла;
            Иначе
                ОбластьСтрока.Параметры.Дата = _Период;

                ТабДок.Вывести(ОбластьСтрока);

                Выборка.Сбросить(); // Добавьте эти строки

                Прервать;
            КонецЕсли;
        КонецЦикла;

        _Период  = КонецДня(_Период) + 1;
    КонецЦикла;
Показать
user1008893; +1 Ответить
49. user1008893 19.02.19 13:36 Сейчас в теме
(48) каждый день один и тот же заказ и 1.02 2019 2 раза выводится
остальное норм
50. Release 19.02.19 13:44 Сейчас в теме
(49) Попробуйте так:
    Пока _Период <= _КонПериод Цикл
         ЕстьЗаказыЗаДень = Ложь;

         Пока Выборка.НайтиСледующий(_Период, "Дата") Цикл
                ЕстьЗаказыЗаДень = Истина;

                ВыборкаКонтрагенты = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                
                Пока ВыборкаКонтрагенты.Следующий() Цикл
                    СтрокЗаказов = 0;

                    ВыборкаЗаказы = ВыборкаКонтрагенты.Выбрать();

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

                        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаЗаказы);
                     ТабДок.Вывести(ОбластьСтрока);
                    КонецЦикла;
                КонецЦикла;
        КонецЦикла;

        Если Не ЕстьЗаказыЗаДень Тогда
                ОбластьСтрока.Параметры.Дата = _Период;

                ТабДок.Вывести(ОбластьСтрока);
         КонецЕсли;

         Выборка.Сбросить();

        _Период  = КонецДня(_Период) + 1;
    КонецЦикла;
Показать
user1008893; +1 Ответить
51. user1008893 19.02.19 13:48 Сейчас в теме
(50) теперь выводится,2 раза 1.02.2019, 4 раза 2.02.2019 -3 заказа разные,а 1 последний повторяется
52. Release 19.02.19 14:07 Сейчас в теме
(51) это странно, визуально не вижу проблемы. Т.к. не вижу исходных данных и результата, сложно сказать, где ошибка.
53. user1008893 19.02.19 14:18 Сейчас в теме
(52)задваивает заказы. У первого должен быть 1 заказ,у 2 -3 заказа
Прикрепленные файлы:
54. Release 19.02.19 14:33 Сейчас в теме
(53) Вы можете выполнить запрос в Консоли запросов и показать его результат здесь. Возможно дело в запросе.
55. user1008893 19.02.19 14:36 Сейчас в теме
(54)
ВЫБРАТЬ
	ПС_ЗаказыДляОтгрузки.Контрагент КАК Контрагент,
	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ КАК Заказ,
	ПС_ЗаказыДляОтгрузкиЗаказы.Вес КАК Вес,
	ПС_ЗаказыДляОтгрузкиЗаказы.Объем КАК Объем,
	ПС_ЗаказыДляОтгрузкиЗаказы.Сумма КАК Сумма,
	ПС_ЗаказыДляОтгрузки.ДеньОтгрузки КАК Дата
ИЗ
	Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
		ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка
ГДЕ
	НЕ ПС_ЗаказыДляОтгрузки.ПометкаУдаления

СГРУППИРОВАТЬ ПО
	ПС_ЗаказыДляОтгрузки.Контрагент,
	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ,
	ПС_ЗаказыДляОтгрузкиЗаказы.Вес,
	ПС_ЗаказыДляОтгрузкиЗаказы.Объем,
	ПС_ЗаказыДляОтгрузкиЗаказы.Сумма,
	ПС_ЗаказыДляОтгрузки.ДеньОтгрузки

УПОРЯДОЧИТЬ ПО
	ПС_ЗаказыДляОтгрузки.ДеньОтгрузки,
	ПС_ЗаказыДляОтгрузки.Контрагент,
	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ
ИТОГИ ПО
	Дата,
	Контрагент
Показать
Прикрепленные файлы:
56. Release 19.02.19 14:45 Сейчас в теме
(55) Похоже с запросом более менее нормально, хотя я бы переписал без соединения
ВЫБРАТЬ
    ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка.Контрагент КАК Контрагент,
    ПС_ЗаказыДляОтгрузкиЗаказы.Заказ КАК Заказ,
    ПС_ЗаказыДляОтгрузкиЗаказы.Вес КАК Вес,
    ПС_ЗаказыДляОтгрузкиЗаказы.Объем КАК Объем,
    ПС_ЗаказыДляОтгрузкиЗаказы.Сумма КАК Сумма,
    ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка.ДеньОтгрузки КАК Дата
ИЗ
    Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
ГДЕ
    НЕ ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка.ПометкаУдаления
Показать

Измените на этот код:
        Если Не ЕстьЗаказыЗаДень Тогда
                ОбластьСтрока.Параметры.Заполнить(Новый Структура("Дата, Контрагент, Заказ, Вес, Объем, Сумма", _Период, NULL, NULL, NULL, NULL, NULL));

                ТабДок.Вывести(ОбластьСтрока);
         КонецЕсли;
user1008893; +1 Ответить
57. user1008893 19.02.19 14:56 Сейчас в теме
(56) так,уже лучше стало,1 контрагент выводится теперь 1 раз,но за ним пустая строка только с датой 1.02.2019. Дальше з раза строка с одним контрагентом,но с разными заказами(это правильно),но + еще одна пустая строка с датой 2.02.2019
58. Release 19.02.19 15:10 Сейчас в теме
(57) Покажите текущий блок цикла:
Пока _Период <= _КонПериод Цикл
    ...
КонецЦикла;
59. user1008893 19.02.19 15:11 Сейчас в теме
(58)
Пока _Период <= _КонПериод Цикл
		ЕстьЗаказыЗаДень = Ложь;
		
		Пока Выборка.НайтиСледующий(_Период, "Дата") Цикл
			ЕстьЗаказыЗаДень = Ложь;
			
			ВыборкаКонтрагенты = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
			Пока ВыборкаКонтрагенты.Следующий() Цикл
				СтрокЗаказов = 0;
				
				ВыборкаЗаказы = ВыборкаКонтрагенты.Выбрать();
				
				Пока ВыборкаЗаказы.Следующий() Цикл
					СтрокЗаказов = СтрокЗаказов + 1;
					ОбластьСтрока.Параметры.Заполнить(ВыборкаЗаказы);
					
					ТабДок.Вывести(ОбластьСтрока);
				КонецЦикла;
			КонецЦикла;
		КонецЦикла;
		
		Если Не ЕстьЗаказыЗаДень Тогда
			 ОбластьСтрока.Параметры.Заполнить(Новый Структура("Дата, Контрагент, Заказ, Вес, Объем, Сумма", _Период, NULL, NULL, NULL, NULL, NULL));
			
			ТабДок.Вывести(ОбластьСтрока);
		КонецЕсли;		
		_Период  = КонецДня(_Период) + 1;
	КонецЦикла;
	
Показать
23. Release 18.02.19 14:10 Сейчас в теме
В отладчике посмотрите, что в ТекущиеДанные и текЗаказ.
Хотя скорее у вас что-то с объектом ЗапросДанных.
24. user1008893 18.02.19 14:17 Сейчас в теме
(23)текЗаказ- получает все данные заказа, текущие данные-до туда не доходит
25. user1008893 18.02.19 14:23 Сейчас в теме
(23)так все получилось,запрос.текст забыла
26. Release 18.02.19 14:23 Сейчас в теме
Как раз хотел написать.
27. user1008893 18.02.19 14:24 Сейчас в теме
28. user1008893 18.02.19 15:42 Сейчас в теме
(26)Я теперь делаю печатную форму,данные получаю ,Даты выводятся,но контрагент,заказ и тд просто выводятся столько раз,сколько дней в месяце. Как можно подправить,может заметите что то
Процедура КнопкаВыполнитьНажатие(Кнопка)
	ТабДок=ЭлементыФормы.ПолеТабличногоДокумента1;
	МакетПечать=ПолучитьМакет("Печать_Макет");
	Шапка=МакетПечать.ПолучитьОбласть("Шапка");
	ТабДок.Вывести(Шапка);
	
	 ТекущийПериод  = НачалоДня(ТекущаяДата());
	Горизонт = КонецМесяца(ГоризонтПланирования);
	_Период     = НачалоМесяца(ТекущийПериод);
	_КонПериод  = КонецДня(Горизонт);

	 ЗапросЗаказы=Новый Запрос;
	ЗапросЗаказы.Текст="ВЫБРАТЬ
	                   |	ПС_ЗаказыДляОтгрузки.Контрагент КАК Контрагент,
	                   |	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ КАК Заказ,
	                   |	ПС_ЗаказыДляОтгрузкиЗаказы.Вес КАК Вес,
	                   |	ПС_ЗаказыДляОтгрузкиЗаказы.Объем КАК Объем,
	                   |	ПС_ЗаказыДляОтгрузкиЗаказы.Сумма КАК Сумма
	                   |ИЗ
	                   |	Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
	                   |		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
	                   |		ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка
	                   |ГДЕ
	                   |	НЕ ПС_ЗаказыДляОтгрузки.ПометкаУдаления
	                   |	И ПС_ЗаказыДляОтгрузки.ДеньОтгрузки = &Дата
	                   |
	                   |СГРУППИРОВАТЬ ПО
	                   |	ПС_ЗаказыДляОтгрузки.Контрагент,
	                   |	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ,
	                   |	ПС_ЗаказыДляОтгрузкиЗаказы.Вес,
	                   |	ПС_ЗаказыДляОтгрузкиЗаказы.Объем,
	                   |	ПС_ЗаказыДляОтгрузкиЗаказы.Сумма";
	 ЗапросЗаказы.Параметры.Вставить("Дата",_Период);
	Заказы = ЗапросЗаказы.Выполнить();
	
		  выборка=Заказы.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока выборка.Следующий() Цикл	
	 Таблица=МакетПечать.ПолучитьОбласть("Таблица|Дата");
	 ОбластьЗаказы=МакетПечать.ПолучитьОбласть("Таблица|Заказы");
       ОбластьЗаказы.Параметры.Заполнить(выборка);	
	//ТабДок.Вывести(ОбластьЗаказы); 
	 //ТабДок.Вывести(Таблица);
	
	Пока _Период <= _КонПериод Цикл
		Если НачалоДня(_Период) < НачалоДня(ТекущийПериод) Тогда       // прошлый день
			Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
				
			ТабДок.Вывести(Таблица); 
			табДок.Присоединить(ОбластьЗаказы);

			
		ИначеЕсли НачалоДня(_Период) = НачалоДня(ТекущийПериод) Тогда  // текущий день				
			Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
						
			ТабДок.Вывести(Таблица);
			табДок.Присоединить(ОбластьЗаказы);

		Иначе 
			Таблица.Параметры.Дата  = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
						 ТабДок.Вывести(Таблица);  
			 табДок.Присоединить(ОбластьЗаказы);
		КонецЕсли; 		
		_Период  = КонецДня(_Период) + 1;
	КонецЦикла;	
КонецЦикла;
	
КонецПроцедуры
Показать
Прикрепленные файлы:
29. user1008893 18.02.19 16:34 Сейчас в теме
(26)как сделать так,чтобы контрагент и заказы выводились в соответствии ДеньОтгрузки=Дата
30. Release 18.02.19 16:40 Сейчас в теме
(29) Добавить в запрос ДеньОтгрузки КАК Дата и вывести соответственно данным результата запроса.
user1008893; +1 Ответить
31. user1008893 18.02.19 16:43 Сейчас в теме
(30)
ТабДок=ЭлементыФормы.ПолеТабличногоДокумента1;
	МакетПечать=ПолучитьМакет("Печать_Макет");
		
	 ТекущийПериод  = НачалоДня(ТекущаяДата());
	Горизонт = КонецМесяца(ГоризонтПланирования);
	_Период     = НачалоМесяца(ТекущийПериод);
	_КонПериод  = КонецДня(Горизонт);
	
	Шапка=МакетПечать.ПолучитьОбласть("Шапка");
	Шапка.Параметры.ДатаНач=_Период;
	Шапка.Параметры.ДатаКон=_КонПериод;
	ТабДок.Вывести(Шапка);

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

	Пока _Период <= _КонПериод Цикл
		Если НачалоДня(_Период) < НачалоДня(ТекущийПериод) Тогда       // прошлый день
			Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
				
			ТабДок.Вывести(Таблица); 
		табДок.Присоединить(ОбластьЗаказы);

			
		ИначеЕсли НачалоДня(_Период) = НачалоДня(ТекущийПериод) Тогда  // текущий день				
			Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
						
			ТабДок.Вывести(Таблица);
			табДок.Присоединить(ОбластьЗаказы);

		Иначе 
			Таблица.Параметры.Дата  = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
						 ТабДок.Вывести(Таблица);  
			
			табДок.Присоединить(ОбластьЗаказы);
		КонецЕсли; 		
		_Период  = КонецДня(_Период) + 1;
	КонецЦикла;	
КонецЦикла;
Показать

не получается((
32. Release 18.02.19 16:53 Сейчас в теме
1. Перебор выборки перенести в цикл:
Пока _Период <= _КонПериод Цикл

2. Перед выводом добавить условие на соответствие _Период = выборка.Дата.
3. Хотя мне непонятен смысл этого блока:
       Если НачалоДня(_Период) < НачалоДня(ТекущийПериод) Тогда       // прошлый день
            Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
                
            ТабДок.Вывести(Таблица); 
        табДок.Присоединить(ОбластьЗаказы);

            
        ИначеЕсли НачалоДня(_Период) = НачалоДня(ТекущийПериод) Тогда  // текущий день                
            Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
                        
            ТабДок.Вывести(Таблица);
            табДок.Присоединить(ОбластьЗаказы);

        Иначе 
            Таблица.Параметры.Дата  = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
                         ТабДок.Вывести(Таблица);  
            
            табДок.Присоединить(ОбластьЗаказы);
        КонецЕсли;
Показать

При любом условии выполняется одно и тоже.
user1008893; +1 Ответить
33. user1008893 18.02.19 16:55 Сейчас в теме
34. Release 18.02.19 17:26 Сейчас в теме
(33) Это понятно. Я имел ввиду, что независимо от этого:
Если НачалоДня(_Период) < НачалоДня(ТекущийПериод) Тогда
...
ИначеЕсли НачалоДня(_Период) = НачалоДня(ТекущийПериод)
...
Иначе 

код внутри один и тот же:
            Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
                        
            ТабДок.Вывести(Таблица);
            табДок.Присоединить(ОбластьЗаказы);

т.е. условие просто лишнее.
user1008893; +1 Ответить
35. user1008893 19.02.19 08:09 Сейчас в теме
(34)
	выборка=Заказы.Выбрать();
	
	Пока _Период <= _КонПериод Цикл
		Пока выборка.Следующий() Цикл	
			Таблица=МакетПечать.ПолучитьОбласть("Таблица|Дата");
			ОбластьЗаказы=МакетПечать.ПолучитьОбласть("Таблица|Заказы");
			ОбластьЗаказы.Параметры.Заполнить(выборка);	
			//ТабДок.Присоединить(ОбластьЗаказы); 
			//ТабДок.Вывести(Таблица);
			ТекущийПериод  = НачалоДня(ТекущаяДата());
			Горизонт = КонецМесяца(ГоризонтПланирования);
			_Период     = НачалоМесяца(ТекущийПериод);
			_КонПериод  = КонецДня(Горизонт);
			Если НачалоДня(_Период) < НачалоДня(ТекущийПериод) Тогда       // прошлый день
				Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
				ТабДок.Вывести(Таблица);
				Если  _Период = выборка.Дата Тогда  	
					
					табДок.Присоединить(ОбластьЗаказы);
				КонецЕсли;
				
			ИначеЕсли НачалоДня(_Период) = НачалоДня(ТекущийПериод) Тогда  // текущий день				
				Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
				
				ТабДок.Вывести(Таблица);
				Если  _Период = выборка.Дата Тогда  	
					
					табДок.Присоединить(ОбластьЗаказы);
				КонецЕсли;
				
				
			Иначе 
				Таблица.Параметры.Дата  = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
				ТабДок.Вывести(Таблица);  
				
				Если  _Период = выборка.Дата Тогда  	
					
					табДок.Присоединить(ОбластьЗаказы);
				КонецЕсли;
				
			КонецЕсли; 		
			_Период  = КонецДня(_Период) + 1;
		КонецЦикла;	
	КонецЦикла;
	
КонецПроцедуры
Показать


Если цикл выборки перенести в цикл с периодом,то просто подвисает и долго грузит.
А если не вносить,то с условием выводит только за 1.02.2019. В отладчике Дата всегда 1.02.2019
36. user1008893 19.02.19 09:35 Сейчас в теме
(34)
ТабДок=ЭлементыФормы.ПолеТабличногоДокумента1;
	МакетПечать=ПолучитьМакет("Печать_Макет");
	
	ТекущийПериод  = НачалоДня(ТекущаяДата());
	Горизонт = КонецМесяца(ГоризонтПланирования);
	_Период     = НачалоМесяца(ТекущийПериод);
	_КонПериод  = КонецДня(Горизонт);
	
	Шапка=МакетПечать.ПолучитьОбласть("Шапка");
	Шапка.Параметры.ДатаНач=_Период;
	Шапка.Параметры.ДатаКон=_КонПериод;
	ТабДок.Вывести(Шапка);
	
	ЗапросЗаказы=Новый Запрос;
	ЗапросЗаказы.Текст="ВЫБРАТЬ
	|	ПС_ЗаказыДляОтгрузки.Контрагент КАК Контрагент,
	|	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ КАК Заказ,
	|	ПС_ЗаказыДляОтгрузкиЗаказы.Вес КАК Вес,
	|	ПС_ЗаказыДляОтгрузкиЗаказы.Объем КАК Объем,
	|	ПС_ЗаказыДляОтгрузкиЗаказы.Сумма КАК Сумма,
	|	ПС_ЗаказыДляОтгрузки.ДеньОтгрузки КАК Дата
	|ИЗ
	|	Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
	|		ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка
	|ГДЕ
	|	НЕ ПС_ЗаказыДляОтгрузки.ПометкаУдаления
	|
	|СГРУППИРОВАТЬ ПО
	|	ПС_ЗаказыДляОтгрузки.Контрагент,
	|	ПС_ЗаказыДляОтгрузкиЗаказы.Заказ,
	|	ПС_ЗаказыДляОтгрузкиЗаказы.Вес,
	|	ПС_ЗаказыДляОтгрузкиЗаказы.Объем,
	|	ПС_ЗаказыДляОтгрузкиЗаказы.Сумма,
	|	ПС_ЗаказыДляОтгрузки.ДеньОтгрузки";	
	Заказы = ЗапросЗаказы.Выполнить();
	
	выборка=Заказы.Выбрать();
	Пока выборка.Следующий() Цикл	
		Таблица=МакетПечать.ПолучитьОбласть("Таблица|Дата");
		ОбластьЗаказы=МакетПечать.ПолучитьОбласть("Таблица|Заказы");
		ОбластьЗаказы.Параметры.Заполнить(выборка);	
		
		//ТекущийПериод  = НачалоДня(ТекущаяДата());
		//Горизонт = КонецМесяца(ГоризонтПланирования);
		//_Период     = НачалоМесяца(ТекущийПериод);
		//_КонПериод  = КонецДня(Горизонт);
		
		Пока _Период <= _КонПериод Цикл
			
			Если НачалоДня(_Период) < НачалоДня(ТекущийПериод) Тогда       // прошлый день
				Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
				ТабДок.Вывести(Таблица);
				Если  _Период = выборка.Дата Тогда  	
					табДок.Присоединить(ОбластьЗаказы);
				КонецЕсли;
				
			ИначеЕсли НачалоДня(_Период) = НачалоДня(ТекущийПериод) Тогда  // текущий день				
				Таблица.Параметры.Дата = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
				ТабДок.Вывести(Таблица);
				Если  _Период = выборка.Дата Тогда  	
					табДок.Присоединить(ОбластьЗаказы);
				КонецЕсли;
			Иначе
				
				Таблица.Параметры.Дата  = Формат(_Период, "ДФ='dd.MM.yyyy (ddd)'");
				ТабДок.Вывести(Таблица);  
				Если  _Период = выборка.Дата Тогда  	
					табДок.Присоединить(ОбластьЗаказы);
				КонецЕсли;
			КонецЕсли; 		
			_Период  = КонецДня(_Период) + 1;
		КонецЦикла;	
	КонецЦикла;
Показать



Поменяла запрос,но теперь выводится начиная с 3.02.2019.Как подправить? Помогите пожалуйста..
37. Release 19.02.19 09:51 Сейчас в теме
(36) Можете показать, как должна выглядеть таблица в результате?
38. user1008893 19.02.19 09:56 Сейчас в теме
(37)Вот сейчас вот так. А должно быть,если в документе отгрузки ДатаОтгрузки=_период,то выводятся заказы за этот день. А если пусто,то просто пустое поле
Прикрепленные файлы:
39. Release 19.02.19 10:31 Сейчас в теме
(38) Поэтому я просил показать, что должно получиться, к примеру, когда в один день несколько заказов от различных контрагентов.
Нарисуйте в экселе, что хотите получить и выложите скрин или файл.
40. user1008893 19.02.19 10:48 Сейчас в теме
(39)вот что-то типо этого
Прикрепленные файлы:
41. Release 19.02.19 11:14 Сейчас в теме
(40) В общем, как я и думал. Будет сложно динамически объединять дату под количество строк контрагентов с заказами.
Может лучше даты с показателями заказов вертикально в колонках выводить?
user1008893; +1 Ответить
42. user1008893 19.02.19 11:16 Сейчас в теме
(41)что то не поняла
Мне надо,чтобы было как расписание
43. Release 19.02.19 12:05 Сейчас в теме
(42) Я имел ввиду, что даты последовательно будут в колонках, а контрагенты с заказами в строках.

Но, не важно. Вот примерный код для вывода так как вы хотите:
    ЗапросЗаказы = Новый Запрос;
    ЗапросЗаказы.Текст = "ВЫБРАТЬ
    |    ПС_ЗаказыДляОтгрузки.Контрагент КАК Контрагент,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Заказ КАК Заказ,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Вес КАК Вес,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Объем КАК Объем,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Сумма КАК Сумма,
    |    ПС_ЗаказыДляОтгрузки.ДеньОтгрузки КАК Дата
    |ИЗ
    |    Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
    |        ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка
    |ГДЕ
    |    НЕ ПС_ЗаказыДляОтгрузки.ПометкаУдаления
    |
    |СГРУППИРОВАТЬ ПО
    |    ПС_ЗаказыДляОтгрузки.Контрагент,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Заказ,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Вес,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Объем,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Сумма,
    |    ПС_ЗаказыДляОтгрузки.ДеньОтгрузки"    
    |УПОРЯДОЧИТЬ ПО
    |    ПС_ЗаказыДляОтгрузки.ДеньОтгрузки,
    |    ПС_ЗаказыДляОтгрузки.Контрагент,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Заказ
    |ИТОГИ ПО
    |    ПС_ЗаказыДляОтгрузки.ДеньОтгрузки,
    |    ПС_ЗаказыДляОтгрузки.Контрагент";    

    Заказы = ЗапросЗаказы.Выполнить();
    
    Выборка = Заказы.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    НомерСтрокиДата = 6;
    НомерСтрокиКонтрагент = 6;

    ОбластьСтрока = МакетПечать.ПолучитьОбласть("Шапка");

    Пока _Период <= _КонПериод Цикл
        Пока Выборка.Следующий() Цикл
            Если НачалоДня(Выборка.Дата) = _Период Тогда
                ВыборкаКонтрагенты = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                
                Пока ВыборкаКонтрагенты.Следующий() Цикл
                    СтрокЗаказов = 0;

                    ВыборкаЗаказы = ВыборкаКонтрагенты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

                        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаЗаказы);
                        
                        ТабДок.Вывести(ОбластьСтрока);
                    КонецЦикла;
                КонецЦикла;
            Иначе
                ОбластьСтрока.Параметры.Дата = _Период;

                ТабДок.Вывести(ОбластьСтрока);
            КонецЕсли;
        КонецЦикла;

        _Период  = КонецДня(_Период) + 1;
    КонецЦикла;
Показать

Хотя еще нужно будет добавить объединение ячеек одинаковых дат и контрагентов.
user1008893; +1 Ответить
44. user1008893 19.02.19 13:01 Сейчас в теме
(43)
Процедура ПриОткрытии()
	ТабДок=ЭлементыФормы.ПолеТабличногоДокумента1;
	МакетПечать=ПолучитьМакет("Печать_Макет");
	
	ТекущийПериод  = НачалоДня(ТекущаяДата());
	Горизонт = КонецМесяца(ГоризонтПланирования);
	_Период     = НачалоМесяца(ТекущийПериод);
	_КонПериод  = КонецДня(Горизонт);
	
	Шапка=МакетПечать.ПолучитьОбласть("Шапка");
	Шапка.Параметры.ДатаНач=_Период;
	Шапка.Параметры.ДатаКон=_КонПериод;
	ТабДок.Вывести(Шапка);
	
	 ЗапросЗаказы = Новый Запрос;
    ЗапросЗаказы.Текст = "ВЫБРАТЬ
    |    ПС_ЗаказыДляОтгрузки.Контрагент КАК Контрагент,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Заказ КАК Заказ,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Вес КАК Вес,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Объем КАК Объем,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Сумма КАК Сумма,
    |    ПС_ЗаказыДляОтгрузки.ДеньОтгрузки КАК Дата
    |ИЗ
    |    Документ.ПС_ЗаказыДляОтгрузки.Заказы КАК ПС_ЗаказыДляОтгрузкиЗаказы
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПС_ЗаказыДляОтгрузки КАК ПС_ЗаказыДляОтгрузки
    |        ПО ПС_ЗаказыДляОтгрузкиЗаказы.Ссылка = ПС_ЗаказыДляОтгрузки.Ссылка
    |ГДЕ
    |    НЕ ПС_ЗаказыДляОтгрузки.ПометкаУдаления
    |
    |СГРУППИРОВАТЬ ПО
    |    ПС_ЗаказыДляОтгрузки.Контрагент,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Заказ,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Вес,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Объем,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Сумма,
    |    ПС_ЗаказыДляОтгрузки.ДеньОтгрузки    
    |УПОРЯДОЧИТЬ ПО
    |    ПС_ЗаказыДляОтгрузки.ДеньОтгрузки,
    |    ПС_ЗаказыДляОтгрузки.Контрагент,
    |    ПС_ЗаказыДляОтгрузкиЗаказы.Заказ
    |ИТОГИ ПО
    |    ПС_ЗаказыДляОтгрузки.ДеньОтгрузки,
    |    ПС_ЗаказыДляОтгрузки.Контрагент";    	
	Заказы = ЗапросЗаказы.Выполнить();
	
	Выборка=Заказы.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		//Пока выборка.Следующий() Цикл	
		//Таблица=МакетПечать.ПолучитьОбласть("Таблица|Дата");
		//ОбластьЗаказы=МакетПечать.ПолучитьОбласть("Таблица|Заказы");
	НомерСтрокиДата = 6;
    НомерСтрокиКонтрагент = 6;

    ОбластьСтрока = МакетПечать.ПолучитьОбласть("Таблица");

    Пока _Период <= _КонПериод Цикл
         Пока Выборка.Следующий() Цикл
            Если НачалоДня(Выборка.Дата) = _Период Тогда
                ВыборкаКонтрагенты = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                
                Пока ВыборкаКонтрагенты.Следующий() Цикл
                    СтрокЗаказов = 0;

                    ВыборкаЗаказы = ВыборкаКонтрагенты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

                        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаЗаказы);
                     ТабДок.Вывести(ОбластьСтрока);
                    КонецЦикла;
                КонецЦикла;
            Иначе
                ОбластьСтрока.Параметры.Дата = _Период;

                ТабДок.Вывести(ОбластьСтрока);
            КонецЕсли;
        КонецЦикла;

        _Период  = КонецДня(_Период) + 1;
    КонецЦикла;
	
КонецПроцедуры
Показать

Выводит только 3 одинаковые строчки.......
60. Release 19.02.19 15:13 Сейчас в теме
Поправьте вторую строку, я ее поправил, но забыл написать:
        Пока Выборка.НайтиСледующий(_Период, "Дата") Цикл
            ЕстьЗаказыЗаДень = Истина;
user1008893; +1 Ответить
61. user1008893 19.02.19 15:15 Сейчас в теме
(60)оо,круто)) только в дни теперь надо объединить
62. Release 19.02.19 15:22 Сейчас в теме
(61) Осталось самое сложное, я такого еще не делал. Попробуйте заменить на этот блок:
            Пока ВыборкаКонтрагенты.Следующий() Цикл
                СтрокЗаказов = 0;
                
                ВыборкаЗаказы = ВыборкаКонтрагенты.Выбрать();
                
                Пока ВыборкаЗаказы.Следующий() Цикл
                    СтрокЗаказов = СтрокЗаказов + 1;
                    ОбластьСтрока.Параметры.Заполнить(ВыборкаЗаказы);
                    
                    ТабДок.Вывести(ОбластьСтрока);
                КонецЦикла;

                ТабДок.Область(НомерСтрокиКонтрагент, 2, НомерСтрокиКонтрагент + СтрокЗаказов - 1, 2).Объединить();

                НомерСтрокиКонтрагент = НомерСтрокиКонтрагент + СтрокЗаказов;
            КонецЦикла;
Показать
user1008893; +1 Ответить
63. user1008893 19.02.19 15:27 Сейчас в теме
(62)лишнего захватывает. У первого контрагента-1 заказ(не с чем объединять) у 2 контрагента -3 заказа
Прикрепленные файлы:
64. Release 19.02.19 15:32 Сейчас в теме
(63) посмотрите в выше я добавил строчку:
НомерСтрокиКонтрагент = НомерСтрокиКонтрагент + СтрокЗаказов;
user1008893; +1 Ответить
65. user1008893 19.02.19 15:34 Сейчас в теме
(64)так,все отлично,но даты тоже надо объединить
66. user1008893 19.02.19 15:38 Сейчас в теме
(64)получилось,добавила
ТабДок.Область(НомерСтрокиДата,1, НомерСтрокиДата + СтрокЗаказов - 1, 1).Объединить();
			НомерСтрокиДата = НомерСтрокиДата + СтрокЗаказов;
67. Release 19.02.19 15:40 Сейчас в теме
Замечательно. Укажите в свойствах ячейки Даты формат.
user1008893; +1 Ответить
68. user1008893 19.02.19 15:41 Сейчас в теме
(67)этим и занимаюсь как раз)
69. user1008893 19.02.19 15:46 Сейчас в теме
(67)Спасибо,вам большое)))
70. user1008893 20.02.19 08:01 Сейчас в теме
(67)Вчера заметила,что не объединяются ячейки даты, когда за это число есть несколько контрагентов.Как сделать? Подскажите пожалуйста...
71. ANDRU48DOP 5 20.02.19 17:14 Сейчас в теме
(70)
Вчера заметила,что не объединяются ячейки даты, когда за это число есть несколько контрагентов.Как сделать? Подскажите пожалуйста...


Сгруппировать по дате и контрагенту, как вариант.
Оставьте свое сообщение

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