1с скд граница включая в параметре
Всё это обусловлено тем, что остатки виртуальной таблицы получаются на начало секунды, тем самым при проведении документов мы будем получать актуальные остатки на момент перед датой документа, а не после.
- Получить ссылку
- Электронная почта
- Другие приложения
Ярлыки
- Получить ссылку
- Электронная почта
- Другие приложения
Комментарии
СКД. Ориентация текста в заголовке (шапке отчета).
Вводная: текст в заголовке колонки отчета необходимо сориентировать "на 90", в ячейках же отчета оставить "на 0". Гуглопоиск отсылает к веткам различных форумов, где всё сводится к "нужно делать самостоятельный макет". Оказалось необязательно.
- Получить ссылку
- Электронная почта
- Другие приложения
Расширение конфигурации + Связанные документы (Режим совместимости 8.3.12)
Вводная: реализовать ввод Заказа поставщику на основании Заказа на Ремонт. решить через расширения конфигурации. Хочу обратить ваше внимание, не нужно добавлять в расширение критерий отбора, для 8.3.12 нам не доступно добавление\изменение состава критерия. Более того может зависать конфигуратор (столкнулся с последней версией 8.3.14 + ERP) Разработку рекомендую вести с применением хранилища и для расширения. Иначе устанете потом выгребать чего лишнего включили в расширение при добавлении таких или схожих обектов с составными типами и подобное. Все текущие типовые решения сейчас идут в режиме совместимости 8.3.12, в прочем и для 8.3.14 (и даже 8.3.15 ничего не поменялось). Что нам нужно было бы сделать при отказе от поддержки: 1) добавить наш документ в Критерий отбора (состав, реквизиты); 2) в раздел Ввод на основании целевого документа. И что с целью сохранения поддержки. Как сделать это же для расширения: 1) Добавить реквизит расширения Документы.ЗаказПоставщику._За
Перепробовал несколько способов, найденных в интернете, но что-то никак не могу выйти на конец дня в данном случае.
Подскажите что и где прописать, чтобы отчет на конец дня выводил?
(1) для СКД проще всего добавить свой параметр для регистра остатков.
К примеру, если уже есть параметр Дата, то добавить новый параметр ДатаОстатки. Тип Дата(Дата и время). Выражение:
ДобавитьКДате(КонецПериода(&День,"День"),"Секунда",1)
И использовать его для остатков:
РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДатаОстатки, ) КАК Взаиморасчеты
Либо РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), ) КАК Взаиморасчеты
Либо Запрос.УстановитьПараметр("Дата", КонецДня(Дата))
1) либо использовать объект "Граница" с видом границы "включая" - он специально для этого
2) либо тупо как я, когда лень - прибавляя секунду к концу дня или беря начало следующего дня (это одно и то же), потому как чаще всего в СКД приходится
ЗЫ. (2),(3) так в расчет остатков не попадет последняя секунда дня
ЗЫ. Если в СКД, то нагляднее завести отдельный параметр &ДатаОстатков, недоступный пользователю, который будет рассчитывается по формуле от даты отчета (чтобы не загромождать запрос).
(5) а так попадет начало (0:00:00) следующего дня. Тоже вариант - не вариант. Лучше уже Границу пользовать.
(6),(9) Не попадет. Остатки НА начало дня не учитывают никакие движения этого дня, движения нулевой секунды тоже.
ЗЫ. В этом, собственно, хитрость виртуальной таблицы остатков. Она берет остатки НА переданный момент. Если передать туда момент времени проведенного документа, до движения самого документа (сделанные этим моментом времени) учтены не будут. Если передать дату/время, то не будут учтены движения этой секундой. Т.е. получаются остатки "на начало" момента времени. Как-то странно даже азы расписывать :)
(16) Остатки те, что заказывали - на конец 1 апреля (начало второго). Дата/время документа-регистратора вообще не имеют никакого значения.
Я тебе могу все движения регистра за год перевесить на один помеченный на удаление документ в 2045 году, но все отчеты по регистру будут работать корректно (если до регистратора не разворачивать :)
Чисто для конкретности:
Виртуальная таблица Остатки() по-умолчанию берет начало секунды.
Виртуальная таблица Обороты() [ОстаткиИОбороты()] по-умолчанию берет конец секунды.
Но начальные остатки в виртуальной таблице остатков и оборотов рассчитываются точно также, как и в виртуальной таблице остатков - на начало секунды.
Просто уточняю, чтобы народ не запутался. Обороты и конечный остаток ессно рассчитываются включая границы интервала.
Если немножко подумать, то становится очевидным что это единственный возможный способ получения корректной оборотки (начальный остаток + обороты = конечный остаток)
Момент времени:
Фирма 1С описывает так:
Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методов других объектов, имеющих тип МоментВремени.
Момент времени используется в тех случаях, когда важно различать моменты времени для объектов, имеющих одинаковую дату и время, например для сравнения положений документов на временной оси.
А своими словами:
Момент времени - комбинация даты и ссылки на документ. Позволяет разделить и упорядочить документы в пределах одной секунды, выстраивая все документы в однозначную последовательность. Получение данных при проведении на момент времени гарантирует, что будут учтены движения сделанные в ту же секунду что и проводимый документ, но находящиеся перед ним.
Но есть особенность - документы проведенные в одну и ту же секунду располагаются в произвольном порядке, а не в порядке их физического создания (как было в 7.7).
МоментВремени() - это момент непосредственно ПЕРЕД позицией документа (аналог РассчитатьРегистрыНа(ТекущийДокумент() в 7-рке), а если необходимо получить момент непосредственно после позиции документа, то используйте объект Граница
Код 1C v 8.х
При получение остатков:
"Момент времени" - виртуальное поле, не хранится в базе данных. Содержит объект МоментВремени (который включает в себя ДАТУ и ССЫЛКУ НА ДОКУМЕНТ)
таблица остатков не хранится в БД, а строится в момент обращения к ней.
1. подбирается больший или равный значению ПАРАМЕТР момент времени, на который РАССЧИТАНЫ остатки
2. на этот момент получаются остатки из таблицы итогов
3. если момент времени, на который считаются остатки, не совпадает с моментом времени итогов, то остатки ДОСЧИТЫВАЮТСЯ по движениям.
Граница:
Предназначен для получения и хранения границы некоторого интервала значений. Содержит граничное значение интервала, а также признак включения или исключения граничного значения в интервал.
Используется в качестве значений свойств и параметров методов других объектов, имеющих тип Граница.
Граница используется в тех случаях, когда важно указание включения или исключения граничного значения, например при получении остатков и оборотов регистров накопления, срезов и значений регистров сведений, для задания интервалов запросов.
ВидГраницы - Определяет набор видов границ по отношению к граничному значению:
ВидГраницы.Включая - Граница включает граничное значение.
ВидГраницы.Исключая - Граница исключает граничное значение.
Код 1C v 8.х
Пример получения остатков на дату документа, включая его движения
Код 1C v 8.х
Пример получения остатков на дату документа, но до его движений
Код 1C v 8.х
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Посмотреть все результаты поиска похожих
Еще в этой же категории
Преобразование даты 1С в unixtime (Unix Time Stamp) 17
Как известно, unixtime содержит количество секунд, прошедших с 1 января 1970 года. Поэтому, для преобразования даты 1С в дату unixtime нам всего то нужно от нашей даты отнять дату 01.01.1970 и перевести получившееся значения в удобоваримый формат. Функция месяц прописью 11
// пример от glory01 А = Формат(20020820153309, " ДФ=ММММ" ) // А = " Август" А = Формат(ТекущаяДата(), " ДФ=ММММ" ) // А = " Март" Функция МесяцПрописью(НомерМесяца) Экспорт НомерМесяца=Число(НомерМесяца); Если НомерМесяца = 1 Тогда Воз Как вычислить разницу между двумя датами в месяцах 11
Функция РазницаДатВМесяцах(Дата1, Дата2) Экспорт ДатаНач = ?(Дата1 Дата2, Дата1, Дата2); ДатаКон = ?(Дата1 Дата2, Дата2, Дата1); Годы = Год( датаКон ) - Год( датаНач ); Месяцы = Месяц( датаКон ) - Месяц( датаНач ); Разность = месяцы + Как вычислить разницу между двумя датами в часах и минутах 10
Функция РазностьВремени(Время1, Время2); Разность = Время1 - Время2; Если Разность 0 Тогда Часов = Цел(Разность / 3600); Минут = Цел((Разность - Часов * 3600) / 60); Возврат Дата(1, 1, 1, Часов, Минут, 0); Иначе Возврат Дата(1,1,1,0,0,0); Выбор периода, задать период 8
Посмотреть все в категории Работа с Датами (Временем)
Момент времени:
Фирма 1С описывает так:
Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методов других объектов, имеющих тип МоментВремени.
Момент времени используется в тех случаях, когда важно различать моменты времени для объектов, имеющих одинаковую дату и время, например для сравнения положений документов на временной оси.
А своими словами:
Момент времени - комбинация даты и ссылки на документ. Позволяет разделить и упорядочить документы в пределах одной секунды, выстраивая все документы в однозначную последовательность. Получение данных при проведении на момент времени гарантирует, что будут учтены движения сделанные в ту же секунду что и проводимый документ, но находящиеся перед ним.
Но есть особенность - документы проведенные в одну и ту же секунду располагаются в произвольном порядке, а не в порядке их физического создания (как было в 7.7).
МоментВремени() - это момент непосредственно ПЕРЕД позицией документа (аналог РассчитатьРегистрыНа(ТекущийДокумент() в 7-рке), а если необходимо получить момент непосредственно после позиции документа, то используйте объект Граница
Код 1C v 8.х
При получение остатков:
"Момент времени" - виртуальное поле, не хранится в базе данных. Содержит объект МоментВремени (который включает в себя ДАТУ и ССЫЛКУ НА ДОКУМЕНТ)
таблица остатков не хранится в БД, а строится в момент обращения к ней.
1. подбирается больший или равный значению ПАРАМЕТР момент времени, на который РАССЧИТАНЫ остатки
2. на этот момент получаются остатки из таблицы итогов
3. если момент времени, на который считаются остатки, не совпадает с моментом времени итогов, то остатки ДОСЧИТЫВАЮТСЯ по движениям.
Граница:
Предназначен для получения и хранения границы некоторого интервала значений. Содержит граничное значение интервала, а также признак включения или исключения граничного значения в интервал.
Используется в качестве значений свойств и параметров методов других объектов, имеющих тип Граница.
Граница используется в тех случаях, когда важно указание включения или исключения граничного значения, например при получении остатков и оборотов регистров накопления, срезов и значений регистров сведений, для задания интервалов запросов.
ВидГраницы - Определяет набор видов границ по отношению к граничному значению:
ВидГраницы.Включая - Граница включает граничное значение.
ВидГраницы.Исключая - Граница исключает граничное значение.
Код 1C v 8.х
Пример получения остатков на дату документа, включая его движения
Код 1C v 8.х
Пример получения остатков на дату документа, но до его движений
Код 1C v 8.х
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Автоматическая архивация баз 1С с использованием Cobian Backup и VBS скриптов 8
Клиент попросил настроить автоматическую архивацию баз 1С раз в три дня и выгрузку архивов на Dropbox и на FTP Сервер. Кроме 1С нужно архивировать папку с рабочими документами. Хочет - так хочет, делаем: Первым делом настроим автоматическую архивац Посмотреть все результаты поиска похожих
Еще в этой же категории
Разница между датами в рабочих днях, подсчет рабочих дней в 1С 5
Разрабатывая некий функционал в 1С, бывает, необходимо посчитать количество рабочих дней после какой-то даты. В этой статье примеры кода и запросы в которых считается количество рабочих дней: Код, при вычислении определяет только по дню недели, ви Как посчитать разницу между двумя датами? 5
Код уникален и сработает везде. Функция ПолучитьКоличествоДней() Счетчик = 1; НачалоПериода = Объект.НачалоПериода; Пока НачалоПериода Объект.КонецПериода Цикл Счетчик = Счетчик + 1; Как получить день недели прописью? 4
При разработке часто пользователю хочется видеть на форме день недели словом, например: Вторник , Среда и т.д. Собственно как получить день недели словом? Через функцию формат: ДеньПрописью = Формат(ТекущаяДата(), "ДФ=дддд"); Еще вариант для кра Как получить количество рабочих дней в месяце по календарю? 1
Для одного проекта потребовалось получить количество рабочих дней в месяце по календарю, без учета праздников. В результате получилась простая функция: Функция ПолучитьКолВоРабочихДнейПоКалендарю(ДатаМесяца) Рабочие=0; Кон=НачалоМесяца(ДатаМес Подсчет реального количества месяцев между датами, включая начало и конец месяца 0
В одном проекте понадобилось подсчитывать полное количество месяцев между датами, Допустим надо получить кол-во месяцев между датами 25.10.14 и 21.11.14 Функция РазницаДатВМесяцах ( Как вычислить разницу между двумя датами в месяцах ) вернет Посмотреть все в категории Работа с Датами (Временем)
В одной из организаций местный РП меня отчитал: "Мы в запросах используем только границы, почему вы в запросе используете даты?". Запрос был в СКД.
Заказчики у организации именитые, соответственно кодеры должны быть знающие опытные. Оттуда я уже ушел, но этот вопрос до сих пор не дает покоя. В яндексах-гуглах ничего похожего нет. Может кто-то в курсе, объяснит причину отказа от использования тип "Дата" в запросах?
потому что 1С выдумала столько дивных велосипедов с квадратными колесами
серьезно: движок 1С не умеет правильно определять остатки на момент времени документа в пределах одной секунды по дате
Вопрос из серии: нужно ли подставлять в процедуру значения параметров, если мы хотим использовать значения по умолчанию
(0) Потому что в 7-ке было рассчитать итоги НА и ПО, здесь такого нет, и чтобы 1С смогла понять включать ли остатки (по) или не включать (на) и юзают границы
(9) Если я хочу получить остатки на 01.01.2013 00:00:00, я указываю дату 01.01.2013 00:00:00, если по - 01.01.2013 00:00:01. Можно прекрасно обходиться типом Дата.
(0)
Не представляю себе, зачем в СКД нужны границы. При проведении/заполнении документа они нужны. В отчете.
(9)
Так в семерке все доки в одной таблице валялись - можно спокойно было определить порядок документов. В восьмерке это уже проблематичней
как РП может и ничего, а так наслушался кодеров и думает что умный. Никто никогда не говорил что следует использовать её. она используется когда надо, а не везде. Если они тыкают везде границу - то контора быдлокодеров это, только и всего
(12)привычка хуже пистолета . показали одиэснику про границы . вот он и шлет эти границы туда куда надо и не надо
(17)
Угу. Наверняка просто раз столкнулся с необходимостью использования границы (в документе скорее всего) - и все, он обладает тайным знанием про то, что даты - это фигня. Границы - наше фсьо
(17) У конторы есть стандарты и они их придерживаются. А тут пришел х@р с горы и заявляет что будет писать как он хочет
(22) стандарты это хорошо, но пихать границу в каждую щель - хреновый стандарт.
Дак слова то ещё умные, "Мы в запросах используем только границы" :) клиентам же по ушам этим ездит, а проги ржут после этого, и над РП, и над заказчиком, и над проами с такими стандартами
(28)
Скажем так. Хорошо, что ЗначениеЗаполнено(Ложь) = Истина.
Хотя с точки зрения хранения данных это странно
(32) жесть какая.
а тут еще Рому Печенкина ругают.
(34) обычно в скд пишут ДобавитьКДате(&КонМесяца, Секунда,1)
(0)Граница была актуальна 8.1 и кодеры которые ее любят явно воспитывались до версии 8.2. В Версии 8.2 В СКД понятия границы нету вообще (Закладка "параметры"), поэтмоу я вообще отказлся от использования границы. Если нужны остатки на 23:59:59 Берешь на секунду раньше, то есть начало следующего дня. и все! НО! ПОМНИ , ЧТО В Оборотных регистрах секунда уже включает все записи. т.е. в оборотном дата с 23:59:59 - возьмет все записи
(41)
Да все просто.
Вариантов когда данные принципы не совпадают с требованиями в отчетах не очень часты.
Остатки на конец месяца как правило без оборотов не нужны, в таких случая обычно оперирут понятиям остатки на начало месяца
Остатки на начало конца периода оборотов нужны еще реже.
Обычно подобные траболы возникают когда начинаешь делать объединения/соединения разных типов ВТ. Тогда надо аккуратно смотреть. Но и в таком случае ДОБАВИТЬКДАТЕ куда читабельней, чем два разных параметра
(41)надо не для регистров смотреть . а по ситуации .. в отчетах границу использовать моветон, там лучшее дата . в модулях проведения документов скорее наоборот
Читайте также: