здравствуйте!мне нужно вывести из регистра ПРОДАЖИ продажную цену.Как это сделать программно?Вот код,который у меня есть,помогите исправить ошибки и найти эту цену.
Процедура ВыводНом(ТМЦ,ТЗ,ТекЦена,Таб,РегПродажи,ПродСтоимость)
Для сч = 1 по ТЗ.КоличествоСтрок() Цикл
ТЗ.ПолучитьСтрокуПоНомеру(сч);
Если ТЗ.Родитель = ТМЦ Тогда
Иначе
Продолжить;
КонецЕсли;
Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда
Если тз.ТМЦ.МинЦена <>0 Тогда
ТекЦена = тз.ТМЦ.МинЦена;
ПродСтоимость = РегПродажи.ПродСтоимость;
КонецЕсли;
Таб.ВывестиСекцию("Группа" + тз.Уровень);
ВыводНом(тз.ТМЦ,ТЗ,ТекЦена,Таб,РегПродажи,ПродСтоимость);
Иначе
Таб.ВывестиСекцию("Строка" + тз.Уровень);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
|Наименование = Справочник.Номенклатура.Наименование;
|МинЦена = Справочник.Номенклатура.МинЦена;
|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
|"//}}ЗАПРОС
;
Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Номенклатура в ВыбТМЦ);";
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Запр = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ПродСтоимость = Регистр.Продажи.ПродСтоимость;
|"//}}ЗАПРОС
;
Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
РегПродажи = СоздатьОбъект("Регистр.Продажи");
РегПродажи.ВыбратьИтоги();
Пока РегПродажи.ПолучитьИтог() = 0 Цикл
ПродСтоимость = РегПродажи.ПродСтоимость;
КонецЦикла;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("НаименованиеГруппа");
Таб.ВывестиСекцию("Заголовок");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Уровень", "Число");
ТЗ.НоваяКолонка("Родитель", "Справочник.Номенклатура");
ТЗ.НоваяКолонка("ТМЦ" ,"Справочник.Номенклатура");
Пока (Запрос.Группировка(("Номенклатура")) = 1) Цикл
ТМЦ = Запрос.Номенклатура;
ТЗ.НоваяСтрока();
ТЗ.Уровень = ТМЦ.Уровень();
ТЗ.Родитель = ТМЦ.Родитель;
ТЗ.ТМЦ = ТМЦ;
КонецЦикла;
Для сч = 1 по ТЗ.КоличествоСтрок() цикл
ТЗ.ПолучитьСтрокуПоНомеру(сч);
Если ТЗ.Уровень = 1 Тогда
ТекЦена = тз.ТМЦ.МинЦена;
ПродСтоимость = РегПродажи.ПродСтоимость;
Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда
Таб.ВывестиСекцию("Группа" + тз.Уровень);
Иначе
Таб.ВывестиСекцию("Строка" + тз.Уровень);
КонецЕсли;
ВыводНом(ТЗ.ТМЦ,ТЗ,ТЗ.ТМЦ.МинЦена,Таб,РегПродажи,ПродСтоимость);
КонецЕсли;
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать("НаименованиеГруппа", "");
КонецПроцедуры
Процедура ВыводНом(ТМЦ,ТЗ,ТекЦена,Таб,РегПродажи,ПродСтоимость)
Для сч = 1 по ТЗ.КоличествоСтрок() Цикл
ТЗ.ПолучитьСтрокуПоНомеру(сч);
Если ТЗ.Родитель = ТМЦ Тогда
Иначе
Продолжить;
КонецЕсли;
Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда
Если тз.ТМЦ.МинЦена <>0 Тогда
ТекЦена = тз.ТМЦ.МинЦена;
ПродСтоимость = РегПродажи.ПродСтоимость;
КонецЕсли;
Таб.ВывестиСекцию("Группа" + тз.Уровень);
ВыводНом(тз.ТМЦ,ТЗ,ТекЦена,Таб,РегПродажи,ПродСтоимость);
Иначе
Таб.ВывестиСекцию("Строка" + тз.Уровень);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
|Наименование = Справочник.Номенклатура.Наименование;
|МинЦена = Справочник.Номенклатура.МинЦена;
|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
|"//}}ЗАПРОС
;
Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Номенклатура в ВыбТМЦ);";
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Запр = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ПродСтоимость = Регистр.Продажи.ПродСтоимость;
|"//}}ЗАПРОС
;
Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
РегПродажи = СоздатьОбъект("Регистр.Продажи");
РегПродажи.ВыбратьИтоги();
Пока РегПродажи.ПолучитьИтог() = 0 Цикл
ПродСтоимость = РегПродажи.ПродСтоимость;
КонецЦикла;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("НаименованиеГруппа");
Таб.ВывестиСекцию("Заголовок");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Уровень", "Число");
ТЗ.НоваяКолонка("Родитель", "Справочник.Номенклатура");
ТЗ.НоваяКолонка("ТМЦ" ,"Справочник.Номенклатура");
Пока (Запрос.Группировка(("Номенклатура")) = 1) Цикл
ТМЦ = Запрос.Номенклатура;
ТЗ.НоваяСтрока();
ТЗ.Уровень = ТМЦ.Уровень();
ТЗ.Родитель = ТМЦ.Родитель;
ТЗ.ТМЦ = ТМЦ;
КонецЦикла;
Для сч = 1 по ТЗ.КоличествоСтрок() цикл
ТЗ.ПолучитьСтрокуПоНомеру(сч);
Если ТЗ.Уровень = 1 Тогда
ТекЦена = тз.ТМЦ.МинЦена;
ПродСтоимость = РегПродажи.ПродСтоимость;
Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда
Таб.ВывестиСекцию("Группа" + тз.Уровень);
Иначе
Таб.ВывестиСекцию("Строка" + тз.Уровень);
КонецЕсли;
ВыводНом(ТЗ.ТМЦ,ТЗ,ТЗ.ТМЦ.МинЦена,Таб,РегПродажи,ПродСтоимость);
КонецЕсли;
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать("НаименованиеГруппа", "");
КонецПроцедуры
По теме из базы знаний
- Обнуление остатков и движений регистров накопления (УФ)
- Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)
- Универсальная обработка корректировки справочников, документов и регистров (движений документов) 1С. УФ
- Универсальный редактор регистров с массовой заменой значений
- Обучение работе с СКД и регистрами накопления в 1С (Junior)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Примерно так :-)
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Номенклатура = Регистр.Продажи.Номенклатура;
// |Наименование = Регистр.Продажи.Номенклатура.Наименование;
|МинЦена = Регистр.Продажи.Номенклатура.МинЦена;
|ПродСтоимость = Регистр.Продажи.ПродСтоимость;
|Количество = Регистр.Продажи.Количество;
|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
|"//}}ЗАПРОС
;
Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Номенклатура в ВыбТМЦ);";
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("НаименованиеГруппа");
Таб.ВывестиСекцию("Заголовок");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Уровень", "Число");
ТЗ.НоваяКолонка("Родитель", "Справочник.Номенклатура");
ТЗ.НоваяКолонка("ТМЦ" ,"Справочник.Номенклатура");
Пока (Запрос.Группировка(("Номенклатура")) = 1) Цикл
ТМЦ = Запрос.Номенклатура;
ТЗ.НоваяСтрока();
ТЗ.Уровень = ТМЦ.Уровень();
ТЗ.Родитель = ТМЦ.Родитель;
ТЗ.ТМЦ = ТМЦ;
КонецЦикла;
Для сч = 1 по ТЗ.КоличествоСтрок() цикл
ТЗ.ПолучитьСтрокуПоНомеру(сч);
Если ТЗ.Уровень = 1 Тогда
ТекЦена = тз.ТМЦ.МинЦена;
Если тз.ТМЦ.ЭтоГруппа() = 1 Тогда
Таб.ВывестиСекцию("Группа" + тз.Уровень);
Иначе
Таб.ВывестиСекцию("Строка" + тз.Уровень);
КонецЕсли;
//!!!!!!
// ВыводНом(ТЗ.ТМЦ,ТЗ,ТЗ.ТМЦ.МинЦена,Таб,РегПродажи,ПродСтоимость);
КонецЕсли;
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать("НаименованиеГруппа", "");
КонецПроцедуры
Показать
там может действительно написано что-то непонятное,но я только начинающий работник в этой области. Подскажите где ошибки.на отчет у меня выводится номенклатура,минимальная цена и вот продажная стоимость должна выводиться.
(10) Ээххх.. откройте конструктор запросов - и нарисуйте что вам нужно за 2 минуты.
Вам нужно выбрать переменные в текст запроса - Количество = Регистр.Продажи.Количество; Номенклатура = Регистр.Продажи.Номенклатура;Сумма = Регистр.Продажи.ПродСтоимость;
Далее добавить функцию по количеству и по сумме, добавить группировку по номенклатуре + условие
И...
наслаждаться положительными эмоциями...
ЗЫ : на выходе ваша цена = сумма/количество, если что.
Вам нужно выбрать переменные в текст запроса - Количество = Регистр.Продажи.Количество; Номенклатура = Регистр.Продажи.Номенклатура;Сумма = Регистр.Продажи.ПродСтоимость;
Далее добавить функцию по количеству и по сумме, добавить группировку по номенклатуре + условие
И...
наслаждаться положительными эмоциями...
ЗЫ : на выходе ваша цена = сумма/количество, если что.
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать2)
|Период с ВыбНачПериода по ВыбКонПериода;
|Номенклатура = Регистр.Продажи.Номенклатура;
|Количество = Регистр.Продажи.Количество;
|ПродСтоимость = Регистр.Продажи.ПродСтоимость;
|МинЦена = Регистр.Продажи.Номенклатура.МинЦена;
|Функция КоличествоСумма = Сумма(Количество);
|Функция ПродСтоимостьСумма = Сумма(ПродСтоимость);
|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
|"//}}ЗАПРОС
;
Показать
дравствуйте, помогите пожалуйста с задачкой:
Создать документ «Начисления». В шапке указывается:
1. Сотрудник;
2. Должность (Справочник «Должности»);
3. Месяц (Дата, в формате месяц год, то есть на форму дата выходит в виде названия месяца и года «Январь 2018»);
4. Ставка (Число 5/2) – часовая ставка сотрудника, хранится в регистре «Ставки оплаты сотрудников»;
5. Всего начислено.
В табличной части «Выполнено работ»:
1. Номенклатура
2. Наработано (проставляется количество наработанных часов сотрудником по данной номенклатуре, Сумма трудоемкостей по выполненным заданиям по текущей номенклатуре)
3. Начислено (Число, 10/2) – отражает сумму начислений по текущей номенклатуре.
В командную панель табличной части добавить кнопку «Рассчитать», при нажатии на которою автоматически заполняется табличная часть (отбираются выполненные задания текущего сотрудника за указанный месяц, группируются по номенклатуре, вычисляется сумма начислений=сумма наработанных часов по текущей номенклатуре * ставка сотрудника) и в поле «Всего начислено» (в шапке) проставляется итоговая сумма начислений.
Документ создан, создан регистр накопления с измерениями Сотрудник, Номенклатура и Ресурсом КоличесвоЧасов.
В регистре уже есть данные которые записал туда другой документ (Сотрудник, Номенклатура, Часы по данной Номенклатуре)
Как сформулироватть запрос регистру, Что бы заполнилась ТЧ док-та?
Создать документ «Начисления». В шапке указывается:
1. Сотрудник;
2. Должность (Справочник «Должности»);
3. Месяц (Дата, в формате месяц год, то есть на форму дата выходит в виде названия месяца и года «Январь 2018»);
4. Ставка (Число 5/2) – часовая ставка сотрудника, хранится в регистре «Ставки оплаты сотрудников»;
5. Всего начислено.
В табличной части «Выполнено работ»:
1. Номенклатура
2. Наработано (проставляется количество наработанных часов сотрудником по данной номенклатуре, Сумма трудоемкостей по выполненным заданиям по текущей номенклатуре)
3. Начислено (Число, 10/2) – отражает сумму начислений по текущей номенклатуре.
В командную панель табличной части добавить кнопку «Рассчитать», при нажатии на которою автоматически заполняется табличная часть (отбираются выполненные задания текущего сотрудника за указанный месяц, группируются по номенклатуре, вычисляется сумма начислений=сумма наработанных часов по текущей номенклатуре * ставка сотрудника) и в поле «Всего начислено» (в шапке) проставляется итоговая сумма начислений.
Документ создан, создан регистр накопления с измерениями Сотрудник, Номенклатура и Ресурсом КоличесвоЧасов.
В регистре уже есть данные которые записал туда другой документ (Сотрудник, Номенклатура, Часы по данной Номенклатуре)
Как сформулироватть запрос регистру, Что бы заполнилась ТЧ док-та?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот