Регистры

1. evairian 22.10.09 17:06 Сейчас в теме
здравствуйте!мне нужно вывести из регистра ПРОДАЖИ продажную цену.Как это сделать программно?Вот код,который у меня есть,помогите исправить ошибки и найти эту цену.
Процедура ВыводНом(ТМЦ,ТЗ,ТекЦена,Таб,РегПродажи,ПродСтоимость)
Для сч = 1 по ТЗ.КоличествоСтрок() Цикл
ТЗ.ПолучитьСтрокуПоНомеру(сч);
Если ТЗ.Родитель = ТМЦ Тогда
Иначе
Продолжить;
КонецЕсли;

Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда
Если тз.ТМЦ.МинЦена <>0 Тогда
ТекЦена = тз.ТМЦ.МинЦена;
ПродСтоимость = РегПродажи.ПродСтоимость;
КонецЕсли;
Таб.ВывестиСекцию("Группа" + тз.Уровень);
ВыводНом(тз.ТМЦ,ТЗ,ТекЦена,Таб,РегПродажи,ПродСтоимость);
Иначе
Таб.ВывестиСекцию("Строка" + тз.Уровень);
КонецЕсли;
КонецЦикла;

КонецПроцедуры

Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
|Наименование = Справочник.Номенклатура.Наименование;
|МинЦена = Справочник.Номенклатура.МинЦена;
|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
|"//}}ЗАПРОС
;

Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Номенклатура в ВыбТМЦ);";

КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Запр = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ПродСтоимость = Регистр.Продажи.ПродСтоимость;


|"//}}ЗАПРОС
;
Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

РегПродажи = СоздатьОбъект("Регистр.Продажи");
РегПродажи.ВыбратьИтоги();

Пока РегПродажи.ПолучитьИтог() = 0 Цикл
ПродСтоимость = РегПродажи.ПродСтоимость;

КонецЦикла;

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("НаименованиеГруппа");
Таб.ВывестиСекцию("Заголовок");


ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Уровень", "Число");
ТЗ.НоваяКолонка("Родитель", "Справочник.Номенклатура");
ТЗ.НоваяКолонка("ТМЦ" ,"Справочник.Номенклатура");


Пока (Запрос.Группировка(("Номенклатура")) = 1) Цикл

ТМЦ = Запрос.Номенклатура;
ТЗ.НоваяСтрока();
ТЗ.Уровень = ТМЦ.Уровень();
ТЗ.Родитель = ТМЦ.Родитель;
ТЗ.ТМЦ = ТМЦ;


КонецЦикла;

Для сч = 1 по ТЗ.КоличествоСтрок() цикл
ТЗ.ПолучитьСтрокуПоНомеру(сч);
Если ТЗ.Уровень = 1 Тогда
ТекЦена = тз.ТМЦ.МинЦена;
ПродСтоимость = РегПродажи.ПродСтоимость;
Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда
Таб.ВывестиСекцию("Группа" + тз.Уровень);
Иначе
Таб.ВывестиСекцию("Строка" + тз.Уровень);
КонецЕсли;

ВыводНом(ТЗ.ТМЦ,ТЗ,ТЗ.ТМЦ.МинЦена,Таб,РегПродажи,ПродСтоимость);


КонецЕсли;
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать("НаименованиеГруппа", "");
КонецПроцедуры
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
12. Altair777 644 22.10.09 17:45 Сейчас в теме
Примерно так :-)

Процедура Сформировать() 
	Перем Запрос, ТекстЗапроса, Таб; 
	//Создание объекта типа Запрос 
	Запрос = СоздатьОбъект("Запрос"); 
	ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать) 
	|Номенклатура = Регистр.Продажи.Номенклатура;
//	|Наименование = Регистр.Продажи.Номенклатура.Наименование;
	|МинЦена = Регистр.Продажи.Номенклатура.МинЦена;
	|ПродСтоимость = Регистр.Продажи.ПродСтоимость;
	|Количество = Регистр.Продажи.Количество;
	|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
	|"//}}ЗАПРОС 
	; 
	
	Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда 
		ТекстЗапроса = ТекстЗапроса + "Условие(Номенклатура в ВыбТМЦ);"; 
	КонецЕсли; 
	
	Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда 
		Возврат; 
	КонецЕсли; 

	Таб = СоздатьОбъект("Таблица"); 
	Таб.ИсходнаяТаблица("НаименованиеГруппа"); 
	Таб.ВывестиСекцию("Заголовок"); 
	
	ТЗ = СоздатьОбъект("ТаблицаЗначений"); 
	ТЗ.НоваяКолонка("Уровень", "Число"); 
	ТЗ.НоваяКолонка("Родитель", "Справочник.Номенклатура"); 
	ТЗ.НоваяКолонка("ТМЦ" ,"Справочник.Номенклатура"); 
	
	Пока (Запрос.Группировка(("Номенклатура")) = 1) Цикл 
		ТМЦ = Запрос.Номенклатура; 
		ТЗ.НоваяСтрока(); 
		ТЗ.Уровень = ТМЦ.Уровень(); 
		ТЗ.Родитель = ТМЦ.Родитель; 
		ТЗ.ТМЦ = ТМЦ; 
	КонецЦикла; 
	
	Для сч = 1 по ТЗ.КоличествоСтрок() цикл 
		ТЗ.ПолучитьСтрокуПоНомеру(сч); 
		Если ТЗ.Уровень = 1 Тогда 
			ТекЦена = тз.ТМЦ.МинЦена; 
			Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда 
				Таб.ВывестиСекцию("Группа" + тз.Уровень); 
			Иначе 
				Таб.ВывестиСекцию("Строка" + тз.Уровень); 
			КонецЕсли; 
//!!!!!!
//			ВыводНом(ТЗ.ТМЦ,ТЗ,ТЗ.ТМЦ.МинЦена,Таб,РегПродажи,ПродСтоимость); 
		КонецЕсли; 
	КонецЦикла; 
	Таб.ТолькоПросмотр(1); 
	Таб.Показать("НаименованиеГруппа", ""); 
КонецПроцедуры
Показать
13. Ёпрст 1063 22.10.09 18:00 Сейчас в теме
(12) Жалко, что нерабочий код, правда ?
:)))
14. Altair777 644 22.10.09 18:05 Сейчас в теме
(13) Может быть, я ни разу не запускал. Нет в моем типовой ТиС 9.2 Номенклатура.МинЦена
Нет у меня этой базы, и рисовать таблицу мне лень.
И задача стояла показать как... Вот я и показал.. примерно :)
А к тексту запроса претензии есть?
15. Ёпрст 1063 22.10.09 18:08 Сейчас в теме
(14) конечно есть - он НИЧЕГО не возвратит... если что.
2. Altair777 644 22.10.09 17:11 Сейчас в теме
ТекстЗапроса = 
"//{{ЗАПРОС(Сформировать) 
|ПродСтоимость = Регистр.Продажи.ПродСтоимость; 


|"//}}ЗАПРОС 
;

Это что?!
3. Ёпрст 1063 22.10.09 17:12 Сейчас в теме
(0) всё в топку... не сожалея.
4. Ёпрст 1063 22.10.09 17:13 Сейчас в теме
+3 Открыть потом Отчет Анализ Продаж и поглядеть - там всё есть.
5. evairian 22.10.09 17:16 Сейчас в теме
Мне сказали,что надо это сделать с отдельным запросом. Я что-то совсем запуталась. В отчете Анализ Продаж все очень запутано,я не могу разобраться.
6. evairian 22.10.09 17:20 Сейчас в теме
там может действительно написано что-то непонятное,но я только начинающий работник в этой области. Подскажите где ошибки.на отчет у меня выводится номенклатура,минимальная цена и вот продажная стоимость должна выводиться.
7. Altair777 644 22.10.09 17:23 Сейчас в теме
(6) Этого текста явно мало (из 2 коммента)
8. evairian 22.10.09 17:24 Сейчас в теме
там нужна видимо функция?
9. Altair777 644 22.10.09 17:24 Сейчас в теме
Должно хватить и одного запроса, только не по справочнику, а по регистру
10. evairian 22.10.09 17:26 Сейчас в теме
исправьте,пожалуйста,запрос для регистра в коде
11. Ёпрст 1063 22.10.09 17:34 Сейчас в теме
(10) Ээххх.. откройте конструктор запросов - и нарисуйте что вам нужно за 2 минуты.
Вам нужно выбрать переменные в текст запроса - Количество = Регистр.Продажи.Количество; Номенклатура = Регистр.Продажи.Номенклатура;Сумма = Регистр.Продажи.ПродСтоимость;
Далее добавить функцию по количеству и по сумме, добавить группировку по номенклатуре + условие
И...
наслаждаться положительными эмоциями...

ЗЫ : на выходе ваша цена = сумма/количество, если что.
16. Altair777 644 22.10.09 18:08 Сейчас в теме
17. Ёпрст 1063 22.10.09 18:09 Сейчас в теме
18. Altair777 644 22.10.09 18:13 Сейчас в теме
(17) И функцию.. но я когда отсылал (12) уже увидел (11)
Про функцию ты уже написал, не буду я же у тебя забирать пальму первенства :)
19. Altair777 644 22.10.09 18:18 Сейчас в теме
	ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать2)
	|Период с ВыбНачПериода по ВыбКонПериода;
	|Номенклатура = Регистр.Продажи.Номенклатура;
	|Количество = Регистр.Продажи.Количество;
	|ПродСтоимость = Регистр.Продажи.ПродСтоимость;
	|МинЦена = Регистр.Продажи.Номенклатура.МинЦена;
	|Функция КоличествоСумма = Сумма(Количество);
	|Функция ПродСтоимостьСумма = Сумма(ПродСтоимость);
	|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
	|"//}}ЗАПРОС
	;
Показать
20. evairian 23.10.09 10:19 Сейчас в теме
Спасибо вам большое,я попробую разобраться:-)
21. evairian 23.10.09 14:46 Сейчас в теме
подскажите,а если все-таки делать без запроса,что делать,если выводит только одну стоимость на все товары,а не как положено?
:oops:
22. Ёпрст 1063 23.10.09 15:13 Сейчас в теме
(21) искать ошибку в коде вестимо.
23. CheBurator 3119 23.10.09 19:23 Сейчас в теме
автору еще раз рекомендуется порыться в штатном отчете анализпродаж - разберешься, куча вопросов отпадет, опыт получишь...
24. user916894 15.02.18 12:25 Сейчас в теме
дравствуйте, помогите пожалуйста с задачкой:
Создать документ «Начисления». В шапке указывается:
1. Сотрудник;
2. Должность (Справочник «Должности»);
3. Месяц (Дата, в формате месяц год, то есть на форму дата выходит в виде названия месяца и года «Январь 2018»);
4. Ставка (Число 5/2) – часовая ставка сотрудника, хранится в регистре «Ставки оплаты сотрудников»;
5. Всего начислено.
В табличной части «Выполнено работ»:
1. Номенклатура
2. Наработано (проставляется количество наработанных часов сотрудником по данной номенклатуре, Сумма трудоемкостей по выполненным заданиям по текущей номенклатуре)
3. Начислено (Число, 10/2) – отражает сумму начислений по текущей номенклатуре.
В командную панель табличной части добавить кнопку «Рассчитать», при нажатии на которою автоматически заполняется табличная часть (отбираются выполненные задания текущего сотрудника за указанный месяц, группируются по номенклатуре, вычисляется сумма начислений=сумма наработанных часов по текущей номенклатуре * ставка сотрудника) и в поле «Всего начислено» (в шапке) проставляется итоговая сумма начислений.

Документ создан, создан регистр накопления с измерениями Сотрудник, Номенклатура и Ресурсом КоличесвоЧасов.
В регистре уже есть данные которые записал туда другой документ (Сотрудник, Номенклатура, Часы по данной Номенклатуре)
Как сформулироватть запрос регистру, Что бы заполнилась ТЧ док-та?
25. CheBurator 3119 16.02.18 01:13 Сейчас в теме
точно так как ежики - очень осторожно!
Оставьте свое сообщение

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