Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Запрос = Новый Запрос;
Запрос.Текст =
"|ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(Акции.ДатаАкции, ДЕНЬ) КАК ДатаАкции
| ИЗ
| РегистрСведений.Акции КАК Акции
| ГДЕ
| Акции.ДатаАкции >= &НачПериода
| И Акции.БесплатныеМатериалы
| И Акции.Акция = &Акция
| И Акции.ДатаАкции <= &КонПериода
| И Акции.Организации = &Организация";
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Запрос.УстановитьПараметр("Акция", Акция);
Запрос.УстановитьПараметр("Организация", Организация);
СписокДат=Новый СписокЗначений;
СписокДат.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ДатаАкции"));
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) * ЦеныНоменклатурыСрезПоследних.Цена КАК СуммаПродажи,
| ЦеныНоменклатурыСрезПоследних.Цена,
| ДанныеДляНачисленияЗП.Материал,
| НАЧАЛОПЕРИОДА(ДанныеДляНачисленияЗП.Период, ДЕНЬ) КАК Период
|ИЗ
| РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
| ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ПО ДанныеДляНачисленияЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура
|ГДЕ
| ДанныеДляНачисленияЗП.Период МЕЖДУ &ДатаНач И &ДатаКон
| И ДанныеДляНачисленияЗП.Организация = &Организация
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыСрезПоследних.Цена,
| ДанныеДляНачисленияЗП.Материал,
|
| ДанныеДляНачисленияЗП.Период";
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("Организация", Организация);
ПоказатьЕсть такая конструкция. первый запрос выбирает все даты по которым были акции, и передает их в список значений, второй запрос должен по этим датам по считать стоимость материалов которые были потрачены по этим датам. НЕ СЧИТАЕТ!!! Что не так делаю? Считает он все материалы которые продавались за этот период. И еще в таблицу он мне выводит две единицы измерения нужно считать только по одной. Вопрос как сделать так что бы расчет был только по тем датам которые в первом запросе?
По теме из базы знаний
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Совместимая консоль запросов для платформы 8.2 и 8.3
- Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД
- Отбор на список значений из файла (или любой другой)
- Все консоли запросов для 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Во втором запросе через параметр передать список значений
Выбрать
СписокДат.ДатаАкции
ИЗ &СписокДат как Список Дат
Вопрос в том, ЧТО ОБЩЕГО У ПЕРВОГО ЗАПРОСА И ВТОРОГО? Как их объединить? По товару? Почему тогда не сделать все это в одном запросе?
Вы передаете СписокЗначений через функцию?
Выбрать
СписокДат.ДатаАкции
ИЗ &СписокДат как Список Дат
Вопрос в том, ЧТО ОБЩЕГО У ПЕРВОГО ЗАПРОСА И ВТОРОГО? Как их объединить? По товару? Почему тогда не сделать все это в одном запросе?
Вы передаете СписокЗначений через функцию?
первый запрос помещаешь во временную таблицу, второй запрос левым соединением к временной таблице по ДатаАкции = период.
А еще лучше - открыть консоль запросов, и тестировать, тестировать, тестировать, пока не получится нужный результат. Подавляющее большинство задач можно решить одним запросом. Не все - но большинство. ;)
А еще лучше - открыть консоль запросов, и тестировать, тестировать, тестировать, пока не получится нужный результат. Подавляющее большинство задач можно решить одним запросом. Не все - но большинство. ;)
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(Акции.ДатаАкции, ДЕНЬ) КАК ДатаАкции
ПОМЕСТИТЬ ТабДаты
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции >= &НачПериода
И Акции.БесплатныеМатериалы
И Акции.Акция = &Акция
И Акции.ДатаАкции <= &КонПериода
И Акции.Организации = &Организация
;
//////////////////////////////////////////////////////////// /////////////////////////
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) * ЦеныНоменклатурыСрезПоследних.Цена КАК СуммаПродажи,
ЦеныНоменклатурыСрезПоследних.Цена,
ДанныеДляНачисленияЗП.Материал
ИЗ
ТабДаты КАК ТабДаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ДанныеДляНачисленияЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура
ПО ТабДаты.ДатаАкции = ДанныеДляНачисленияЗП.Период
ГДЕ
ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыСрезПоследних.Цена,
ДанныеДляНачисленияЗП.Материал
ПоказатьДату отбирает а вот в таблице с материалами пусто.
ВЫБРАТЬ
Акции.ДатаАкции КАК ДатаАкции,
Акции.БесплатныеМатериалы,
Акции.Акция
ПОМЕСТИТЬ ТабДата
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция
Показать1-й
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) * ЦеныНоменклатурыСрезПоследних.Цена КАК СуммаПродажи,
ЦеныНоменклатурыСрезПоследних.Цена,
ДанныеДляНачисленияЗП.Материал
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ДанныеДляНачисленияЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
ДанныеДляНачисленияЗП.Период МЕЖДУ &ДатаНач И &ДатаКон
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыСрезПоследних.Цена,
ДанныеДляНачисленияЗП.Материал
Показать2-й
(24) progaoff, Что-то у вас всё запутано в запросах.
Как я понял есть акции и их даты.
Есть данные по начисленияЗП и надо ко всем материалам подобрать цену действующую в день день акции, так?
Если так то первый запрос верный, а второй сделайте просто связь данныхпоЗП левую с регистром цен по материалу, а регистр цен левую связь с датами акций по материалу и дате акций.
P.S. Нет конфы под руками.
Как я понял есть акции и их даты.
Есть данные по начисленияЗП и надо ко всем материалам подобрать цену действующую в день день акции, так?
Если так то первый запрос верный, а второй сделайте просто связь данныхпоЗП левую с регистром цен по материалу, а регистр цен левую связь с датами акций по материалу и дате акций.
P.S. Нет конфы под руками.
(28) ZergKRSK, Сделай тогда левую связь Акции.Дата = Регистр.Дата
И потом Регистр.Материал = Цена.Материал и Регистр.дата = Цена.Дата
Получишь отбор всех материалов по дата и цены для этих материалов на дату документа.
Должно сработать, везде левое соединения.
И потом Регистр.Материал = Цена.Материал и Регистр.дата = Цена.Дата
Получишь отбор всех материалов по дата и цены для этих материалов на дату документа.
Должно сработать, везде левое соединения.
ВЫБРАТЬ
Акции.ДатаАкции КАК ДатаАкции,
Акции.БесплатныеМатериалы,
Акции.Акция
ПОМЕСТИТЬ ТабДата
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) * ЦеныНоменклатурыСрезПоследних.Цена КАК СуммаПродажи,
ЦеныНоменклатурыСрезПоследних.Цена,
ДанныеДляНачисленияЗП.Материал,
ТабДата.ДатаАкции
ИЗ
ТабДата КАК ТабДата
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ДанныеДляНачисленияЗП.Материал = ЦеныНоменклатурыСрезПоследних.Цена
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ПО ТабДата.ДатаАкции = ДанныеДляНачисленияЗП.Период
ГДЕ
ДанныеДляНачисленияЗП.Период МЕЖДУ &ДатаНач И &ДатаКон
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыСрезПоследних.Цена,
ДанныеДляНачисленияЗП.Материал,
ТабДата.ДатаАкции
ПоказатьВЫБРАТЬ
Акции.ДатаАкции КАК ДатаАкции,
Акции.БесплатныеМатериалы,
Акции.Акция
ПОМЕСТИТЬ ТабДата
ИЗ
РегистрСведений.Акции КАК Акции
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) * ЦеныНоменклатурыСрезПоследних.Цена КАК СуммаПродажи,
ЦеныНоменклатурыСрезПоследних.Цена,
ДанныеДляНачисленияЗП.Материал,
ТабДата.ДатаАкции
ИЗ
ТабДата КАК ТабДата
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ДанныеДляНачисленияЗП.Период = ЦеныНоменклатурыСрезПоследних.Период
ПО ТабДата.ДатаАкции = ДанныеДляНачисленияЗП.Период
Показать
Попробуй этот запрос:
ВЫБРАТЬ Различные
Началопериода(Акции.ДатаАкции, День) КАК ДатаАкции
ПОМЕСТИТЬ ВтДатыАкции
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция;
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) КАК КолвоМатериала,
ДанныеДляНачисленияЗП.Материал,
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) КАК ДеньАкции
Поместить ВтДанныеЗП
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ГДЕ
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
НачалоПериода(ДанныеДляНачисленияЗП.Период, День),
ДанныеДляНачисленияЗП.Материал;
Выбрать
ВтДанныеЗП.КолвоМатериала * isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК СтоимостьМатериала,
ВтДанныеЗП.Материал,
isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК Цена
ИЗ ВтДанныеЗП КАК ВтДанныеЗП
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВтДанныеЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура И
НачалоПериода(ЦеныНоменклатурыСрезПоследних.Период, День) = ВтДанныеЗП.ДеньАкции
Показать
(44) progaoff, чтобы правильно считалась сумма тебе нужно получить цену на материал на дату акции, а для этого срез последних по цене не подходит так как получает самую последнюю цену на текущую дату.
Здесь нужно брать физическую таблицу цены и накладывать на нее условие по дате и по номенклатуре. В общем, чтобы было все нормально запрос должен быть еще раза в 2 больше
Здесь нужно брать физическую таблицу цены и накладывать на нее условие по дате и по номенклатуре. В общем, чтобы было все нормально запрос должен быть еще раза в 2 больше
(53) progaoff,
Попробуй этот и в параметрах проставь единицы измерения.
Хотя можно задать связь, если в записях про акции хранятся единицы измерения
ВЫБРАТЬ Различные
Началопериода(Акции.ДатаАкции, День) КАК ДатаАкции
ПОМЕСТИТЬ ВтДатыАкции
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция;
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) КАК КолвоМатериала,
ДанныеДляНачисленияЗП.Материал,
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) КАК ДеньАкции
Поместить ВтДанныеЗП
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ГДЕ
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
НачалоПериода(ДанныеДляНачисленияЗП.Период, День),
ДанныеДляНачисленияЗП.Материал;
Выбрать
НачалоПериода(ЦеныНоменклатуры.Период, День) КАК ДатаЦены,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена
Поместить ВтЦеныНоменклатурыСрезПоследних
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Активность И
ЦеныНоменклатуры.Организация = &Организация
И ЦеныНоменклатуры.Номенклатура В (Выбрать Различные ВтДанныеЗП.Материал ИЗ ВтДанныеЗП)
И НачалоПериода(ЦеныНоменклатуры.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ЦеныНоменклатуры.ЕдИзм = &ЕдиницаИзмерения;
Выбрать
ВтДанныеЗП.КолвоМатериала * isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК СтоимостьМатериала,
ВтДанныеЗП.Материал,
isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК Цена
ИЗ ВтДанныеЗП КАК ВтДанныеЗП
ЛЕВОЕ СОЕДИНЕНИЕ ВтЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВтДанныеЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура И
ЦеныНоменклатурыСрезПоследних.ДатаЦены = ВтДанныеЗП.ДеньАкции
ПоказатьПопробуй этот и в параметрах проставь единицы измерения.
Хотя можно задать связь, если в записях про акции хранятся единицы измерения
Не намного больше, делай следующее, увы не в консоле пишу, но смысл ты поймёшь:
1. Запрос на даты акции, сворачивает по датам в ТЗ. (Поле дата). Получаем все даты акций для расчета цены.
2. запрос по материалам акций в ТЗ, сворачиваешь по материалу (Материал). Получаем материалы для расчеты цены
3. Запрос по левым связям с Регистром цен по материалу и дате в ТЗ. (Материал, цена, дата) Получаем материалы и цены на все даты
4. Запрос по данным акциям связь с ТЗ 3. (Поля Акция, материал, цена, дата) (отбираем нужные акции, материала по ним и цены на даты акций.
5. Запрос по Данным ЗП - ну тут как и было только цены у нас уже есть
1. Запрос на даты акции, сворачивает по датам в ТЗ. (Поле дата). Получаем все даты акций для расчета цены.
2. запрос по материалам акций в ТЗ, сворачиваешь по материалу (Материал). Получаем материалы для расчеты цены
3. Запрос по левым связям с Регистром цен по материалу и дате в ТЗ. (Материал, цена, дата) Получаем материалы и цены на все даты
4. Запрос по данным акциям связь с ТЗ 3. (Поля Акция, материал, цена, дата) (отбираем нужные акции, материала по ним и цены на даты акций.
5. Запрос по Данным ЗП - ну тут как и было только цены у нас уже есть
В запросе, изменил только единицы измерения, взял по клласификатору, так как у каждого товара своя еденица а искать ее в этом справочнике полное г.... Справочник материалы имеет только реквизит номенклатура. Этот реквизит ссылаетс на справочник Номенклатура
Приблизительно так:
Только ОсновнаяЕдиницаИзмерения заменить на имя твоего реквизита в номенклатуре
ВЫБРАТЬ Различные
Началопериода(Акции.ДатаАкции, День) КАК ДатаАкции
ПОМЕСТИТЬ ВтДатыАкции
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция;
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) КАК КолвоМатериала,
ДанныеДляНачисленияЗП.Материал,
ДанныеДляНачисленияЗП.Материал.Номенклатура.ОсновнаяЕдиницаИзмерения КАК ЕдиницаИзмерения
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) КАК ДеньАкции
Поместить ВтДанныеЗП
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ГДЕ
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
НачалоПериода(ДанныеДляНачисленияЗП.Период, День),
ДанныеДляНачисленияЗП.Материал,
ДанныеДляНачисленияЗП.Материал.Номенклатура.ОсновнаяЕдиницаИзмерения;
Выбрать
НачалоПериода(ЦеныНоменклатуры.Период, День) КАК ДатаЦены,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена,
ЦеныНоменклатуры.ЕдИзм КАК ЕдиницаИзмерения
Поместить ВтЦеныНоменклатурыСрезПоследних
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Активность И
ЦеныНоменклатуры.Организация = &Организация
И ЦеныНоменклатуры.Номенклатура В (Выбрать Различные ВтДанныеЗП.Материал ИЗ ВтДанныеЗП)
И НачалоПериода(ЦеныНоменклатуры.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
Выбрать
ВтДанныеЗП.КолвоМатериала * isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК СтоимостьМатериала,
ВтДанныеЗП.Материал,
isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК Цена
ИЗ ВтДанныеЗП КАК ВтДанныеЗП
ЛЕВОЕ СОЕДИНЕНИЕ ВтЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВтДанныеЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура И
ВтДанныеЗП.ЕдиницаИзмерения = ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения И
ЦеныНоменклатурыСрезПоследних.ДатаЦены = ВтДанныеЗП.ДеньАкции
ПоказатьТолько ОсновнаяЕдиницаИзмерения заменить на имя твоего реквизита в номенклатуре
ВЫБРАТЬ Различные
Началопериода(Акции.ДатаАкции, День) КАК ДатаАкции
ПОМЕСТИТЬ ВтДатыАкции
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция;
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) КАК КолвоМатериала,
ДанныеДляНачисленияЗП.Материал,
Номенклатура.ОсновнаяЕдиницаИзмерения КАК ЕдиницаИзмерения,
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) КАК ДеньАкции
Поместить ВтДанныеЗП
ИЗ
Справочник.Номенклатура.ОсновнаяЕденицаИзмерения,
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ГДЕ
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
НачалоПериода(ДанныеДляНачисленияЗП.Период, День),
ДанныеДляНачисленияЗП.Материал,
Справочник.Номенклатура.ОсновнаяЕдиницаИзмерения;
Выбрать
НачалоПериода(ЦеныНоменклатуры.Период, День) КАК ДатаЦены,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена,
ЦеныНоменклатуры.ЕдИзм КАК ЕдиницаИзмерения
Поместить ВтЦеныНоменклатурыСрезПоследних
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Активность И
ЦеныНоменклатуры.Организация = &Организация
И ЦеныНоменклатуры.Номенклатура В (Выбрать Различные ВтДанныеЗП.Материал ИЗ ВтДанныеЗП)
И НачалоПериода(ЦеныНоменклатуры.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции);
Выбрать
ВтДанныеЗП.КолвоМатериала * isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК СтоимостьМатериала,
ВтДанныеЗП.Материал,
isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК Цена
ИЗ ВтДанныеЗП КАК ВтДанныеЗП
ЛЕВОЕ СОЕДИНЕНИЕ ВтЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВтДанныеЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура И
ВтДанныеЗП.ЕдиницаИзмерения = ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения И
ЦеныНоменклатурыСрезПоследних.ДатаЦены = ВтДанныеЗП.ДеньАкции
Показать
(85) progaoff, кто просил менять так мой запрос? этот запрос неправильный, сделай как у меня только поменяй "ОсновнаяЕдиницаИзмерения" на "ОсновнаяЕденицаИзмерения"
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) КАК КолвоМатериала,
ДанныеДляНачисленияЗП.Материал,
Номенклатура.ОсновнаяЕдиницаИзмерения КАК ЕдиницаИзмерения,
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) КАК ДеньАкции
Поместить ВтДанныеЗП
ИЗ
Справочник.Номенклатура.ОсновнаяЕденицаИзмерения,
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ГДЕ
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
НачалоПериода(ДанныеДляНачисленияЗП.Период, День),
ДанныеДляНачисленияЗП.Материал,
Справочник.Номенклатура.ОсновнаяЕдиницаИзмерения;
Показать
Вернул твой запрос
{Форма.Форма.Форма(773)}: Ошибка при вызове метода контекста (Выполнить): {(4, 36)}: Поле не найдено "ДанныеДляНачисленияЗП.Материал.Номенклатура.ОсновнаяЕдиницаИзмерения"
ДанныеДляНачисленияЗП.Материал.<<?>>Номенклатура.ОсновнаяЕдиницаИзмерения КАК ЕдиницаИзмерения,
{Форма.Форма.Форма(773)}: Ошибка при вызове метода контекста (Выполнить): {(4, 36)}: Поле не найдено "ДанныеДляНачисленияЗП.Материал.Номенклатура.ОсновнаяЕдиницаИзмерения"
ДанныеДляНачисленияЗП.Материал.<<?>>Номенклатура.ОсновнаяЕдиницаИзмерения КАК ЕдиницаИзмерения,
Тогда будет вот так:
ВЫБРАТЬ Различные
Началопериода(Акции.ДатаАкции, День) КАК ДатаАкции
ПОМЕСТИТЬ ВтДатыАкции
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция;
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) КАК КолвоМатериала,
ДанныеДляНачисленияЗП.Материал,
ДанныеДляНачисленияЗП.Материал.ОсновнаяЕденицаИзмерения КАК ЕдиницаИзмерения
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) КАК ДеньАкции
Поместить ВтДанныеЗП
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ГДЕ
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
НачалоПериода(ДанныеДляНачисленияЗП.Период, День),
ДанныеДляНачисленияЗП.Материал,
ДанныеДляНачисленияЗП.Материал.ОсновнаяЕденицаИзмерения;
Выбрать
НачалоПериода(ЦеныНоменклатуры.Период, День) КАК ДатаЦены,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена,
ЦеныНоменклатуры.ЕдИзм КАК ЕдиницаИзмерения
Поместить ВтЦеныНоменклатурыСрезПоследних
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Активность И
ЦеныНоменклатуры.Организация = &Организация
И ЦеныНоменклатуры.Номенклатура В (Выбрать Различные ВтДанныеЗП.Материал ИЗ ВтДанныеЗП)
И НачалоПериода(ЦеныНоменклатуры.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
Выбрать
ВтДанныеЗП.КолвоМатериала * isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК СтоимостьМатериала,
ВтДанныеЗП.Материал,
isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК Цена
ИЗ ВтДанныеЗП КАК ВтДанныеЗП
ЛЕВОЕ СОЕДИНЕНИЕ ВтЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВтДанныеЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура И
ВтДанныеЗП.ЕдиницаИзмерения = ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения И
ЦеныНоменклатурыСрезПоследних.ДатаЦены = ВтДанныеЗП.ДеньАкции
Показать
{Форма.Форма.Форма(1531)}: Ошибка при вызове метода контекста (НайтиПараметры): {(13, 36)}: Поле не найдено "ДанныеДляНачисленияЗП.Материал.ОсновнаяЕденицаИзмерения"
ДанныеДляНачисленияЗП.Материал.<<?>>ОсновнаяЕденицаИзмерения КАК ЕдиницаИзмерения,капец
ДанныеДляНачисленияЗП.Материал.<<?>>ОсновнаяЕденицаИзмерения КАК ЕдиницаИзмерения,капец
ВЫБРАТЬ Различные
Началопериода(Акции.ДатаАкции, День) КАК ДатаАкции
ПОМЕСТИТЬ ВтДатыАкции
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция;
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) КАК КолвоМатериала,
ДанныеДляНачисленияЗП.Материал,
ДанныеДляНачисленияЗП.Материал.ОсновнаяЕдиницаИзмерения КАК ЕдиницаИзмерения,
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) КАК ДеньАкции
Поместить ВтДанныеЗП
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ГДЕ
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
НачалоПериода(ДанныеДляНачисленияЗП.Период, День),
ДанныеДляНачисленияЗП.Материал,
ДанныеДляНачисленияЗП.Материал.ОсновнаяЕдиницаИзмерения;
Выбрать
НачалоПериода(ЦеныНоменклатуры.Период, День) КАК ДатаЦены,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена,
ЦеныНоменклатуры.ЕдИзм КАК ЕдиницаИзмерения
Поместить ВтЦеныНоменклатурыСрезПоследних
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
//ГДЕ
//ЦеныНоменклатуры.Активность
//ЦеныНоменклатуры.Организация = &Организация
//И ЦеныНоменклатуры.Номенклатура В (Выбрать Различные ВтДанныеЗП.Материал ИЗ ВтДанныеЗП)
//И НачалоПериода(ЦеныНоменклатуры.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции);
;
Выбрать
ВтДанныеЗП.КолвоМатериала * isnull (ЦеныНоменклатурыСрезПоследних.Цена,0) КАК СтоимостьМатериала,
ВтДанныеЗП.Материал,
isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК Цена
ИЗ ВтДанныеЗП КАК ВтДанныеЗП
ЛЕВОЕ СОЕДИНЕНИЕ ВтЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВтДанныеЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура И
ВтДанныеЗП.ЕдиницаИзмерения = ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения
//И ЦеныНоменклатурыСрезПоследних.ДатаЦены = ВтДанныеЗП.ДеньАкции
ПоказатьРезультат в скриншоте
Прикрепленные файлы:
ВЫБРАТЬ Различные
Началопериода(Акции.ДатаАкции, День) КАК ДатаАкции
ПОМЕСТИТЬ ВтДатыАкции
ИЗ
РегистрСведений.Акции КАК Акции
ГДЕ
Акции.ДатаАкции МЕЖДУ &ДатаНач И &ДатаКон
И Акции.Акция = &Акция;
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.МатериалКоличество) КАК КолвоМатериала,
ДанныеДляНачисленияЗП.Материал,
ДанныеДляНачисленияЗП.Материал.ОсновнаяЕдиницаИзмерения КАК ЕдиницаИзмерения,
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) КАК ДеньАкции
Поместить ВтДанныеЗП
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МатериалыДляАкции КАК МатериалыДляАкции
ПО ДанныеДляНачисленияЗП.Материал = МатериалыДляАкции.Номенклатура
ГДЕ
НачалоПериода(ДанныеДляНачисленияЗП.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции)
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
НачалоПериода(ДанныеДляНачисленияЗП.Период, День),
ДанныеДляНачисленияЗП.Материал,
ДанныеДляНачисленияЗП.Материал.ОсновнаяЕдиницаИзмерения;
Выбрать
НачалоПериода(ЦеныНоменклатуры.Период, День) КАК ДатаЦены,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена,
ЦеныНоменклатуры.ЕдИзм КАК ЕдиницаИзмерения
Поместить ВтЦеныНоменклатурыСрезПоследних
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
//ГДЕ
//ЦеныНоменклатуры.Активность
//ЦеныНоменклатуры.Организация = &Организация
//И ЦеныНоменклатуры.Номенклатура В (Выбрать Различные ВтДанныеЗП.Материал ИЗ ВтДанныеЗП)
//И НачалоПериода(ЦеныНоменклатуры.Период, День) В (Выбрать ВтДатыАкции.ДатаАкции ИЗ ВтДатыАкции);
;
Выбрать
ВтДанныеЗП.КолвоМатериала * isnull (ЦеныНоменклатурыСрезПоследних.Цена,0) КАК СтоимостьМатериала,
ВтДанныеЗП.Материал,
isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) КАК Цена
ИЗ ВтДанныеЗП КАК ВтДанныеЗП
ЛЕВОЕ СОЕДИНЕНИЕ ВтЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВтДанныеЗП.Материал = ЦеныНоменклатурыСрезПоследних.Номенклатура И
ВтДанныеЗП.ЕдиницаИзмерения = ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения
//И ЦеныНоменклатурыСрезПоследних.ДатаЦены = ВтДанныеЗП.ДеньАкции
ПоказатьРезультат в скриншоте
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот