Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> ДОБАВИТЬКДАТЕ          
logist Подменю пользователя
сообщение 14.05.12, 11:59
Сообщение #1

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Почему такая фишка не работает?
ДОБАВИТЬКДАТЕ(&НачалоМесяцаОтчет, ГОД, -1)

По факту к дате ничего не добавляется, или нельзя использовать отрицательное значение?
Мне собственно нужно от параметра-даты получить такую же дату в прошлом году, может это как-то по другому можно?

СКД, 1с 8,2, упр.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Batchir Подменю пользователя
сообщение 14.05.12, 12:37
Сообщение #2

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

хм, как то конечно не задавался вопросом, но действительно не отработало в запросе.
Как выход из положения можно сделать вычисляемое поле

1. В самом запросе ДОБАВИТЬКДАТЕ(&НачалоМесяцаОтчет, ГОД, -1)
Заменить на &ДатаЗапроса (Название выбрано случайно)

2. На закладке вычисляемых полей добавить (или изменить)
Путь к данным - ДатаЗапроса
Выражение - ДОБАВИТЬКДАТЕ(&НачалоМесяцаОтчет, "ГОД", -1)

Сообщение отредактировал Batchir - 14.05.12, 12:40

Vofka Подменю пользователя
сообщение 14.05.12, 13:07
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Что-то вы не то делаете. У меня запрос (в т.ч. в СКД) отрабатывает как положено:

ВЫБРАТЬ
    &Параметр КАК ДатаПараметр,
    ДОБАВИТЬКДАТЕ(&Параметр, ГОД, -1) КАК ДатаПараметрМинус1,
    
    ПриходныйКассовыйОрдер.Дата КАК ДатаИздокумента,
    ДОБАВИТЬКДАТЕ(ПриходныйКассовыйОрдер.Дата, ГОД, -1) КАК ДатаИзДокументаМинус1,
    
    ПриходныйКассовыйОрдер.Ссылка
ИЗ
    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
ГДЕ
    ПриходныйКассовыйОрдер.Ссылка = &Ссылка



Batchir Подменю пользователя
сообщение 14.05.12, 13:35
Сообщение #4

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Тю, и у меня сейчас нормально отработал следующий код:
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&Параметр, ГОД, -1) КАК ДатаПараметрМинусГод
ИЗ
    Справочник.Качество КАК Качество


В качестве параметра указал текущую дату и вернуло ровно год назад

logist может что-то недоговариваете?

logist Подменю пользователя
сообщение 14.05.12, 14:08
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Batchir @ 14.05.12, 14:35) *
logist может что-то недоговариваете?

А что я могу не договаривать? У меня в базе один документ в текущем месяце, а в отчет выходит так:

ВЫБРАТЬ
    ПродажиМесяцОтчета.Контрагент,
    СУММА(ПродажиМесяцОтчета.СуммаМесяцОтчета) КАК СуммаМесяцОтчета,
    СУММА(ПродажиМесяцПрошлогоГода.СуммаМесяцПрошлогоГода) КАК СуммаМесяцПрошлогоГода,
    СУММА(ПродажиПрошлыйКвартал.СуммаСреднийМесяцПрошлогоКвартала) КАК СуммаСреднийМесяцПрошлогоКвартала
ИЗ
    (ВЫБРАТЬ
        ПродажиОбороты.СуммаОборот КАК СуммаМесяцОтчета,
        ПродажиОбороты.Контрагент КАК Контрагент
    ИЗ
        РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПродажиОбороты) КАК ПродажиМесяцОтчета
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПродажиОбороты.Контрагент КАК Контрагент,
            ВЫБОР
                КОГДА ЕСТЬNULL(ПродажиОбороты.СуммаОборот, 0) <> 0
                    ТОГДА ВЫРАЗИТЬ(СРЕДНЕЕ(ПродажиОбороты.СуммаОборот) КАК ЧИСЛО(15, 2))
                ИНАЧЕ 0
            КОНЕЦ КАК СуммаСреднийМесяцПрошлогоКвартала
        ИЗ
            РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&НачалоПериода, КВАРТАЛ, -1), ДОБАВИТЬКДАТЕ(&КонецПериода, КВАРТАЛ, -1), Квартал, ) КАК ПродажиОбороты
        
        СГРУППИРОВАТЬ ПО
            ПродажиОбороты.Контрагент,
            ПродажиОбороты.СуммаОборот) КАК ПродажиПрошлыйКвартал
        ПО ПродажиМесяцОтчета.Контрагент = ПродажиПрошлыйКвартал.Контрагент
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПродажиОбороты.Контрагент КАК Контрагент,
            ПродажиОбороты.СуммаОборот КАК СуммаМесяцПрошлогоГода
        ИЗ
            РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&НачалоПериода, ГОД, -1), ДОБАВИТЬКДАТЕ(&КонецПериода, ГОД, -1), , ) КАК ПродажиОбороты) КАК ПродажиМесяцПрошлогоГода
        ПО ПродажиМесяцОтчета.Контрагент = ПродажиМесяцПрошлогоГода.Контрагент

СГРУППИРОВАТЬ ПО
    ПродажиМесяцОтчета.Контрагент


Signature
Личные бесплатные консультации не даю, для этого есть форум!

pablo Подменю пользователя
сообщение 14.05.12, 14:12
Сообщение #6

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Может, имеет смысл разбить запрос на несколько в пакете?


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Vofka Подменю пользователя
сообщение 14.05.12, 14:34
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

logist, как минимум выведите поля с ДОБАВИТЬКДАТЕ в список полей выборки и посмотрите хотя бы там действительно ли они получают нужные значения.

logist Подменю пользователя
сообщение 14.05.12, 14:40
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(pablo @ 14.05.12, 15:12) *
Может, имеет смысл разбить запрос на несколько в пакете?

Что это изменит?

Если в консоли запросов делаю этот же запрос, то отрабатывает верно.
Цитата
Контрагент СуммаМесяцОтчета СуммаМесяцПрошлогоГода СуммаСреднийМесяцПрошлогоКвартала
Ашан 300 NULL NULL


Значит какой-то прикол именно в СКД. Знать бы какой.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Batchir Подменю пользователя
сообщение 14.05.12, 14:43
Сообщение #9

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

logist
Попробуйте всё таки в запросе
ДОБАВИТЬКДАТЕ(&НачалоПериода, КВАРТАЛ, -1) заменить на &НачалоПериодаКВАРТАЛ
ДОБАВИТЬКДАТЕ(&КонецПериода, КВАРТАЛ, -1) заменить на &КонецПериодаКВАРТАЛ
ДОБАВИТЬКДАТЕ(&НачалоПериода, ГОД, -1) заменить на &НачалоПериодаГОД
ДОБАВИТЬКДАТЕ(&КонецПериода, ГОД, -1) заменить на &КонецПериодаГОД

А на закладке параметров СКД установить эти параметры как
НачалоПериодаГОД с выражением ДобавитьКДате(&НачалоПериода,"Год",-1)
КонецПериодаГОД с выражением ДобавитьКДате(&КонецПериода,"Год",-1)
НачалоПериодаКВАРТАЛ с выражением ДобавитьКДате(&НачалоПериода,"КВАРТАЛ",-1)
КонецПериодаКВАРТАЛ с выражением ДобавитьКДате(&КонецПериода,"КВАРТАЛ",-1)

И поставить флаг ограничения доступа (по идее должен стать автоматом по умолчанию) что бы не были доступны эти параметры в пользовательском режиме.

Сообщение отредактировал Batchir - 14.05.12, 14:46

pablo Подменю пользователя
сообщение 14.05.12, 14:46
Сообщение #10

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Цитата
Что это изменит?

После заморочек с nested loops, я привык разбивать большие запросы на последовательность мелких. Так проще проверять запрос по частям на предмет, где косяки появляются.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Vofka Подменю пользователя
сообщение 14.05.12, 14:48
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(Batchir @ 14.05.12, 15:43) *
А на закладке параметров СКД установить эти параметры как

Для чистоты эксперимента я бы эти параметры установил сначала просто руками и убедился бы, что так точно работает и проблема именно в этом, а не в каких-то других настройках СКД.

logist Подменю пользователя
сообщение 14.05.12, 14:53
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Vofka @ 14.05.12, 15:48) *
Для чистоты эксперимента я бы эти параметры установил сначала просто руками и убедился бы, что так точно работает

Чистота эксперимента уже была проделана, параметры указал вручную - эксперимент провален. Так что указание этих параметров на вкладке СКД не дает результата. Похоже стандартные параметры НачалоПериода и КонецПериода передаются в параметры запроса в любом случае, игнорируюя установленные в самом запросе. Но так же не должно быть, должно же быть какое-то решение...


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Batchir Подменю пользователя
сообщение 14.05.12, 15:05
Сообщение #13

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Да, СКД вещь темная, что внутри твориться хз. Может тогда действительно попробовать как pablo предложил - побить на пакеты?


О мысль появилась. А можно ведь в консоле СКД посмотреть что за конечный запрос идет к БД.
Ведь тот запрос что составлен конструктором может отличаться от того который СКД реально посылает к БД.
Может анализ конечного запроса откроет глаза?

Сообщение отредактировал Batchir - 14.05.12, 15:06

Спасибо сказали: logist,

logist Подменю пользователя
сообщение 14.05.12, 15:17
Сообщение #14

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Batchir @ 14.05.12, 16:05) *
О мысль появилась. А можно ведь в консоле СКД посмотреть что за конечный запрос идет к БД.

Мысль хорошая. Посмотрел, в запрос идут стандартные параметры НачалоПериода КонецПериода, т.е. все что указано вручную не передается... sad.gif


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Acid Подменю пользователя
сообщение 14.05.12, 16:03
Сообщение #15

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

текст запроса - это текст. соответственно выражения не обязаны выполнятся. надо пробовать выделять выражения одинарными ковычками.
либо сразу вычислить дату и поместить в параметр.

кстати, в полях данная конструкция работает. а в самом обращении к регистру - нет.

я помню где-то подобное делал - выделял выражения фигурными скобками.


Signature

Документируйте Код! мать вашу...


logist Подменю пользователя
сообщение 14.05.12, 16:37
Сообщение #16

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Acid @ 14.05.12, 17:03) *
либо сразу вычислить дату и поместить в параметр.

Ну я переместил вычисление в параметры, и в каждый период регистра теперь передаю свой параметр, но это ничего не изменило. Везде идет только стандартные начало и конец.

Проблема оказалась мне не совсем понятной, для названия поля стандартного периода (тот что показывается пользователю) я использовал "Период", что и оказалось ошибкой. После переименования его всё пошло как надо.
Вкладка параметров у меня выглядит так:

ну и в самом запросе указаны эти параметры.

Сообщение отредактировал logist - 14.05.12, 16:45


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 11:26
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!