|
v7: Цена номенклатуры из Документа поступление МПЗ прочее | ☑ | ||
---|---|---|---|---|
0
Нечай
09.03.17
✎
11:42
|
Есть обработка, которая формирует таблицу номенклатуры, вид, где она находится и остаток.
Задача в том, чтобы подтянуть еще цену этой номенклатуры из именно последнего документа ПоступлениеМПЗПрочее. В 7 вообще не разбираюсь, помогите пожалуйста. //******************************************* // Процедура генерации запроса Сформировать. // Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |МПЗ = Регистр.МестаХранения.МПЗ; |ВидМПЗ = Регистр.МестаХранения.ВидМПЗ; |МестоХранения = Регистр.МестаХранения.МестоХранения; |Количество = Регистр.МестаХранения.Количество; |ИспользоватьВЗаказахСклад = Регистр.МестаХранения.МестоХранения.ИспользоватьВЗаказахСклад; |Функция КоличествоКонОст = КонОст(Количество); |Группировка МПЗ без упорядочивания; |Группировка МестоХранения; |Группировка ВидМПЗ; |Условие(ИспользоватьВЗаказахСклад = 1); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей МестоХранения Если Запрос.МПЗ.ЭтоГруппа()=1 Тогда Таб.ВывестиСекцию("ГруппаМПЗ"); Иначе Таб.ВывестиСекцию("МПЗ"); КонецЕсли; Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей ВидМПЗ Пока Запрос.Группировка(3) = 1 Цикл // Заполнение полей МПЗ Таб.ВывестиСекцию("МестоХранения"); КонецЦикла; КонецЦикла; КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
|||
1
Злопчинский
09.03.17
✎
16:58
|
(0) если в регистре нет учета остатков в разрезе партий и в партиях нет ссылки на партиеобразующий документ - то будет (_._) - придется дербанить список документов.
вдобавок какую цену брать если ВДРУГ в доекументе поступления один и тот же МПА с двумя разными ценами (в особо извращенных случаях) и такое бывает... ну то, что ты умеешь тыкать галочки в конфигураторе - мы увидели. |
|||
2
Нечай
27.03.17
✎
14:45
|
Возвращаюсь к теме,
Написал запрос, цену вытягиваю, но мне нужно сделать сортировка по дате документа. Тоесть вытянуть цену из самого последнего документа. Подскажите как сделать, эта сортировка не работает. Запрос2 = СоздатьОбъект("Запрос"); ТекстЗапроса2 = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ДатаД = Документ.ПоступлениеМПЗПрочее.ДатаДок; |Ном = Документ.ПоступлениеМПЗПрочее.МПЗ; |Цена = Документ.ПоступлениеМПЗПрочее.Цена; //|Группировка ДатаД; //|Группировка Цена Упорядочить по ДатаД Возр; |Условие(Ном = ТекНом); |"//}}ЗАПРОС |
|||
3
Nuobu
27.03.17
✎
14:46
|
Извините за оффтоп
Вот это: // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Это что такое? Зачем оно? |
|||
4
Нечай
27.03.17
✎
14:49
|
Не знаю) это не я писал.
|
|||
5
Нечай
27.03.17
✎
14:53
|
Без этого не работает вообще.
|
|||
6
Нечай
27.03.17
✎
14:55
|
Пробовал сортировать по номеру документа, все равно ошибка аналогичная.
Группировка Цена Упорядочить по <<?>> ДатаД Возр; Запрос[7] : Ожидается конкретизация переменной 'Цена' |
|||
7
Nuobu
27.03.17
✎
14:55
|
(5) Я не о том, что без него не работает.
Без него - работает. Не работает без: Запрос.Выполнить(ТекстЗапроса); Я про проверку на правильность запроса. Я, просто, восьмёрочник и мне эта проверка непонятна. |
|||
8
пипец
27.03.17
✎
14:59
|
чтобы при ошибке в запросе ошибался )))) а не молчал
|
|||
9
Nuobu
27.03.17
✎
15:00
|
(8) А он обычно молчит?
|
|||
10
Нечай
27.03.17
✎
15:02
|
Ребят все круто) но как группировку то сделать, подскажите.
|
|||
11
Нечай
27.03.17
✎
15:31
|
Ну что тут гуру 7 нет?
|
|||
12
Salimbek
27.03.17
✎
15:55
|
(11) Я стандартными запросами 7-ки давно уже не пользуюсь. Или через 1SQLite или через 1С++ (в зависимости от типа базы) инфу собираю.
|
|||
13
Salimbek
27.03.17
✎
15:57
|
А так - посмотри движения по регистрам у твоего документа. Вдруг он там сам пишет куда-нибудь типа "Цены закупочные". Тогда вместо всей этой фигни можешь просто брать последнее значение из этого регистра.
|
|||
14
dedmoroz777
27.03.17
✎
16:08
|
Просто |Группировка Документ;
Они будут уже отсортированы по дате. Получай последний и проверяй на цену<>0 |
|||
15
Нечай
27.03.17
✎
16:17
|
Какую бы я группировку не делал все равно пишет аналогичную ошибку.
|
|||
16
Нечай
27.03.17
✎
16:19
|
Вот весь код, может в чем-то другом косяк...
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Запрос2, ТекстЗапроса2, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |МПЗ = Регистр.МестаХранения.МПЗ; |ВидМПЗ = Регистр.МестаХранения.ВидМПЗ; |МестоХранения = Регистр.МестаХранения.МестоХранения; |Количество = Регистр.МестаХранения.Количество; |ИспользоватьВЗаказахСклад = Регистр.МестаХранения.МестоХранения.ИспользоватьВЗаказахСклад; |Функция КоличествоКонОст = КонОст(Количество); |Группировка МПЗ без упорядочивания; |Группировка МестоХранения; |Группировка ВидМПЗ; |Условие(ИспользоватьВЗаказахСклад = 1); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл ТекНом = Запрос.МПЗ; Запрос2 = СоздатьОбъект("Запрос"); ТекстЗапроса2 = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ДатаД = Документ.ПоступлениеМПЗПрочее.ДатаДок; |Ном = Документ.ПоступлениеМПЗПрочее.МПЗ; |Цена = Документ.ПоступлениеМПЗПрочее.Цена; //|Группировка ДатаД; //|Группировка Цена Упорядочить по ДатаД Возр; |Условие(Ном = ТекНом); |"//}}ЗАПРОС ; Запрос2.Выполнить(ТекстЗапроса2); // Заполнение полей МестоХранения Если Запрос.МПЗ.ЭтоГруппа()=1 Тогда Таб.ВывестиСекцию("ГруппаМПЗ"); Иначе Таб.ВывестиСекцию("МПЗ"); КонецЕсли; Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей ВидМПЗ Пока Запрос.Группировка(3) = 1 Цикл // Заполнение полей МПЗ Таб.ВывестиСекцию("МестоХранения"); КонецЦикла; КонецЦикла; КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
|||
17
Нечай
27.03.17
✎
16:28
|
По движениям пишет в "Партии", количество и сумму. Закупочных цен нет, впринципе и не было у них. У них бардак полный, оч много документов где просто цена даже не стоит.
|
|||
18
Злопчинский
27.03.17
✎
16:37
|
выкинь нахрен тонны гуано, которые ты сюда вываливаешь.
приведи ОДИН ВАРИАНТ КОДА и приведи ошибку, которая вываливается в этом коде. всё. разбираться в тоннах навоза - рабство отменили давно. |
|||
19
пипец
27.03.17
✎
17:03
|
(17) делай аналогично
//******************************************* // Процедура генерации запроса Сформировать. // Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ПриходныйОрдер = Документ.ПриходныйОрдер.ТекущийДокумент; |Сумма = Документ.ПриходныйОрдер.Сумма; |Функция СуммаСумма = Сумма(Сумма); |Группировка ПриходныйОрдер; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей ПриходныйОрдер Таб.ВывестиСекцию("ПриходныйОрдер"); КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |