Форум программистов, компьютерный форум, киберфорум
1С
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/78: Рейтинг темы: голосов - 78, средняя оценка - 4.82
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886

Запрос (Разность дат)

23.03.2013, 20:18. Показов 15860. Ответов 48

Студворк — интернет-сервис помощи студентам
1С Предприятие 8.2
Хочу при запуске системы вывести сообщение Разницы дней между двумя любыми датами

1) В событии Управляемого приложения
1C
1
2
3
Процедура ПередНачаломРаботыСистемы(Отказ)
    Сообщить( Даты.ПолучитьРазностьДней()); //Вызов функции из общего модуля
КонецПроцедуры


2) Создал общий модуль Даты
1C
1
2
3
4
5
6
7
8
9
&НаСервере
 Функция ПолучитьРазностьДней()    Экспорт
     
    Запрос=Новый Запрос("Выбрать 
    |РАЗНОСТЬДАТ('01.01.2006', '10.01.2006', ДЕНЬ)");     //Пытаюсь получить разность дат в днях
     
     Возврат Запрос.Выполнить(); 
     
 КонецФункции
=======================
Не могу понять синтаксис запросов. В своем общем модуле Даты я из-за этого пишу фигню какую-то.
Как правильно делать?

Такая ошибка при запуске
{ОбщийМодуль.Даты.Модуль(7)}: Ошибка при вызове метода контекста (Выполнить)
Возврат Запрос.Выполнить();
по причине:
{(2, 13)}: Синтаксическая ошибка "'01.01.2006',"
РАЗНОСТЬДАТ(<<?>>'01.01.2006', '10.01.2006', ДЕНЬ)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2013, 20:18
Ответы с готовыми решениями:

Разность рабочих дат в запросе
Всем привет!) Делаю запрос для вычисления разности между рабочими датами. ВЫБРАТЬ Док.Ссылка, ...

Запрос Показывающий Остатки В Разрезе Дат Поступления.
Добрый день. Есть такой вопрос.. Конфигурация УТ 10. В заказе поставщику добавлен реквизит в табличную часть товары &quot;планируемая...

Разность дат через пользовательское поле
Нужно вывести в отчет дату начала Стажа на выслугу лет. Известен стаж. Можно ли его вычесть из текущей даты или каким-то другим образом...

48
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
23.03.2013, 22:55
Студворк — интернет-сервис помощи студентам
Процедура Функ() экспорт
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
23.03.2013, 23:03  [ТС]
Цитата Сообщение от shum_ont Посмотреть сообщение
Процедура Функ() экспорт
{МодульУправляемогоПриложения(14,5)}: Процедура или функция с указанным именем не определена (Функ)
<<?>>Функ(); (Проверка: Тонкий клиент)
===================
Я же уже писал
Цитата Сообщение от daslex Посмотреть сообщение
Из-за того, что возникает такая проблемы с сообщением, я изначально создавал общий модуль и функцию для работы с запросом.
Добавлено через 5 минут
В общем сейчас у меня так
ОбщийМодуль Даты
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
 &НаСервере
 Функция Получить() Экспорт
      Запрос=Новый Запрос(
      "Выбрать
      |РАЗНОСТЬДАТ(
         |ДАТАВРЕМЯ(2006,01,03),
         |ДАТАВРЕМЯ(2006,03,03),
         |ДЕНЬ)"
      );
      Результат=Запрос.Выполнить();
    
      Возврат Результат;
  КонецФункции
и ПриНачалеРаботыСистемы
1C
1
2
3
Процедура ПриНачалеРаботыСистемы()            
 Выборка= Даты.Получить().Выбрать;  
КонецПроцедуры
При запуске программы Вот такое
{МодульУправляемогоПриложения(6)}: Ошибка при вызове метода контекста (Получить)
Выборка= Даты.Получить().Выбрать;
по причине:
Ошибка при вызове серверного метода.
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'РезультатЗапроса'
======================
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
23.03.2013, 23:32
работайте в режиме толстого клиента ... не вижу способа передать таблицу значений в режиме тонкого
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
23.03.2013, 23:35  [ТС]
С клиентами и настройками форм для работы с запросом разобрался.
Но

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Процедура ПриНачалеРаботыСистемы()            
Запрос=Новый Запрос(
      "Выбрать
      |РАЗНОСТЬДАТ(
         |ДАТАВРЕМЯ(2006,01,03),
         |ДАТАВРЕМЯ(2006,03,03),
         |ДЕНЬ)"
      );
      
      Результат=Запрос.Выполнить();
;
     Выборка=Результат.Выбрать();
     
     Пока Выборка.Следующий() Цикл
         Сообщить(Выборка.Следующий());
     КонецЦикла;
     
КонецПроцедуры
shum_ont, вы простите, что не по вашему варианту, просто мне так удобнее.
Выводит Истина или Ложь, а я хотел вытащить разницу и вывести ее сообщением
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
23.03.2013, 23:41
1C
1
2
   Выборка.Следующий(); 
   Сообщить(Выборка.ПОЛЕ1);
Добавлено через 28 секунд
У ВАС ТАМ ОДНО ЗНАЧЕНИЕ СМЫСЛ ДЕЛАТЬ ОБХОД НУЛЕВОЙ
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
23.03.2013, 23:48  [ТС]
Да, так все теперь понятно
Кроме того, что запускать в толстом клиенте, должно быть еще
1) Флажок режим разработки конфигурации "Обычное и управляемое приложение"
2) Свойства конфигурации (контекстное меню корня) настройка "Использовать обычные формы в управляемом приложении
(подглядел у Чистова, там где консоль скачивать)


Цитата Сообщение от shum_ont Посмотреть сообщение
У ВАС ТАМ ОДНО ЗНАЧЕНИЕ СМЫСЛ ДЕЛАТЬ ОБХОД НУЛЕВОЙ
Смысла нет, не критично сейчас.
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
23.03.2013, 23:52
да вроде все....еще можно засунуть кансоль в метаданные.... дерево конфигурации - обработки - добавить
Миниатюры
Запрос (Разность дат)  
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.03.2013, 00:36  [ТС]
А как получить текущую дату? (мне чтобы разницу считать надо)

Выбрать
ТекущаяДата() //Нельзя
============
ВЫБРАТЬ
ТекДата

УстановитьПараметр("ТекДата",ТекущаяДата ()) //Неправильно
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
24.03.2013, 00:46
полный текст запроса в студию

Добавлено через 5 минут
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Запрос=Новый Запрос(
      "Выбрать
      |РАЗНОСТЬДАТ(
             |ДАТАВРЕМЯ(2006,01,03),
         |&Дата,
         |ДЕНЬ)"
      );
      запрос.УстановитьПараметр("Дата",ТекущаяДата());
      Результат=Запрос.Выполнить();
 
     Выборка=Результат.Выбрать();
     
    Выборка.Следующий(); 
   Сообщить(Выборка.ПОЛЕ1);
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.03.2013, 00:47  [ТС]
Я в консоли пробую
а там весь текст, который я пробую это
1C
1
2
3
4
 ВЫБРАТЬ
Тек
 
УстановитьПараметр("Тек",ТекущаяДата());
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
24.03.2013, 00:49
выбрать ПОЛЯ из ТАБЛИЦИ.....
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.03.2013, 00:57  [ТС]
не понял
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
24.03.2013, 01:06
Запрос=Новый Запрос("ВЫБРАТЬ &Тек");
запрос.УстановитьПараметр("тек",ТекущаяД ата());
Результат=Запрос.Выполнить();

Выборка=Результат.Выбрать();

Выборка.Следующий();
Сообщить(Выборка.тек);


не хватает "&"
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.03.2013, 08:01  [ТС]
Вот я пытаюсь посчитать разницу дат и ничего хорошего не получается
1C
1
2
3
4
5
6
7
8
9
10
11
12
Запрос = Новый Запрос("Выбрать &Тек
      |ДатаРождения 
       
      |ИЗ
      |Справочник.Сотрудники
      |Где
      |РазностьДат(ДатаРождения,Тек,День)<5"
    );
    Запрос.УстановитьПараметр("Тек",ТекущаяДата());
               
    Результат=Запрос.Выполнить();
    Выборка=Результат.Выбрать();
Добавлено через 5 часов 56 минут
Вот сделал так, но это неправильно, как правильно сделать?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаСервере 
 
Процедура ПриНачалеРаботыСистемы()            
    
   Запрос=Новый Запрос("ВЫБРАТЬ 
   |ДатаРождения  как ДР
   |ИЗ
   |Справочник.Сотрудники
   |Где
   |НачалоПериода(ДР,Месяц)-НачалоПериода(ТекущаяДата,Месяц)>5"
   
   ); 
   Запрос.УстановитьПараметр("ТекущаяДата",ТекущаяДата());
   
   
   Результат=Запрос.Выполнить();
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
24.03.2013, 09:16
"ВЫБРАТЬ
| Тест.Реквизит1 КАК Поле1
|ИЗ
| Документ.Тест КАК Тест
|ГДЕ
| РАЗНОСТЬДАТ(Тест.Реквизит1, &тек, ДЕНЬ) > 5"


построено при помощи конрструктора

Добавлено через 1 минуту
"&текущаяДата"
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.03.2013, 09:46  [ТС]
Навскидку я так получу разницу между датами в днях, причем учтутся годы.
Моя задача меняется и я хочу получить разницу периодов дат, причем год нужно отбросить. Это я пытался сделать в последнем листинге.

т.е. (При условии, что разность дней меньше 5)
ДР1=12.03.1987
ДР2=15.03.1989
ДР3=12.03 .1980

Все такие даты это как одна и я хочу их записать в результат запроса
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
24.03.2013, 11:56
для получения дней из даты есть функция "день"

Добавлено через 20 секунд
я не понимаю смысл вашей задачи
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.03.2013, 12:03  [ТС]
Я запутал, поэтому не понимаете. Я Сказал, наверное глупо.

Смысл моей задачи в том, что при запуске системы я должен запросом вывести всех сотрудников, у которых в ближайшие 5 дней будет День Рождения.
0
 Аватар для shum_ont
61 / 60 / 17
Регистрация: 17.02.2011
Сообщений: 161
24.03.2013, 16:16
1C
1
2
3
4
5
6
7
    "ВЫБРАТЬ
                        |   Тест.Ссылка
                        |ИЗ
                        |   Документ.Тест КАК Тест
                        |ГДЕ
                        |   МЕСЯЦ(Тест.Дата) = МЕСЯЦ(&ТекущаяДата)
                        |   И ДЕНЬ(&ТекущаяДата) - ДЕНЬ(Тест.Дата) <= 5"
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.03.2013, 18:50  [ТС]
Такое решение не подходит, потому что тут не учитывается, что ближайшие 5 дней могут быть в разных месяцах.
И не понял как вывести Наименование сотрудника.
Вот он мой код

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
&НаСервере
Процедура ПередНачаломРаботыСистемы(Отказ)
    Запрос=Новый Запрос("ВЫБРАТЬ
                        |   ДатаРождения 
                        |ИЗ
                        |   Справочник.Сотрудники КАК Тест
                        |ГДЕ
                        |   МЕСЯЦ(Тест.ДатаРождения) = МЕСЯЦ(&ТекущаяДата)
                        |   И ДЕНЬ(&ТекущаяДата) - ДЕНЬ(Тест.ДатаРождения) <= 5"
 );
 Запрос.УстановитьПараметр("ТекущаяДата",ТекущаяДата());
 
 Результат=Запрос.Выполнить();
 Выборка=Результат.Выбрать();
 
 Пока Выборка.Следующий() Цикл
    Выборка.Следующий();
    Сообщить(Выборка.ДатаРождения);
 КонецЦикла;
 
КонецПроцедуры
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2013, 18:50

Посчитать разность дат и автоматически заполнить ей поле ввода
Есть справочник Рабочие с реквизитами Наименование и Код. В этом же справочнике есть табличная часть ТрудоваяДеятельность с полем...

Запрос в 1С: разность дат в условии ГДЕ
есть след запрос: ВЫБРАТЬ РеализацияТоваровУслуг.Контрагент, -РАЗНОСТЬДАТ(&amp;ДатаОтчета,...

Рассчитываем разность дат от текущей даты
Есть текущая дата, и есть дата рождения в реквизите(дата регистрации). Нужно в табличную чать поместить результат в (год, месяц, дней). ...

Разность дат
Здравствуйте. Задача: Мне нужно посчитать количество дней между двумя датами. protected void Button1_Click(object sender,...

Разность дат
Знаю банально, но не могу разобраться. И так примеру мы имеем данные: 23/03/2013 21.00.00 Была запущена программа и была закрыта:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru