СКД остатки на конец дня |
Я |
21.11.17 — 13:51
Здравствуйте,
помогите пожалуйста.
Делаю отчет в СКД. Нужно выводить ТоварыВРезерве.Остатки, на конец дня.
В запросе указываю
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, )
Но период задается не четко датой, а типом «Стандартная дата начала» («Начало этого дня», «Начало этой недели» и т.д.)
Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло.
Стандартный период как то не притулила потому что смущает что нам дата начала и дата конца, а мне то только одна дата нужна, чтобы остатки конкретно на нее получить.
Как правильно получить остатки на конец дня? обычные формы, если важно, КА 1.1
1 — 21.11.17 — 14:03
>Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло
Как делали? И как поняли, что не помогло?
2 — 21.11.17 — 14:05
(0) Для таблицы Остатков я бы получал так:
ДобавитьКДате(КонецПериода(&Период, «День»), «Секунда», 1)
3 — 21.11.17 — 14:05
Попробуйте так:
Заведите параметр
КонДата, для которого в Выражении напишите &Период.ДатаОкончания
А в запросе укажите
КОНЕЦПЕРИОДА(&КонДата,»День»)
4 — 21.11.17 — 14:08
(1) В запросе:
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, )
В параметрах СКД один параметр Период, тип Дата, у него в Выражение записано КОНЕЦПЕРИОДА(&Период,»День»)
В Настройках СКД в Параметрах отмечен Период и если у него значение менять на какое-то «Начало этого месяца» к примеру, дата ставится например 01.11.2017 0:00:00
И в отчете выводится Параметры: Период:01.11.2017 0:00:00
5 — 21.11.17 — 14:09
(2) а куда это писать?
6 — 21.11.17 — 14:10
(4) Ну так параметр-то вы не меняете. Вы остатки проверьте, на начало они выдаются или на конец.
7 — 21.11.17 — 14:11
(3) Тогда Период типа Стандартный период, а КонДата -типа дата?
И в настройках СКД в параметрах все равно период?
8 — 21.11.17 — 14:12
(6) сейчас, пробую
9 — 21.11.17 — 14:14
(7) Да.
10 — 21.11.17 — 14:29
(9) Вроде меняется как надо..но я путаться уже стала.
По идее должно быть же достаточно в параметрах указать КОНЕЦПЕРИОДА(&Период,»День»)? А то что он выводит в Отчете 00:00:00 это не важно?
11 — 21.11.17 — 14:40
(10) Какие поля вы выводите в отчет нам неведомо, но в качестве параметра у вас указывается конец дня.
Вот только записи со временем 23:59:59 у вас в отчет не попадут, проверьте.
12 — 21.11.17 — 14:49
(11)а куда в СКД дописать можно
ДобавитьКДате(КонецПериода(&Период, «День»), «Секунда», 1)
13 — 21.11.17 — 14:49
?
14 — 21.11.17 — 14:52
В запрос, туда где указывается период остатков
Например:
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(ДобавитьКДате(КонецПериода(&КонДата, «День»), «Секунда», 1), )
15 — 21.11.17 — 14:53
Ну или в выражении параметра СКД
16 — 21.11.17 — 15:33
(14)спасибо большое, работает.правда записей на 23:59 у меня нет.
а с 23:59 это особенность 1С такая? И считается же что это та же дата? это не переходит еще на 00:00 следующего дня или как-то еще?
17 — 21.11.17 — 15:35
(15) и вам тоже спасибо)
18 — 21.11.17 — 15:37
(16) Читай про даты, границы и моменты времени
19 — 21.11.17 — 15:37
Виртуальная таблица Остатки() даёт остатки на границу НЕ ВКЛЮЧАЯ. Это такая особенность виртуальной таблицы остатков.
Таблица ОстаткиИОбороты выдаёт данные по границу ВКЛЮЧАЯ
I_learn_1c
20 — 21.11.17 — 15:40
(18) вот только прочитала про то что написано в (19) . Буду вникать подробнее, спасибо что подсказали что к чему
Обратная связь
Караков Александр Александрович
Много нового и интересного я узнал в этом курсе начиная с общих механизмов платформы,заканчивая автоматизацией
расчета зарплаты.
на практике полученные знания пригодились для построения внешних печатных форм и обработки заполнения табличных частей
документов, построению отчетов в СКд в конфигурации Бухгалтерии предприятия.
Сейчас работаю над проектом перехода крупной организации с 7.7 на 8.2 Бухгалтерию предприятия. Очень доволен форматом курса, большое спасибо!!!
Буду слушать продвинутый.
Ошибки и решения.
1 . В форме документа Закупка,КомплектацияБлюд,Продажа на панели навигации нет команд перехода на движения в регистрах сделанных этим документом
Устанавливается в командном интерфейсе управляемой формы
2. Общий модуль РаботаСДокументамиКлиент компилируется на сервере ,а необходимо компилировать на клиенте.
3 В документе Закупка Нет группировки строк (будет дублирование в регистре).обйти Циклом таблицу вводя записи в регистр
Движения.ОстаткиТМЦ.Записывать = Истина;
Движения.Закупки.Записывать = Истина;
Таблица = Номенклатура.Выгрузить();
Таблица.Свернуть(«Номенклатура,Цена»,»Количество,Сумма»);
Для Каждого ТекСтрокаНоменклатура Из Таблица Цикл
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
Движение.Количество = ТекСтрокаНоменклатура.Количество;
// регистр Закупки Приход
Движение = Движения.Закупки.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
Движение.Количество = ТекСтрокаНоменклатура.Количество;
Движение.Сумма = ТекСтрокаНоменклатура.Сумма;
КонецЦикла;
4 В Регистре сведений состав блюд имеется измерение Количество, а оно должно быть ресурсом , для того чтобы платформа не давала
записать ошибочные сведения (На одно блюдо , одна компонента и разное количество)
5-6.В общем модуле неправильный код контроля остатков
Перписал запрос по контролю остатков (выбираем различную номенклатуру из табличной части документа,используем левое соединение к таблице документа,
в параметре Момент устанавливаем границу включая движения самого документа)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ОстаткиТМЦОстатки.КоличествоОстаток,
| ТабличнаяЧастьДокумента.НомерСтроки,
| ТабличнаяЧастьДокумента.Номенклатура
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТабличнаяЧастьДокумента.Номенклатура КАК Номенклатура,
| МИНИМУМ(ТабличнаяЧастьДокумента.НомерСтроки) КАК НомерСтроки
| ИЗ
| Документ.Продажа.Номенклатура КАК ТабличнаяЧастьДокумента
| ГДЕ
| ТабличнаяЧастьДокумента.Ссылка = &ДокументСсылка
|
| СГРУППИРОВАТЬ ПО
| ТабличнаяЧастьДокумента.Номенклатура) КАК ТабличнаяЧастьДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(
| &Момент,
| Номенклатура В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТабличнаяЧастьДокумента.Номенклатура
| ИЗ
| Документ.Продажа.Номенклатура КАК ТабличнаяЧастьДокумента
| ГДЕ
| ТабличнаяЧастьДокумента.Ссылка = &ДокументСсылка)) КАК ОстаткиТМЦОстатки
| ПО (ОстаткиТМЦОстатки.Номенклатура = ТабличнаяЧастьДокумента.Номенклатура)
|ГДЕ
| ОстаткиТМЦОстатки.КоличествоОстаток < 0″;
Если ИмяДокумента»Продажа» Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, «Продажа», ИмяДокумента);
КонецЕсли;
Граница = Новый Граница(ДокументОбъект.МоментВремени(), ВидГраницы.Включая);
Запрос.УстановитьПараметр(«Момент», Граница);
7. При выводе сообщения пользователю не правильно позиционируется поле вывода ,необходимо
Сообщение.Поле = «Номенклатура[«+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+»].Количество»;
8-9.В документе комплектация в модуле объекта процедуры обработки проведения Нет группировки строк (будет дублирование в регистре).обйти Циклом таблицу вводя записи в регистр,
так же отсутствует необходимость дважды установки флага записывать для набора записей ОстаткиТМЦ
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр ОстаткиТМЦ Приход
Движения.ОстаткиТМЦ.Записывать = Истина;
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = Блюдо;
Движение.Количество = Количество;
// регистр ОстаткиТМЦ Расход
// Движения.ОстаткиТМЦ.Записывать = Истина;
Таблица = Номенклатура.Выгрузить();
Таблица.Свернуть(«Номенклатура»,»Количество»);
Для Каждого ТекСтрокаСостав Из Таблица Цикл
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаСостав.Номенклатура;
Движение.Количество = ТекСтрокаСостав.Количество;
КонецЦикла;
Движения.Записать();
Отказ = РаботаСДокументамиСервер.ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента(ЭтотОбъект, «КомплектацияБлюд»);
КонецПроцедуры
10.В форме документа продажа обращение к КонстантыМенеджер можно только на сервере
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Объект.Ссылка.Пустая() Тогда
Объект.Покупатель = ПолучитьОсновногоПокупателя();
КонецЕсли;
КонецПроцедуры
//Обращение к КонстантыМенеджер можно только на сервере
//
&НаСервереБезКонтекста
Функция ПолучитьОсновногоПокупателя()
Возврат Константы.ОсновнойПокупатель.Получить();
КонецФункции
11.В документе продажа в модуле объекта процедуры обработки проведения Нет группировки строк (будет дублирование в регистре).обйти Циклом таблицу вводя записи в регистр,
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр ОстаткиТМЦ Расход
Движения.ОстаткиТМЦ.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Таблица = Номенклатура.Выгрузить();
Таблица.Свернуть(«Номенклатура,Цена»,»Количество,Сумма»);
Для Каждого ТекСтрокаНоменклатура Из Таблица Цикл
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
Движение.Количество = ТекСтрокаНоменклатура.Количество;
// регистр Продажи Приход
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
Движение.Количество = ТекСтрокаНоменклатура.Количество;
Движение.Сумма = ТекСтрокаНоменклатура.Сумма;
КонецЦикла;
Движения.Записать();
Отказ = РаботаСДокументамиСервер.ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента(ЭтотОбъект);
КонецПроцедуры
12.В отчете Остатки необходимо добавить параметр НаДату ,который будет вводить пользователь,а в выражение параметра Период ввести : ДобавитьКДате(КонецПериода(&НаДату, «День»), «Секунда», 1)
для получения корректных остатков. параметр НаДату включим в быстрые пользовательские настройки
13. Регистр накопления Продажи должен быть оборотным, т.к. иначе регистр не будет закрываться в ноль
14. В отчете ПродажиЗакупки изменим Запрос в СКД так же в пользовательском режиме пересчитаем итоги для корректного
формирования отчета.
ВЫБРАТЬ
ЕСТЬNULL(ЗакупкиОбороты.Номенклатура, ПродажиОбороты.Номенклатура) КАК Номенклатура,
ЕСТЬNULL(ЗакупкиОбороты.КоличествоОборот, 0) КАК КоличествоЗакупки,
ЕСТЬNULL(ЗакупкиОбороты.СуммаОборот, 0) КАК СуммаЗакупки,
ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК КоличествоПродажи,
ЕСТЬNULL(ПродажиОбороты.СуммаОборот, 0) КАК СуммаПродажи
ИЗ
РегистрНакопления.Закупки.Обороты КАК ЗакупкиОбороты
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ПО ЗакупкиОбороты.Номенклатура = ПродажиОбороты.Номенклатура
Помощь миру
http://forum.infostart.ru/forum15/topic68900/message739993/#message739993
http://forum.infostart.ru/forum26/topic70963/
//продолжение следует
Имитация (программное) нажатия Клавиш 2
В системе » 1С:Предприятие» часто возникает ситуация, когда нужно закрыть окно сообщений, появляющееся при вызове метода Сообщить. Стандартно это окно закрывается при нажатии комбинации клавиш Ctrl + Shift + Z , но можно сделать это и программно.
Импорт — экспорт данных через XML. Обработка обмена документами 7
Восстановление документов 1С из архива в рабочую базу (XML обмен)
Не редко требуется восстановить данные испорченного документа 1С из архива базы после не умышленных, а зачастую ошибочных, действий удачливого пользователя. Самым простым способом я
Использование предложения ДЛЯ ИЗМЕНЕНИЯ 0
Предложение ДЛЯ ИЗМЕНЕНИЯ позволяет заблаговременно заблокировать некоторые данные (которые могут читаться транзакцией другого соединения) уже при считывании, чтобы исключить взаимные блокировки при записи. ДЛЯ ИЗМЕНЕНИЯ дает возможность указать в
Использование Предопределенных данных конфигурации 2
Текст запроса может содержать предопределенные данные конфигурации, такие как:
— значения перечислений;
— предопределенные данные:
— справочников;
— планов видов характеристик;
— планов счетов;
— планов видов расчетов;
— пустые ссылки;
Как в запросе указать пустую дату? — ДАТАВРЕМЯ() 7
Для указания Даты и Времени в запросе предназначена функция ДАТАВРЕМЯ(
ДАТАВРЕМЯ ( Целое число , Целое число , Целое число )
Значения типа дата задаются с помощью ключевого слова ДАТАВРЕМЯ, после которого в скобках последовательно указываю
Посмотреть все результаты поиска похожих
Здравствуйте, помогите пожалуйста. Делаю отчет в СКД. Нужно выводить ТоварыВРезерве.Остатки, на конец дня. В запросе указываю РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ) Но период задается не четко датой, а типом «Стандартная дата начала» («Начало этого дня», «Начало этой недели» и т.д.) Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло. Стандартный период как то не притулила потому что смущает что нам дата начала и дата конца, а мне то только одна дата нужна, чтобы остатки конкретно на нее получить. Как правильно получить остатки на конец дня? обычные формы, если важно, КА 1.1
>Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло Как делали? И как поняли, что не помогло?
Для таблицы Остатков я бы получал так:
Попробуйте так: Заведите параметр КонДата, для которого в Выражении напишите &Период.ДатаОкончания А в запросе укажите КОНЕЦПЕРИОДА(&КонДата,»День»)
В запросе: РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ) В параметрах СКД один параметр Период, тип Дата, у него в Выражение записано КОНЕЦПЕРИОДА(&Период,»День») В Настройках СКД в Параметрах отмечен Период и если у него значение менять на какое-то «Начало этого месяца» к примеру, дата ставится например 01.11.2017 0:00:00 И в отчете выводится Параметры: Период:01.11.2017 0:00:00
Ну так параметр-то вы не меняете. Вы остатки проверьте, на начало они выдаются или на конец.
Тогда Период типа Стандартный период, а КонДата -типа дата? И в настройках СКД в параметрах все равно период?
Вроде меняется как надо..но я путаться уже стала. По идее должно быть же достаточно в параметрах указать КОНЕЦПЕРИОДА(&Период,»День»)? А то что он выводит в Отчете 00:00:00 это не важно?
Какие поля вы выводите в отчет нам неведомо, но в качестве параметра у вас указывается конец дня. Вот только записи со временем 23:59:59 у вас в отчет не попадут, проверьте.
а куда в СКД дописать можно ДобавитьКДате(КонецПериода(&Период, «День»), «Секунда», 1)
В запрос, туда где указывается период остатков Например: РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(ДобавитьКДате(КонецПериода(&КонДата, «День»), «Секунда», 1), )
Ну или в выражении параметра СКД
спасибо большое, работает.правда записей на 23:59 у меня нет. а с 23:59 это особенность 1С такая? И считается же что это та же дата? это не переходит еще на 00:00 следующего дня или как-то еще?
Читай про даты, границы и моменты времени
Виртуальная таблица Остатки даёт остатки на границу НЕ ВКЛЮЧАЯ. Это такая особенность виртуальной таблицы остатков. Таблица ОстаткиИОбороты выдаёт данные по границу ВКЛЮЧАЯ
вот только прочитала про то что написано в . Буду вникать подробнее, спасибо что подсказали что к чему
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
СКД. Граница периода
документацию читать надо и пробовать:
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(Новый ПараметрКомпоновкиДанных("Период")); Граница = Новый Граница(КонецДня(Дата), ВидГраницы.Включая); Параметр.Значение = Граница; Параметр.Использование = Истина;
всё четко работает
(с) I_G_O_R
или в выражении параметра Период (тип Дата) указать конструкцию
ВЫБОР &Период КОГДА ДатаВремя(1,1,1) ТОГДА ДатаВремя(1,1,1) ИНАЧЕ ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&Период, «ДЕНЬ»), «СЕКУНДА», 1) КОНЕЦ
(с) http://www.spec8.ru/d08m12-lastsec , Видео урок из статьи
Всё это обусловлено тем, что остатки виртуальной таблицы получаются на начало секунды, тем самым при проведении документов мы будем получать актуальные остатки на момент перед датой документа, а не после.
Популярные сообщения из этого блога
Вводная: текст в заголовке колонки отчета необходимо сориентировать «на 90», в ячейках же отчета оставить «на 0». Гуглопоиск отсылает к веткам различных форумов, где всё сводится к «нужно делать самостоятельный макет». Оказалось необязательно.
Вводная: реализовать ввод Заказа поставщику на основании Заказа на Ремонт. решить через расширения конфигурации. Хочу обратить ваше внимание, не нужно добавлять в расширение критерий отбора, для 8.3.12 нам не доступно добавлениеизменение состава критерия. Более того может зависать конфигуратор (столкнулся с последней версией 8.3.14 + ERP) Разработку рекомендую вести с применением хранилища и для расширения. Иначе устанете потом выгребать чего лишнего включили в расширение при добавлении таких или схожих обектов с составными типами и подобное. Все текущие типовые решения сейчас идут в режиме совместимости 8.3.12, в прочем и для 8.3.14 (и даже 8.3.15 ничего не поменялось). Что нам нужно было бы сделать при отказе от поддержки: 1) добавить наш документ в Критерий отбора (состав, реквизиты); 2) в раздел Ввод на основании целевого документа. И что с целью сохранения поддержки. Как сделать это же для расширения: 1) Добавить реквизит расширения Документы.ЗаказПоставщику._За
Когда нужно в макете (табличном документе) изменить ширину колонки для конкретных строк: 1. Выделить всю строку (строки). Именно всю, фокус для выделенной области не работает. 2. Нажимаем и не отпускает Ctrl 3. С помощью мыши изменяют ширину любой из колонок — будет задан вопрос об создании нового формата строк — соглашаемся. Как же прекрасен мир, где для модификаций не достаточно просто использовать контекстное меню и диалог редактора свойств, где нужно знать заветные слова и таинства танца. 90ые, моё почтение. UPD Программно, тоже самое, можно сделать через ТабДок = Новый ТабличныйДокумент(); ТабДок.Область(1,,1,).СоздатьФорматСтрок(); ТабДок.Область(1,1).ШиринаКолонок = 70; ТабДок.Область(1,2).ШиринаКолонок = 30; ТабДок.Область(2,,2,).СоздатьФорматСтрок(); ТабДок.Область(2,1).ШиринаКолонок = 30; ТабДок.Область(2,2).ШиринаКолонок = 70; ТабДок.Показать();