Создание и заполнения документа на основании нескольких

1. Вожак 19.02.14 17:03 Сейчас в теме
Самописная конфа, такой вопрос: Есть документ - заказ в карьер, в нем реквизиты и ТЧ, на основании этого документа можно сформировать ТТН. В чем собственно вопрос, как сделать заполнение одной ТТН на основании 2х, например заказов в карьер? выделить их шифтом, а как перенести потом данные из 2х тч в одну? сделал обработку для вызова таблицы с списокм выбираемых документов, дошел до запроса, который их потом обрабатывает, и тут летит ошибка:
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(60)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(12, 46)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
И ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка <<?>>= &Ссылка

вот сам код процедуры:
&НаКлиенте
Процедура Команда1(Команда)
НаСервере();
КонецПроцедуры

&Насервере
Процедура НаСервере()

Массив=новый массив;

Для Каждого Стр из Объект.ЗаказВКарьер Цикл
массив.добавить(Стр);
КонецЦикла;

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

Запрос.УстановитьПараметр("Ссылка",массив);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();

ТТН=Документы.ТТН.СоздатьДокумент();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

ТТН.Организация = ВыборкаДетальныеЗаписи.Организация;
ТТН.Дата = ВыборкаДетальныеЗаписи.Дата;
ТТН.Контрагент = ВыборкаДетальныеЗаписи.Контрагент;

НоваяСтрока = ТТН.Товары.Добавить();

Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
Продолжить;
КонецЕсли;

НоваяСтрока.ЕдиницаИзмерения = ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
НоваяСтрока.Количество = ВыборкаДетальныеЗаписи.Количество;
НоваяСтрока.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
НоваяСтрока.СтавкаНДС = ВыборкаДетальныеЗаписи.СтавкаНДС;
НоваяСтрока.Сумма = ВыборкаДетальныеЗаписи.Сумма;
НоваяСтрока.СуммаНДС = ВыборкаДетальныеЗаписи.СуммаНДС;
НоваяСтрока.СуммаСНДС = ВыборкаДетальныеЗаписи.СуммаСНДС;
НоваяСтрока.Цена = ВыборкаДетальныеЗаписи.Цена;
НоваяСтрока.ЗаказВКарьер = ВыборкаДетальныеЗаписи.Ссылка;

КонецЦикла;

ТТН.записать();
ТТн.ПолучитьФорму();
ТТн.открыть();
КонецПроцедуры



Как разобраться с этой ошибкой?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starjevschik 19.02.14 17:11 Сейчас в теме
(1) Вожак,
ЗаказВКарьер.Товары.Ссылка В(&Ссылка)
а вообще можно ведь и мануал открыть. Стыдно, конечно, но можно незаметно, под столом как-нибудь, отгородившись от коллег
;)
+
4. Вожак 19.02.14 17:25 Сейчас в теме
(2) starjevschik,
"ВЫБРАТЬ
| ЗаказыКлиентовОстатки.Номенклатура,
| ЗаказыКлиентовОстатки.ЗаказаноОстаток,
| ЗаказыКлиентовОстатки.СуммаОстаток,
| ЗаказыКлиентовОстатки.ЗаказКлиента
|ПОМЕСТИТЬ втЗаказКлиентаОстаток
|ИЗ
| РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
|ГДЕ
| ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка = &Ссылка
| И ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
|;
|
| X
|ВЫБРАТЬ
| втЗаказКлиентаОстаток.Номенклатура,
| ЗаказВКарьерТовары.Цена,
| ЗаказВКарьерТовары.СтавкаНДС,
| ЗаказВКарьерТовары.ЕдиницаИзмерения,
| ЗаказВКарьерТовары.Ссылка,
| втЗаказКлиентаОстаток.ЗаказаноОстаток КАК Количество,
| втЗаказКлиентаОстаток.СуммаОстаток КАК СуммаСНДС,
| втЗаказКлиентаОстаток.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
| ВЫБОР
| КОГДА втЗаказКлиентаОстаток.ЗаказаноОстаток = 0
| ТОГДА 0
| ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * втЗаказКлиентаОстаток.ЗаказаноОстаток
| КОНЕЦ КАК СуммаНДС
|ИЗ
| втЗаказКлиентаОстаток КАК втЗаказКлиентаОстаток
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
| ПО втЗаказКлиентаОстаток.Номенклатура = ЗаказВКарьерТовары.Номенклатура
| И втЗаказКлиентаОстаток.ЗаказКлиента.Ссылка = ЗаказВКарьерТовары.Ссылка
|ГДЕ
| ЗаказВКарьерТовары.Ссылка = &Ссылка";

теперь ругается:
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(83)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(12, 39)}: Неверные параметры
И ЗаказыКлиентовОстатки.ЗаказКлиента <<?>>В(&Ссылка)
что значит неверные параметры? когда я массив туда передаю:
Запрос.УстановитьПараметр("Ссылка", Массив);
+
3. Вожак 19.02.14 17:18 Сейчас в теме
ЗаказВКарьер.Товары тоже не передать
+
6. Release 19.02.14 17:31 Сейчас в теме
(3) Вожак, Вам уже указали, что для переданного списка в качестве параметра нужно использовать конструкция "В (&Параметр)", а не "= &Параметр".
Изучайте мат.часть. И используйте соответствующие теги для кода, пожалуйста.
+
5. Вожак 19.02.14 17:27 Сейчас в теме
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(83)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(12, 39)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
И ЗаказыКлиентовОстатки.ЗаказКлиента <<?>>= &Ссылка
хотя вот, все равно летит)
+
7. Вожак 19.02.14 17:33 Сейчас в теме
я так и делал, и все равно:
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(83)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(12, 39)}: Неверные параметры
И ЗаказыКлиентовОстатки.ЗаказКлиента <<?>>В (&Ссылка)
вот код:
ВЫБРАТЬ
| ЗаказыКлиентовОстатки.Номенклатура,
| ЗаказыКлиентовОстатки.ЗаказаноОстаток,
| ЗаказыКлиентовОстатки.СуммаОстаток,
| ЗаказыКлиентовОстатки.ЗаказКлиента,
| ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
|ПОМЕСТИТЬ втОстатки
|ИЗ
| РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
|ГДЕ
| ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
| И ЗаказыКлиентовОстатки.ЗаказКлиента В (&Ссылка)
|;
|
| X
|ВЫБРАТЬ
| ЗаказВКарьер.Контрагент,
| ЗаказВКарьер.Дата,
| ЗаказВКарьер.Менеджер,
| ЗаказВКарьер.Организация,
| ЗаказВКарьер.Ссылка,
| втОстатки.Номенклатура,
| ЗаказВКарьерТовары.Цена,
| ЗаказВКарьерТовары.СтавкаНДС,
| ЗаказВКарьерТовары.ЕдиницаИзмерения,
| втОстатки.ЗаказаноОстаток,
| втОстатки.СуммаОстаток,
| втОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
| ВЫБОР
| КОГДА втОстатки.ЗаказаноОстаток = 0
| ТОГДА 0
| ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * втОстатки.ЗаказаноОстаток
| КОНЕЦ КАК СуммаНДС
|ИЗ
| втОстатки КАК втОстатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер КАК ЗаказВКарьер
| ПО втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьер.Ссылка
| И втОстатки.Номенклатура = ЗаказВКарьер.Товары.Номенклатура,
| Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
|ГДЕ
| ЗаказВКарьерТовары.Ссылка В(&Ссылка)";
+
8. starjevschik 19.02.14 17:43 Сейчас в теме
(7) Вожак,

Для Каждого Стр из Объект.ЗаказВКарьер Цикл
массив.добавить(Стр);
КонецЦикла;

чтобы сравнить В(&Ссылка), Ссылка должна быть массивом ссылок. И называться она, по-хорошему, должна МассивСсылок, как-нибудь так.
Отладчиком еще можно пользоваться, вместе с мануалом. Методом тыка и форума здесь в основном барышни "программируют" :) ну им-то простительно...
+
9. Вожак 19.02.14 17:45 Сейчас в теме
а как тип данных массив ссылок ей привязать?
+
11. starjevschik 19.02.14 17:48 Сейчас в теме
(9) Вожак, надо сделать массив и сложить туда ссылки.
Из того, что я вижу (дубль 2. Почему люди не читают даже то, что для них пишется??)

Для Каждого Стр из Объект.ЗаказВКарьер Цикл
массив.добавить(Стр);
КонецЦикла;

в массив сложены некие Стр. Есть подозрение, что это строки чего-то, то ли табличной части, то ли еще чего-то. А должны там быть ссылки на документы.
+
10. Вожак 19.02.14 17:47 Сейчас в теме
Отладчиков у меня тип Массив у него с выбранными данными
+
12. Вожак 19.02.14 17:49 Сейчас в теме
передавал туда: Стр.ЗаказВКарьерКлиента.Ссылка, все равно
+
13. jigourt 31 19.02.14 17:49 Сейчас в теме
вот честно, если бы код был в тэгах, я бы посмотрел, а так даже читать не хочется, потому что нечитабельно для меня по крайней мере )
+
15. Вожак 19.02.14 17:51 Сейчас в теме
(13) jigourt, вот процедура сама:
Процедура НаСервере()
	
	Массив=новый массив;
	
    Для Каждого Стр из Объект.ЗаказВКарьер Цикл
        массив.добавить(Стр.ЗаказВКарьерКлиента.Ссылка);
	КонецЦикла;
	
	Запрос=Новый Запрос;
	Запрос.Текст= "ВЫБРАТЬ
	              |	ЗаказыКлиентовОстатки.Номенклатура,
	              |	ЗаказыКлиентовОстатки.ЗаказаноОстаток,
	              |	ЗаказыКлиентовОстатки.СуммаОстаток,
	              |	ЗаказыКлиентовОстатки.ЗаказКлиента,
	              |	ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
	              |ПОМЕСТИТЬ втОстатки
	              |ИЗ
	              |	РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
	              |ГДЕ
	              |	ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
	              |	И ЗаказыКлиентовОстатки.ЗаказКлиента В (&МассивСсылка)
	              |;
	              |
	              | X 
	              |ВЫБРАТЬ
	              |	ЗаказВКарьер.Контрагент,
	              |	ЗаказВКарьер.Дата,
	              |	ЗаказВКарьер.Менеджер,
	              |	ЗаказВКарьер.Организация,
	              |	ЗаказВКарьер.Ссылка,
	              |	втОстатки.Номенклатура,
	              |	ЗаказВКарьерТовары.Цена,
	              |	ЗаказВКарьерТовары.СтавкаНДС,
	              |	ЗаказВКарьерТовары.ЕдиницаИзмерения,
	              |	втОстатки.ЗаказаноОстаток,
	              |	втОстатки.СуммаОстаток,
	              |	втОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
	              |	ВЫБОР
	              |		КОГДА втОстатки.ЗаказаноОстаток = 0
	              |			ТОГДА 0
	              |		ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * втОстатки.ЗаказаноОстаток
	              |	КОНЕЦ КАК СуммаНДС
	              |ИЗ
	              |	втОстатки КАК втОстатки
	              |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер КАК ЗаказВКарьер
	              |		ПО втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьер.Ссылка
	              |			И втОстатки.Номенклатура = ЗаказВКарьер.Товары.Номенклатура,
	              |	Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
	              |ГДЕ
	              |	ЗаказВКарьерТовары.Ссылка В(&МассивСсылка)";
				  
				                  
    Запрос.УстановитьПараметр("МассивСсылка", Массив);
    Результат = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = Результат.Выбрать();
	
	ТТН=Документы.ТТН.СоздатьДокумент();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ТТН.Организация = ВыборкаДетальныеЗаписи.ЗаказКлиента.Организация;
		ТТН.Дата = ВыборкаДетальныеЗаписи.ЗаказКлиента.Дата;
		ТТН.Контрагент = ВыборкаДетальныеЗаписи.ЗаказКлиента.Контрагент;
		
		НоваяСтрока = ТТН.Товары.Добавить();
		
		Если ВыборкаДетальныеЗаписи.ЗаказаноОстаток = 0 Тогда
			Продолжить;
		КонецЕсли;	
			
			НоваяСтрока.ЕдиницаИзмерения 	= ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
			НоваяСтрока.Количество 				= ВыборкаДетальныеЗаписи.Количество;
			НоваяСтрока.Номенклатура 			= ВыборкаДетальныеЗаписи.Номенклатура;
			НоваяСтрока.СтавкаНДС 				= ВыборкаДетальныеЗаписи.СтавкаНДС;
			НоваяСтрока.Сумма 					= ВыборкаДетальныеЗаписи.Сумма;
			НоваяСтрока.СуммаНДС 				= ВыборкаДетальныеЗаписи.СуммаНДС;
			НоваяСтрока.СуммаСНДС 				= ВыборкаДетальныеЗаписи.СуммаСНДС;
			НоваяСтрока.Цена 					= ВыборкаДетальныеЗаписи.Цена;
			НоваяСтрока.ЗаказВКарьер 			= ВыборкаДетальныеЗаписи.ЗаказКлиента;
			
		КонецЦикла;
		
	ТТН.записать();
	ТТн.ПолучитьФорму("ФормаДокумента").Открыть();
	//ТТн.поткрыть();
КонецПроцедуры
Показать
+
16. Вожак 19.02.14 17:51 Сейчас в теме
в (15) вылетает ошибка (12)
+
17. jigourt 31 19.02.14 17:53 Сейчас в теме
(16) Вожак, замени массив на список значений )
+
14. Вожак 19.02.14 17:49 Сейчас в теме
точнее вот что вылетает в ошибке:
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(83)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
Запрос невозможно исполнить
+
18. Вожак 19.02.14 17:54 Сейчас в теме
все равно:
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(61)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
Запрос невозможно исполнить
+
19. jigourt 31 19.02.14 17:55 Сейчас в теме
(18) Вожак, а конструктор запроса открывает этот запрос?
+
21. Вожак 19.02.14 17:56 Сейчас в теме
34. Consultant_1C 174 19.02.14 18:55 Сейчас в теме
(18) Вожак, пришел к пиковой точке =)
+
20. Вожак 19.02.14 17:55 Сейчас в теме
СписокЗнач=новый СписокЗначений;
	
    Для Каждого Стр из Объект.ЗаказВКарьер Цикл
        СписокЗнач.добавить(Стр.ЗаказВКарьерКлиента.Ссылка);
	КонецЦикла;
	
	Запрос=Новый Запрос;
	Запрос.Текст= "ВЫБРАТЬ
	              |	ЗаказыКлиентовОстатки.Номенклатура,
	              |	ЗаказыКлиентовОстатки.ЗаказаноОстаток,
	              |	ЗаказыКлиентовОстатки.СуммаОстаток,
	              |	ЗаказыКлиентовОстатки.ЗаказКлиента,
	              |	ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
	              |ПОМЕСТИТЬ втОстатки
	              |ИЗ
	              |	РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
	              |ГДЕ
	              |	ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
	              |	И ЗаказыКлиентовОстатки.ЗаказКлиента В (&СписокЗнач)
	              |;
	              |
	              | X 
	              |ВЫБРАТЬ
	              |	ЗаказВКарьер.Контрагент,
	              |	ЗаказВКарьер.Дата,
	              |	ЗаказВКарьер.Менеджер,
	              |	ЗаказВКарьер.Организация,
	              |	ЗаказВКарьер.Ссылка,
	              |	втОстатки.Номенклатура,
	              |	ЗаказВКарьерТовары.Цена,
	              |	ЗаказВКарьерТовары.СтавкаНДС,
	              |	ЗаказВКарьерТовары.ЕдиницаИзмерения,
	              |	втОстатки.ЗаказаноОстаток,
	              |	втОстатки.СуммаОстаток,
	              |	втОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
	              |	ВЫБОР
	              |		КОГДА втОстатки.ЗаказаноОстаток = 0
	              |			ТОГДА 0
	              |		ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * втОстатки.ЗаказаноОстаток
	              |	КОНЕЦ КАК СуммаНДС
	              |ИЗ
	              |	втОстатки КАК втОстатки
	              |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер КАК ЗаказВКарьер
	              |		ПО втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьер.Ссылка
	              |			И втОстатки.Номенклатура = ЗаказВКарьер.Товары.Номенклатура,
	              |	Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
	              |ГДЕ
	              |	ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)";
				  
				                  
    Запрос.УстановитьПараметр("СписокЗнач", СписокЗнач);
    Результат = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = Результат.Выбрать();
Показать


почему не удалось выполнить хер пойми(
+
26. starjevschik 19.02.14 18:05 Сейчас в теме
(20) Вожак,
                 |ИЗ
                  |    втОстатки КАК втОстатки
                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер КАК ЗаказВКарьер
                  |        ПО втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьер.Ссылка
                  |            И втОстатки.Номенклатура = ЗаказВКарьер.Товары.Номенклатура,
                  |    Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
                  |ГДЕ
                  |    ЗаказВКарьерТовары.Ссылка В(&МассивСсылка)";
 
Показать

а насчет смысла такого запроса вообще идеи есть?
Выбираются данные из двух таблиц независимо - из остатков и табличной части документа. Что это вообще такое должно быть по задумке автора?...
+
27. Вожак 19.02.14 18:06 Сейчас в теме
(26) starjevschik, я хочу взять все остатки по выбранным документам, и ими заполнить документ. А вообще задумка была, формировать 1 ТТН документ на основании 2х заказов например
+
35. starjevschik 19.02.14 20:51 Сейчас в теме
(27) Вожак,
я хочу взять все остатки по выбранным документам, и ими заполнить документ

надо для начала осмыслить запрос и написать его правильно. Потом уже ставить параметры. Запрос будет чуть сложнее самого банального, поэтому нам пригодится понимание того, что такое таблица базы данных, что возвращают запросы и как связываются между собой таблицы в запросе, что такое СОЕДИНЕНИЕ, левое, правое, полное.
Я не готов сейчас читать лекцию на эту тему, советую 1) ознакомиться с документацией, причем лучше не по 1с, а по языку запросов SQL, из которого сделан язык запросов 1с.
Дальше советую 2) составить запрос с ОДНИМ документом. Составить полностью, от начала до конца, и чтобы он в консоли запросов давал правильный результат. Для правильности советую в документе сделать несколько строк. Если в одном документе может быть две строки с одной номенклатурой, то советую так и сделать. И вот на таких данных получить правильный результат.
И вот только после выполнения пп 1) и 2) можно будет переходить к передаче в запрос нескольких документов.
Сейчас беседа явно зашла в тупик из-за того, что делается совершенно не то, что ведет к цели :)
+
30. jigourt 31 19.02.14 18:20 Сейчас в теме
(20) Вожак, стоп, вы же соединяете документ с ТЧ во втором пакете. что за глупости?? )))
+
31. Release 19.02.14 18:23 Сейчас в теме
(30)правильно подметил нельзя ссылаться на ТЧ, если выборка идет из самого документа, а не его ТЧ
+
32. Release 19.02.14 18:26 Сейчас в теме
Тут (исходя из (20)):
                  |ИЗ
                  |    втОстатки КАК втОстатки
                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер КАК ЗаказВКарьер
                  |        ПО втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьер.Ссылка
                  |            И втОстатки.Номенклатура = ЗаказВКарьер.Товары.Номенклатура,
                  |    Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
вообще мусор какой-то - соединение с документом, а не ТЧ. Выборка из ТЧ документа, но без соединения.
+
22. Вожак 19.02.14 18:00 Сейчас в теме
может нюансы в управляемом приложении в запросах на сервере есть какие-нибудь?
+
23. Release 19.02.14 18:01 Сейчас в теме
Хочется узнать, какой тип у Стр.ЗаказВКарьерКлиента?
Может надо все таки так:
    Для Каждого Стр из Объект.ЗаказВКарьер Цикл
        СписокЗнач.добавить(Стр.ЗаказВКарьерКлиента);
    КонецЦикла;
+
24. Вожак 19.02.14 18:02 Сейчас в теме
ДокументСсылка.ЗаказвКарьер
+
25. Release 19.02.14 18:04 Сейчас в теме
(24) Вожак, посмотри (23) пример
+
28. Вожак 19.02.14 18:06 Сейчас в теме
(25) Release,
Для Каждого Стр из Объект.ЗаказВКарьер Цикл
        СписокЗнач.добавить(Стр.ЗаказВКарьерКлиента);
	КонецЦикла;


вот так у меня было
+
29. Release 19.02.14 18:18 Сейчас в теме
(28) Вожак, в (20) указано
СписокЗнач.добавить(Стр.ЗаказВКарьерКлиента.Ссылка);
+
33. jigourt 31 19.02.14 18:27 Сейчас в теме
в общем запрос надо переделать, надо сделать соединение ТЧ документа из второго пакета с регистром из первого и все будет гуд
+
36. Вожак 20.02.14 10:42 Сейчас в теме
у меня точно такой же запрос есть в обработке заполнения ТТН, если вводить ТТН на основании заказа, и там же запрос работает, почему тут нет?
+
37. Вожак 20.02.14 10:56 Сейчас в теме
СписокЗнач=новый СписокЗначений;
	
    Для Каждого Стр из Объект.ЗаказВКарьер Цикл
        СписокЗнач.добавить(Стр.ЗаказВКарьерКлиента);
	КонецЦикла;
	
	Запрос=Новый Запрос;
	Запрос.Текст=  "ВЫБРАТЬ
	               |	ЗаказВКарьерТовары.Номенклатура,
	               |	ЗаказВКарьерТовары.Количество,
	               |	ЗаказВКарьерТовары.Цена,
	               |	ЗаказВКарьерТовары.Сумма,
	               |	ЗаказВКарьерТовары.СтавкаНДС,
	               |	ЗаказВКарьерТовары.ЕдиницаИзмерения,
	               |	ЗаказВКарьерТовары.СуммаНДС,
	               |	ЗаказВКарьерТовары.Ссылка.Контрагент,
	               |	ЗаказВКарьерТовары.Ссылка.Организация,
	               |	ЗаказВКарьерТовары.Ссылка.Менеджер,
	               |	ЗаказВКарьерТовары.Ссылка.Дата
	               |ИЗ
	               |	Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
	               |ГДЕ
	               |	ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)";
Запрос.УстановитьПараметр("СписокЗнач", СписокЗнач);
    Результат = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = Результат.Выбрать();

Показать


вот запрос выбирает данные ИЗ ТЧ По документам, которые я передал в список значений, теперь нужно выбрать только остатки по этим документам чтобы переносились
+
38. Release 20.02.14 11:03 Сейчас в теме
(37) Вожак, ну, так и сделай выборку остатков и соединяй потом правильно, а не как в (20) - у тебя там выборка правильная, а соединение нет.
+
39. Вожак 20.02.14 11:10 Сейчас в теме
"ВЫБРАТЬ
	               |	ЗаказВКарьерТовары.Номенклатура,
	               |	ЗаказВКарьерТовары.Количество,
	               |	ЗаказВКарьерТовары.Цена,
	               |	ЗаказВКарьерТовары.Сумма,
	               |	ЗаказВКарьерТовары.СтавкаНДС,
	               |	ЗаказВКарьерТовары.ЕдиницаИзмерения,
	               |	ЗаказВКарьерТовары.СуммаНДС,
	               |	ЗаказВКарьерТовары.Ссылка.Контрагент,
	               |	ЗаказВКарьерТовары.Ссылка.Организация,
	               |	ЗаказВКарьерТовары.Ссылка.Менеджер,
	               |	ЗаказВКарьерТовары.Ссылка.Дата,
	               |	ЗаказыКлиентовОстатки.Номенклатура КАК Номенклатура1,
	               |	ЗаказыКлиентовОстатки.ЗаказаноОстаток,
	               |	ЗаказыКлиентовОстатки.СуммаОстаток,
	               |	ЗаказыКлиентовОстатки.СуммаБезНДСОстаток
	               |ИЗ
	               |	Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
	               |		ПО ЗаказВКарьерТовары.Номенклатура = ЗаказыКлиентовОстатки.Номенклатура
	               |ГДЕ
	               |	ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)
	               |	И ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0";
Показать


так?
+
40. mymyka 20.02.14 11:14 Сейчас в теме
(39)Теперь представьте, что получится, если в документах будет несколько строк с одинаковой номенклатурой.
+
50. Вожак 20.02.14 12:17 Сейчас в теме
так по сути если убрать временную таблицу, получится то, что я писал в (39)
+
41. Вожак 20.02.14 11:16 Сейчас в теме
В Документе 1 есть песок обычный, и в Документе 2 есть песок обычный, когда я хочу по остаткам создать документ на основании этих 2х документов, будет песок обычный в одной строке, и песок обычный в другой, то есть 2 строки с одинаковой номенклатурой
+
42. mymyka 20.02.14 11:47 Сейчас в теме
(41)И у каждого будут остатки равные сумме остатков Песок обычный по всем заказам.
+
44. mymyka 20.02.14 11:51 Сейчас в теме
(42)В (20) у вас все верно было, за исключением того, что во втором запросе надо брать только ТЧ документа, а параметры документа получать из ДОкументТовары.ССылка.НужныйПараметр
(43)У вас условие накладывается только на левую часть соединения. При этом параметр, на который накладывается условие в соединение не входит.
+
43. Вожак 20.02.14 11:49 Сейчас в теме
хм, а как сделать, чтобы остатки только по текущему тогда заказу были? я же передал параметр ссылки на остатки в список значений моих документов
+
45. Вожак 20.02.14 11:53 Сейчас в теме
не совсем поняол, я же во втором запросе и беру данные из ТЧ документа
+
46. jigourt 31 20.02.14 12:02 Сейчас в теме
а еще есть группировка
+
47. mymyka 20.02.14 12:04 Сейчас в теме
|ВЫБРАТЬ
                  |    ЗаказВКарьер.Контрагент,
                  |    ЗаказВКарьер.Дата,
                  |    ЗаказВКарьер.Менеджер,
                  |    ЗаказВКарьер.Организация,
                  |    ЗаказВКарьер.Ссылка,
                  |    втОстатки.Номенклатура,
                  |    ЗаказВКарьерТовары.Цена,
                  |    ЗаказВКарьерТовары.СтавкаНДС,
                  |    ЗаказВКарьерТовары.ЕдиницаИзмерения,
                  |    втОстатки.ЗаказаноОстаток,
                  |    втОстатки.СуммаОстаток,
                  |    втОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
                  |    ВЫБОР
                  |        КОГДА втОстатки.ЗаказаноОстаток = 0
                  |            ТОГДА 0
                  |        ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * втОстатки.ЗаказаноОстаток
                  |    КОНЕЦ КАК СуммаНДС
                  |ИЗ
                  |    втОстатки КАК втОстатки
                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер КАК ЗаказВКарьер
                  |        ПО втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьер.Ссылка
                  |            И втОстатки.Номенклатура = ЗаказВКарьер.Товары.Номенклатура,
                  |    Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
                  |ГДЕ
                  |    ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)";
Показать

выборка из тч, соединение с документом, условие на тч, поправьте этот бред и все будет работать.
+
48. Вожак 20.02.14 12:06 Сейчас в теме
убрать временную таблицу?
+
49. mymyka 20.02.14 12:11 Сейчас в теме
(48)убрать, а точнее заменить на ЗаказВКарьерТовары.Ссылка.ТоЧтоНадо
| ЗаказВКарьер.Контрагент,
| ЗаказВКарьер.Дата,
| ЗаказВКарьер.Менеджер,
| ЗаказВКарьер.Организация,
| ЗаказВКарьер.Ссылка,
А тут, соответственно
на ЗаказВКарьерТовары.Ссылка и ЗаказВКарьерТовары.Номенклатура
ПО втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьер.Ссылка
| И втОстатки.Номенклатура = ЗаказВКарьер.Товары.Номенклатура,
у вас соединяются ТРИ таблицы, а должны быть ДВЕ.
+
51. Вожак 20.02.14 12:22 Сейчас в теме
(49) mymyka, вот что нарисовал:
ВЫБРАТЬ
	|	ЗаказыКлиентовОстатки.Номенклатура,
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток,
	|	ЗаказыКлиентовОстатки.СуммаОстаток,
	|	ЗаказыКлиентовОстатки.ЗаказКлиента,
	|	ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
	|ПОМЕСТИТЬ втОстатки
	|ИЗ
	|	РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
	|ГДЕ
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
	|	И ЗаказыКлиентовОстатки.ЗаказКлиента В(&СписокЗнач)
	|;
	|
	| X 
	|ВЫБРАТЬ
	|	ЗаказВКарьер.Контрагент,
	|	ЗаказВКарьер.Дата,
	|	ЗаказВКарьер.Менеджер,
	|	ЗаказВКарьер.Организация,
	|	ЗаказВКарьер.Ссылка,
	|	ЗаказВКарьерТовары.Цена,
	|	ЗаказВКарьерТовары.СтавкаНДС,
	|	ЗаказВКарьерТовары.ЕдиницаИзмерения,
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
	|	ВЫБОР
	|		КОГДА ЗаказыКлиентовОстатки.ЗаказаноОстаток = 0
	|			ТОГДА 0
	|		ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * ЗаказыКлиентовОстатки.ЗаказаноОстаток
	|	КОНЕЦ КАК СуммаНДС,
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК ЗаказаноОстаток1,
	|	ЗаказыКлиентовОстатки.СуммаОстаток КАК СуммаОстаток1,
	|	ЗаказыКлиентовОстатки.Номенклатура КАК Номенклатура1
	|ИЗ
	|	Документ.ЗаказВКарьер КАК ЗаказВКарьер
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
	|			ПО ЗаказВКарьерТовары.Номенклатура = ЗаказыКлиентовОстатки.Номенклатура
	|		ПО ЗаказВКарьер.Ссылка = ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
	|ГДЕ
	|	ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)
Показать
+
56. mymyka 20.02.14 12:32 Сейчас в теме
(51)/рукалицо
Временная таблица у тебя в ПЕРВОМ запросе, никуда ее убирать не надо.
Надо убрать любое упоминание о ДОКУМЕНТЕ, а все данные получать из ТАБЛИЧНОЙ ЧАСТИ!
Во втором запросе пакета у тебя должно быть ДВЕ таблицы.
Когда строишь запроса, надо из таблицы метаданных мышой тащить не сам документ, а его табличную часть. Я просто не знаю, как еще объяснить.
|ИЗ
| Документ.ЗаказВКарьер КАК ЗаказВКарьер
вот тут долджно быть
|ИЗ
| Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
+
59. Вожак 20.02.14 12:37 Сейчас в теме
(56) mymyka, суда по тому, как вы сказали, получается следующее:
ВЫБРАТЬ
	|	ЗаказыКлиентовОстатки.Номенклатура,
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток,
	|	ЗаказыКлиентовОстатки.СуммаОстаток,
	|	ЗаказыКлиентовОстатки.ЗаказКлиента,
	|	ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
	|ПОМЕСТИТЬ втОстатки
	|ИЗ
	|	РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
	|ГДЕ
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
	|	И ЗаказыКлиентовОстатки.ЗаказКлиента В(&СписокЗнач)
	|;
	|
	| X 
	|ВЫБРАТЬ
	|	втОстатки.Номенклатура,
	|	ЗаказВКарьерТовары.Цена,
	|	ЗаказВКарьерТовары.СтавкаНДС,
	|	ЗаказВКарьерТовары.ЕдиницаИзмерения,
	|	втОстатки.ЗаказаноОстаток,
	|	втОстатки.СуммаОстаток,
	|	втОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
	|	ВЫБОР
	|		КОГДА втОстатки.ЗаказаноОстаток = 0
	|			ТОГДА 0
	|		ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * втОстатки.ЗаказаноОстаток
	|	КОНЕЦ КАК СуммаНДС,
	|	ЗаказВКарьерТовары.Ссылка.Контрагент КАК Контрагент1,
	|	ЗаказВКарьерТовары.Ссылка.Дата КАК Дата1,
	|	ЗаказВКарьерТовары.Ссылка.Менеджер КАК Менеджер1,
	|	ЗаказВКарьерТовары.Ссылка.Организация КАК Организация1
	|ИЗ
	|	втОстатки КАК втОстатки
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
	|		ПО втОстатки.Номенклатура = ЗаказВКарьерТовары.Номенклатура
	|			И втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьерТовары.Ссылка
	|ГДЕ
	|	ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)
Показать
+
52. Вожак 20.02.14 12:26 Сейчас в теме
хотя вот, обновленный вариант:
"ВЫБРАТЬ
	|	ЗаказВКарьер.Контрагент,
	|	ЗаказВКарьер.Дата,
	|	ЗаказВКарьер.Менеджер,
	|	ЗаказВКарьер.Организация,
	|	ЗаказВКарьер.Ссылка,
	|	ЗаказВКарьерТовары.Цена,
	|	ЗаказВКарьерТовары.СтавкаНДС,
	|	ЗаказВКарьерТовары.ЕдиницаИзмерения,
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
	|	ВЫБОР
	|		КОГДА ЗаказыКлиентовОстатки.ЗаказаноОстаток = 0
	|			ТОГДА 0
	|		ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * ЗаказыКлиентовОстатки.ЗаказаноОстаток
	|	КОНЕЦ КАК СуммаНДС,
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК Количество,
	|	ЗаказыКлиентовОстатки.СуммаОстаток КАК СуммаСНДС,
	|	ЗаказыКлиентовОстатки.Номенклатура КАК Номенклатура
	|ИЗ
	|	Документ.ЗаказВКарьер КАК ЗаказВКарьер
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
	|			ПО (ЗаказВКарьерТовары.Номенклатура = ЗаказыКлиентовОстатки.Номенклатура)
	|		ПО ЗаказВКарьер.Ссылка = ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
	|ГДЕ
	|	ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)
	|	И ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0";
Показать
+
54. Consultant_1C 174 20.02.14 12:29 Сейчас в теме
(52) Вожак, Работает???
+
55. Вожак 20.02.14 12:30 Сейчас в теме
(54) Consultant_1C, да, только данные тебе задваиваются
+
53. Consultant_1C 174 20.02.14 12:28 Сейчас в теме
А док. Заказ в карьер делает движение по регистру накопления Заказы клиентов ? =)
+
57. Consultant_1C 174 20.02.14 12:33 Сейчас в теме
НАверное все из-за

Документ.ЗаказВКарьер КАК ЗаказВКарьер
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары


А в регистре Накопления Заказы клиентов Реквизит заказ клиента какой тип ????
+
58. Вожак 20.02.14 12:34 Сейчас в теме
вы меня запутали с удалениями таблиц, давайте по порядку, первый запрос по РН:
ВЫБРАТЬ
	ЗаказыКлиентовОстатки.Номенклатура,
	ЗаказыКлиентовОстатки.ЗаказаноОстаток,
	ЗаказыКлиентовОстатки.СуммаОстаток,
	ЗаказыКлиентовОстатки.ЗаказКлиента
ПОМЕСТИТЬ втОстатки
ИЗ
	РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
ГДЕ
	ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
	И ЗаказыКлиентовОстатки.ЗаказКлиента В(&СписокЗнач)
;
Показать

так? мы делаем из него ВТ?
+
60. Вожак 20.02.14 12:41 Сейчас в теме
вроде сформировалось, но только теперь появилась новая трабла: у меня управляемое приложение, а когда создаетс ядокумент, он открывается как в обычном приложении, почему так?
ТТН=Документы.ТТН.СоздатьДокумент();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ТТН.Организация = ВыборкаДетальныеЗаписи.Организация;
		ТТН.Дата = ВыборкаДетальныеЗаписи.Дата;
		ТТН.Контрагент = ВыборкаДетальныеЗаписи.Контрагент;
		
		НоваяСтрока = ТТН.Товары.Добавить();
		
		Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
			Продолжить;
		КонецЕсли;	
			
			НоваяСтрока.ЕдиницаИзмерения 	= ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
			НоваяСтрока.Количество 				= ВыборкаДетальныеЗаписи.Количество;
			НоваяСтрока.Номенклатура 			= ВыборкаДетальныеЗаписи.Номенклатура;
			НоваяСтрока.СтавкаНДС 				= ВыборкаДетальныеЗаписи.СтавкаНДС;
			НоваяСтрока.Сумма 					= ВыборкаДетальныеЗаписи.Сумма;
			НоваяСтрока.СуммаНДС 				= ВыборкаДетальныеЗаписи.СуммаНДС;
			НоваяСтрока.СуммаСНДС 				= ВыборкаДетальныеЗаписи.СуммаНДС + ВыборкаДетальныеЗаписи.Сумма;
			НоваяСтрока.Цена 					= ВыборкаДетальныеЗаписи.Цена;
			//НоваяСтрока.ЗаказВКарьер 			= ВыборкаДетальныеЗаписи.ЗаказКлиента;
			
		КонецЦикла;
		
	ТТН.записать();
	ТТн.ПолучитьФорму("ФормаДокумента").Открыть();
Показать
+
62. Release 20.02.14 12:48 Сейчас в теме
(60) Вожак, вместо "ФормаДокумента" нужно указать имя управляемой формы.
+
63. Вожак 20.02.14 13:00 Сейчас в теме
(62) Release, а где ее посмотреть? я думал как в обычном приложении указываешь форму на которую тебе нужно выводить результат и все
+
61. Consultant_1C 174 20.02.14 12:43 Сейчас в теме
а такой запрос не катит ???
ВЫБРАТЬ
ЗаказВКарьер.Контрагент,
ЗаказВКарьер.Дата,
ЗаказВКарьер.Менеджер,
ЗаказВКарьер.Организация,
ЗаказВКарьер.Ссылка,
ЗаказВКарьерТовары.Номенклатура КАК Номенклатура,
ЗаказВКарьерТовары.Цена,
ЗаказВКарьерТовары.СтавкаНДС,
ЗаказВКарьерТовары.ЕдиницаИзмерения,
ЗаказыКлиентовОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
ВЫБОР
КОГДА ЗаказыКлиентовОстатки.ЗаказаноОстаток = 0
ТОГДА 0
ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * ЗаказыКлиентовОстатки.ЗаказаноОстаток
КОНЕЦ КАК СуммаНДС,
ПОМЕСТИТЬ ВТ_Документ
ИЗ Документ.ЗаказВКарьер КАК ЗаказВКарьер
ГДЕ ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)

;

ВЫБРАТЬ
ВТ_Документ.Контрагент,
ВТ_Документ.Дата,
ВТ_Документ.Менеджер,
ВТ_Документ.Организация,
ВТ_Документ.Ссылка,
ВТ_Документ.Номенклатура,
ВТ_Документ.Цена,
ВТ_Документ.СтавкаНДС,
ВТ_Документ.ЕдиницаИзмерения,
ВТ_Документ.Сумма,
ВТ_Документ.СуммаНДС,
ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК Количество,
ЗаказыКлиентовОстатки.СуммаОстаток КАК СуммаСНДС,
ИЗ ВТ_Документ как ВТ_Документ
левое соединение РегистрНакопления.ЗаказыКлиентов.Остатки(,Номенклатура в(
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_Документ.Номенклатура
ИЗ ВТ_Документ КАК ВТ_Документ)) КАК ЗаказыКлиентовОстатки
по ВТ_Документ.Номенклатура = ЗаказыКлиентовОстатки.Номенклатура
Показать
+
64. Вожак 20.02.14 13:37 Сейчас в теме
как вывод на управляемую форму то сделать?
+
69. mymyka 20.02.14 14:01 Сейчас в теме
(64)У документа управляемая форма то есть?
+
65. berator37 70 20.02.14 13:57 Сейчас в теме
Кому интересно могу скинуть для БП2
+
66. Вожак 20.02.14 13:58 Сейчас в теме
(65) berator37, зачем тут твоя БП? я спросил как на форму упр приложения вывести корректно дкоументы все
+
68. jigourt 31 20.02.14 14:01 Сейчас в теме
(66) Вожак, эм, а управляемая форма у этого документа вообще есть?
+
70. Вожак 20.02.14 14:02 Сейчас в теме
(68) jigourt, при открытии управляемая форма открывается же
+
71. Release 20.02.14 14:03 Сейчас в теме
(70) Вожак, какая форма установлена в качестве основной для документа?
+
74. Вожак 20.02.14 14:04 Сейчас в теме
(71) Release,
Прикрепленные файлы:
+
73. jigourt 31 20.02.14 14:03 Сейчас в теме
(70) Вожак, ну вообще ОткрытьФорму("Документ.НазваниеДокумента.ФормаДокумента");

еще есть кажется ОткрытьЗначение(СсылкаНаДок);
+
67. timothy 20.02.14 14:00 Сейчас в теме
(65) berator37, Мне очень интересно, можете скинуть на timothy_but@mail.ru ?!
+
72. Вожак 20.02.14 14:03 Сейчас в теме
и в параметрах и при запуске 1ске везде стоит управляемое приложение
+
75. Вожак 20.02.14 14:05 Сейчас в теме
Вот форма
Прикрепленные файлы:
+
76. jigourt 31 20.02.14 14:08 Сейчас в теме
(75) Вожак, надо код глядеть
+
77. Вожак 20.02.14 14:09 Сейчас в теме
   &НаКлиенте
   Процедура Команда1(Команда)
	   НаСервере();    
   КонецПроцедуры

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

&НаКлиенте
Процедура ОткрытиеФормы(Документ)
	
КонецПроцедуры

Показать
+
78. jigourt 31 20.02.14 14:10 Сейчас в теме
(77) Вожак, форму открываешь на сервере
+
79. Вожак 20.02.14 14:10 Сейчас в теме
(78) jigourt, на клиенте летит ошибка что функция не обнаружена
+
81. jigourt 31 20.02.14 14:13 Сейчас в теме
(79) Вожак, передай на клиент ссылку
ОткрытиеФормы(ТТН.Ссылка);

а на клиенте
Структура = Новый СТруктура("Ключ",Документ);
ОткрытьФорму("Документ.ТТН.ФормаДокумента",Структура);
+
82. Вожак 20.02.14 14:14 Сейчас в теме
(81) jigourt, сделал так:
ТТН.записать();
	ТТн.ПолучитьФорму("ФормаДокумента");
	ОткрытиеФормы(ТТН.Ссылка);
	//ТТн.поткрыть();
КонецПроцедуры

&НаКлиенте
Процедура ОткрытиеФормы(Документ)
Структура = Новый СТруктура("Ключ",Документ);
ОткрытьФорму("Документ.ТТН.ФормаДокумента",Структура);	
КонецПроцедуры
Показать

и все равно ругается:
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(91,2)}: Процедура или функция с указанным именем не определена (ОткрытиеФормы)
	<<?>>ОткрытиеФормы(ТТН.Ссылка); (Проверка: Сервер)
+
80. Вожак 20.02.14 14:11 Сейчас в теме
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(91,2)}: Процедура или функция с указанным именем не определена (ОткрытиеФормы)
<<?>>ОткрытиеФормы(ТТН); (Проверка: Сервер)

&НаКлиенте
Процедура ОткрытиеФормы(Документ)
Документ.Открыть();
КонецПроцедуры
+
83. jigourt 31 20.02.14 14:14 Сейчас в теме
(80) Вожак, а, блин, все никак не привыкну, сделай из серверной процедуры функцию, которая возвращает ТТН.Ссылка
+
84. jigourt 31 20.02.14 14:15 Сейчас в теме
   &НаКлиенте
   Процедура Команда1(Команда)
       Документ = НаСервере();
     Структура = Новый СТруктура("Ключ",Документ);
ОткрытьФорму("Документ.ТТН.ФормаДокумента",Структура);
   КонецПроцедуры

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

Показать
+
85. Вожак 20.02.14 14:17 Сейчас в теме
эм, а как открыть ее потом?
  &НаКлиенте
   Процедура Команда1(Команда)
	   НаСервере(); 
	   //ОткрытьФорму(ТТН);
   КонецПроцедуры

&Насервере
Функция НаСервере()
	
	СписокЗнач=новый СписокЗначений;
	
    Для Каждого Стр из Объект.ЗаказВКарьер Цикл
        СписокЗнач.добавить(Стр.ЗаказВКарьерКлиента);
	КонецЦикла;
	
	Запрос=Новый Запрос;
	Запрос.Текст=  	
	"ВЫБРАТЬ
	|	ЗаказыКлиентовОстатки.Номенклатура,
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток,
	|	ЗаказыКлиентовОстатки.СуммаОстаток,
	|	ЗаказыКлиентовОстатки.ЗаказКлиента,
	|	ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
	|ПОМЕСТИТЬ втОстатки
	|ИЗ
	|	РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
	|ГДЕ
	|	ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
	|	И ЗаказыКлиентовОстатки.ЗаказКлиента В(&СписокЗнач)
	|;
	|
	| X 
	|ВЫБРАТЬ
	|	втОстатки.Номенклатура,
	|	ЗаказВКарьерТовары.Цена,
	|	ЗаказВКарьерТовары.СтавкаНДС,
	|	ЗаказВКарьерТовары.ЕдиницаИзмерения,
	|	втОстатки.ЗаказаноОстаток КАК Количество,
	|	втОстатки.СуммаОстаток КАК СуммаСНДС,
	|	втОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
	|	ВЫБОР
	|		КОГДА втОстатки.ЗаказаноОстаток = 0
	|			ТОГДА 0
	|		ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * втОстатки.ЗаказаноОстаток
	|	КОНЕЦ КАК СуммаНДС,
	|	ЗаказВКарьерТовары.Ссылка.Контрагент КАК Контрагент,
	|	ЗаказВКарьерТовары.Ссылка.Дата КАК Дата,
	|	ЗаказВКарьерТовары.Ссылка.Менеджер КАК Менеджер,
	|	ЗаказВКарьерТовары.Ссылка.Организация КАК Организация
	|ИЗ
	|	втОстатки КАК втОстатки
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
	|		ПО втОстатки.Номенклатура = ЗаказВКарьерТовары.Номенклатура
	|			И втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьерТовары.Ссылка
	|ГДЕ
	|	ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)";
				  
				                  
    Запрос.УстановитьПараметр("СписокЗнач", СписокЗнач);
    Результат = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = Результат.Выбрать();
	
	ТТН=Документы.ТТН.СоздатьДокумент();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ТТН.Организация = ВыборкаДетальныеЗаписи.Организация;
		ТТН.Дата = ВыборкаДетальныеЗаписи.Дата;
		ТТН.Контрагент = ВыборкаДетальныеЗаписи.Контрагент;
		
		НоваяСтрока = ТТН.Товары.Добавить();
		
		Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
			Продолжить;
		КонецЕсли;	
			
			НоваяСтрока.ЕдиницаИзмерения 	= ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
			НоваяСтрока.Количество 				= ВыборкаДетальныеЗаписи.Количество;
			НоваяСтрока.Номенклатура 			= ВыборкаДетальныеЗаписи.Номенклатура;
			НоваяСтрока.СтавкаНДС 				= ВыборкаДетальныеЗаписи.СтавкаНДС;
			НоваяСтрока.Сумма 					= ВыборкаДетальныеЗаписи.Сумма;
			НоваяСтрока.СуммаНДС 				= ВыборкаДетальныеЗаписи.СуммаНДС;
			НоваяСтрока.СуммаСНДС 				= ВыборкаДетальныеЗаписи.СуммаНДС + ВыборкаДетальныеЗаписи.Сумма;
			НоваяСтрока.Цена 					= ВыборкаДетальныеЗаписи.Цена;
			
		КонецЦикла;
		
	ТТН.записать();
	Возврат ТТН.Ссылка;
	//ТТн.ПолучитьФорму("ФормаДокумента");
	//ОткрытиеФормы(ТТН.Ссылка);
	//ТТн.поткрыть();
КонецФункции
Показать
+
86. jigourt 31 20.02.14 14:18 Сейчас в теме
87. Вожак 20.02.14 14:19 Сейчас в теме
да, теперь открылось норм, спс
+
Внимание! Тема сдана в архив

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