Главная Уроки 1С Урок 8. Курс 1С для начинающих

Урок 8. Курс 1С для начинающих


На 8 уроке вы с вами с помощью механизма запросов создадим новый отчет Именинники, который будет нам выводить из справочника Контакты всех именинников на ближайшие дни.

Сложность данной задачи обусловлена тем, что для выявления именинников нам недостаточно просто сравнивать дату рождения нашего контакта и текущую дату. А как же тогда вычислять именинников?

Если вы по какой-то причине не смогли выполнить домашнее задание 7 урока или хотите сравнить ваше решение с нашим, то можете скачать конфигурацию 7 урока с выполненным домашним заданием:

Скачать конфигурацию, созданную на 7 уроке вместе с выполненным домашним заданием

Для открытия конфигурации вам понадобится платформа 1С Предприятие 8.2 версии не ниже 8.2.15.301.

Листинг программного кода (текст программного кода), который мы писали с вами в процессе 8 урока вы можете посмотреть в данной ветке нашего форума.

В процессе изучения 8 урока нашего курса вам понадобится внешняя обработка Консоль запросов с возможностью обработки результатов

Запросы. Одним из основных способов доступа к данным в 1С 8 является механизм запросов. Данный механизм предназначен только для чтения и обработки данных в информационной базе, то есть  изменять данные с использованием механизма запросов нельзя.

Запросы используют табличный способ доступа к данным, при котором все данные представляются в виде совокупности связанных между собой таблиц и к которым можно обращаться как по-отдельности, так и к нескольким таблицам во взаимосвязи. Такой способ позволяет получать сложные выборки данных, сгруппированные и отсортированные определенным образом: в процессе выборки быть рассчитаны общие и промежуточные итоги, наложены ограничения на количество или состав записей и многое другое.

Язык запросов. В системе 1С Предприятие реализован специальный язык запросов. Этот язык основан на языке SQL, но при этом компания 1С его существенно усовершенствовала. Кроме того, язык запросов, как и язык 1С, позволяет нам писать запросы на русском языке.

Конструктор запросов. Платформа 1С содержит специальный инструмент - конструктор запросов. Он предназначен для того, чтобы помочь разработчику составить правильный текст запроса, используя только интерактивные средства. Таким образом разработчик может составить правильный текст запроса, даже не зная синтаксиса языка запросов.

Общий алгоритм написания запроса:

1. Создаем объект Запрос.

2. Пишет текст запроса.

3. Устанавливаем параметры запроса.

4. Выполняем запрос и получаем выборку.

5. Обрабатываем полученный результат.

 

Ключевые слова и функции, которые мы можем использовать в тексте запросов, можно посмотреть в справке по платформе 1С Предприятие 8.2. Для этого, находясь в конфигураторе, нажмите Shift + F1.

Далее последовательно переходите по разделам справки: Встроенный язык -> Работа с запросами -> Синтаксис текста запросов.

Скачать конфигурацию, созданную на 8 уроке (без выполнения домашнего задания)

Итоги 8 урока курса по 1С

1. Мы познакомились с алгоритмом написания запросов в системе 1С Предприятие.

2. Мы научились использовать Консоль запросов.

3. Мы научились создавать отчеты с использованием табличной модели.

4. Мы познакомились с возможностями конструктора запросов.

Практические задания по 8 уроку

 

Практические задания по 8 уроку будут вам доступны сразу же после успешного решения теоретического теста. Ссылка на тест располагается ниже. 

Пройти тест на понимание материала 8 урока

 

Мы настоятельно рекомендуем вам переходить к изучению следующего урока только после выполнения всех теоретических и практических заданий по данному уроку.

К оглавлению

 

Перейти к 9 уроку

 

Количество просмотров: 45592

Комментарии

  • 8 урок записан и смонтирован. Опубликую в ближайшие часы. 

    26 января 2015 , 09:23
  • Видео 8 урока опубликовано. Вопросы по уроку лучше всего обсуждать у нас на форуме. 

    26 января 2015 , 13:33
  • Владислав, спасибо за бесценный опыт и за труды по созданию такого материала. Только вот ссылочку бы на обработку. Если я правильно понял, это внешняя будет обработка. Если не прав, поправьте меня. Заранее вам благодарен.

    27 января 2015 , 04:55
  • Вот ссылка на консоль запросов http://1c-uroki.ru/articles/Konsol_zaprosov_1C_8.3_8.2. Постараюсь сегодня завершить оформление 8 урока и все ссылки будут в текстовой части.

    27 января 2015 , 10:19
  • Весьма благодарен, благодетель Вы наш! Как на духу - пол ночи учился по вашим урокам и пол ночи и утро не спал, ждал ссылочки этой вот! Благодарствую еще раз. С уважением, Лысенко А.В.

    27 января 2015 , 14:27
  • В разрезе Запроса на соответствие константе ДнейДоДР у меня возник вопрос: к чему усложнение с переводом Даты в Число? Если есть функции для работы с Датой, их и нужно использовать.Я ввел два параметра и обратился к ним в условии через амперсанд: ВЫБРАТЬНаименование,ДатаРождения,РАЗНОСТЬДАТ(ДатаРождения,&ТекДата,ГОД) как ПолныхЛет  ИЗСправочник.Контакты ГДЕНЕ ПометкаУдаления ИДЕНЬ(ДатаРождения) >= ДЕНЬ(&ДатаМин) И МЕСЯЦ(ДатаРождения) <= МЕСЯЦ(&ДатаМакс)  

    27 января 2015 , 16:44
  • А вообще ДатаМин не является обязательным параметром, скорее даже это излишний параметр в данном случае, т.к. достаточно только ТекДата (по факту для условия это и есть ДатаНач или ДатаМин). Так что в тело Запроса, а равно и в модуль формы, если пользоваться моим примером, можно вводить только один новый параметр ДатаМакс.Спасибо за внимание!)))

    27 января 2015 , 17:05
  • Владислав, был не прав в двух последних комментариях, т.к., расписав алгоритм на бумаге, понял свои ошибки. При таком переборе значений, как у меня, алгоритм правильно не будет работать, даже если задать дважды или трижды условия по функциям Даты ДЕНЬ и МЕСЯЦ по параметрам ДатаМин и ДатаМакс. Удалить свои бесполезные комменты не могу, о чем прошу Вас. Еще, хотелось бы прорешать тест и домашнее задание. Но тест выходит на черную страницу 404. Этот коммент тоже флуд, так что удалите и его после прочтения. Весьма Вам благодарен. 

    27 января 2015 , 18:06
  • Для flexible111. Ваши комментарии не бесполезны. Вполне возможно, что многие новички так же попытаются понять почему не получается просто сравнивать дни и месяцы даты рождения и ближайших дней.Что касается самого алгоритма, то там образом задачу можно решить. Просто нужно отдельно рассматривать 2 варианта: 1 когда месяц конца периода равен месяцу текущей даты и 2 - когда месяц периода больше месяца текущей даты. Тогда все получится. И вторая дата (ДатаКон) нам в принципе не нужна - мы в запросе можем считать значение константы ДнейДоДР и прибавить необходимое количество дней. Но все это получится чуть сложнее...

    27 января 2015 , 20:18
  • Вопрос по реализации. Хотел реализовать Предупреждение при начале работы системы с текущей датой. Но вышло сообщение, что использование модальных окон запрещено! Версия 8.3 (учебная). Это одно из изменений по сравнению с версией 8.2 или у меня глючит система? 

    28 января 2015 , 17:20
  • Для flexible111. Я как раз перед этим комментарием отвечал на подобный вопрос. в 1С 8.3 вместо Предупреждение() нужно использовать ПоказатьПредупреждение()

    29 января 2015 , 08:00
  • В какую папку разархивировать заархифированный файл Консоль запроса с обработкой результата?

    30 января 2015 , 14:10
  • Для antiohia. В какую папке не важно. Вас с этой папки придется его открывать (в режиме 1С Предприятие Файл - Открыть и выбирать этот файл).

    30 января 2015 , 14:54
  • Здравствуйте, Влад. Вот мой вариант решения задачи вывода ближайших именинников:Параметр: ТекДата - тип "дата", ДнейДоДР - тип "число".Непосредственно сам запрос, вернее его часть с условием:----------------------------------------------------------------------------ГДЕ         ДЕНЬГОДА(                ДОБАВИТЬКДАТЕ(                        ДОБАВИТЬКДАТЕ(                                ДОБАВИТЬКДАТЕ(                                        ДАТАВРЕМЯ(1,1,1),                                        ГОД,                                        ГОД(&ТекДата)-1                                ),                                МЕСЯЦ,                                МЕСЯЦ(ДатаРождения)-1                        ),                        ДЕНЬ,                        ДЕНЬ(ДатаРождения)-1                )        )        >=        ДЕНЬГОДА(                ДОБАВИТЬКДАТЕ(                        ДОБАВИТЬКДАТЕ(                                ДОБАВИТЬКДАТЕ(                                        ДАТАВРЕМЯ(1,1,1),                                        ГОД,                                        ГОД(&ТекДата)-1                                ),                                МЕСЯЦ,                                МЕСЯЦ(&ТекДата)-1                        ),                        ДЕНЬ,                        ДЕНЬ(&ТекДата)-1                )                )        И        ДЕНЬГОДА(                ДОБАВИТЬКДАТЕ(                        ДОБАВИТЬКДАТЕ(                                ДОБАВИТЬКДАТЕ(                                        ДАТАВРЕМЯ(1,1,1),                                        ГОД,                                        ГОД(&ТекДата)-1                                ),                                МЕСЯЦ,                                МЕСЯЦ(ДатаРождения)-1                        ),                        ДЕНЬ,                        ДЕНЬ(ДатаРождения)-1                )        )        <=        ДЕНЬГОДА(                ДОБАВИТЬКДАТЕ(                        ДОБАВИТЬКДАТЕ(                                ДОБАВИТЬКДАТЕ(                                        ДАТАВРЕМЯ(1,1,1),                                        ГОД,                                        ГОД(&ТекДата)-1                                ),                                МЕСЯЦ,                                МЕСЯЦ(&ТекДата)-1                        ),                        ДЕНЬ,                        ДЕНЬ(&ТекДата)-1+&ДнейДоДР                )                )----------------------------------------------------------------------------Очень интересно Ваше мнение.Большое спасибо Вам за замечательные уроки. 

    02 февраля 2015 , 03:55
  • Для serhiy. Вы блестяще справились с заданием. Я его для большей читабельности опубликую на форуме. Для тех, кому алгоритм кажется не очень понятным я его прокоментирую. Но можно было второй параметр и не использовать. ДнейДоДР мы можем считать прямо в запросе с помощью Константа.ДнейДоДР.Значение. Но еще раз повторюсь - реализация отличная. Вы привели все дни рождения к текущему году и потом сравнивали их с текущей датой и текущей датой + ДнейДоДР. Притом сравнивали не даты целиком, а в виде числа с помощью функции ДеньГода (номер дня в году).

    02 февраля 2015 , 09:21
  • Для Влад. Спасибо, что оценили мой вариант. Попробовал считать значения ДнейДоДР с помощью ключевого слова ЗНАЧЕНИЕ - не получилось. Поискал в интернете и наткнулся на информацию, что для Констант такой вариант не подходит. Так ли это на самом деле?

    02 февраля 2015 , 13:40
  • Для serhiy. Привести Дату рождения к текущему году можно и более лаконичным способом. Листинг на форуме тут http://1c-uroki.ru/forum/viewtopic.php?f=2&t=129&p=220#p220

    02 февраля 2015 , 14:10
  • Для Для serhiy. По константам я оформил все в разделе Язык 1С. Пример по получению значения в запросе прилагается. http://1c-uroki.ru/articles/lang_1C_konstantaПостараюсь на этой неделе в данном разделе написать все самое важное до запросов включительно.

    02 февраля 2015 , 14:09
  • Для Влад. Спасибо за ответ, с константой всё получилось. Очень уместны поправки, особенно смешно у меня получилось во втором исправленом условии.

    03 февраля 2015 , 01:36
  • Для Влад. Доброго дня! Спасибо большое за уроки! Очень помогли разобраться в системе!1. В Вашем вариеанте есть небольшая ошибка - алгоритм не будет работать, если текущая дата, например, 31.12.2015, а следующие 5 дней - это начало следующего года. Получается, что ДР 02.01.2016г. в этот период не попадет, потому что условие выборки будет выглядеть так: 102   > 1231 и 102<1042. Предлагаю свой вариант выборки, постаралась избавиться от этой ошибки, поправьте меня, если не права:"ВЫБРАТЬНаименование, ДатаРождения, &ТекДата, &КонДата,ГОД(&ТекДата)- ГОД(ДатаРождения) как ИспВТекГоду,ДобавитьКДате(ДатаРождения, Год,ГОД(&ТекДата)- ГОД(ДатаРождения)) как ДРвТекГоду,ГОД(&КонДата)- ГОД(ДатаРождения) как ИспВСледГоду,ДобавитьКДате(ДатаРождения, Год,ГОД(&КонДата)- ГОД(ДатаРождения)) как ДРВСледГоду ИЗСправочник.КонтактыГДЕНЕ ПометкаУдаления и(ДобавитьКДате(ДатаРождения, Год,ГОД(&ТекДата)- ГОД(ДатаРождения)) Между &ТекДата и &КонДата ИЛИДобавитьКДате(ДатаРождения, Год,ГОД(&КонДата)- ГОД(ДатаРождения))  Между &ТекДата и &КонДата) УПОРЯДОЧИТЬ ПОДРвТекГоду"КонДата = ТекДата + ДнейДоДР*60*60*24

    19 марта 2015 , 07:23
  • Сорри! Не учла, что тэги надо добавить, текст получился нечетабельный... 

    19 марта 2015 , 07:33
  • Дико извиняюсь, но душа просит нормального читабельного вида... Повторюсь:<ul> <li>В Вашем варианте есть небольшая ошибка - алгоритм не будет работать, если текущая дата, например, 31.12.2015, а следующие 5 дней - это начало следующего года. Получается, что ДР 02.01.2016г. в этот период не попадет, потому что условие выборки будет выглядеть так: 102   > 1231 и 102<104</li><li>Предлагаю свой вариант выборки, постаралась избавиться от этой ошибки, поправьте меня, если не права: <strong>"ВЫБРАТЬ Наименование, ДатаРождения, &ТекДата, &КонДата, ГОД(&ТекДата)- ГОД(ДатаРождения) как ИспВТекГоду, ДобавитьКДате(ДатаРождения, Год, ГОД(&ТекДата)- ГОД(ДатаРождения)) как ДРвТекГоду, ГОД(&КонДата)- ГОД(ДатаРождения) как ИспВСледГоду,ДобавитьКДате(ДатаРождения,Год,ГОД(&КонДата)- ГОД(ДатаРождения)) как ДРВСледГоду ИЗСправочник.КонтактыГДЕНЕ ПометкаУдаления и(ДобавитьКДате(ДатаРождения, Год,ГОД(&ТекДата)- ГОД(ДатаРождения)) Между &ТекДата и &КонДата ИЛИДобавитьКДате(ДатаРождения, Год,ГОД(&КонДата)- ГОД(ДатаРождения))  Между &ТекДата и &КонДата) УПОРЯДОЧИТЬ ПОДРвТекГоду"</strong>,где КонДата = ТекДата + ДнейДоДР*60*60*24</li></ul>

    19 марта 2015 , 09:14
  • Для LadyJuly. Вы молодчина!!! Но не спешите выбрасывать приведенный код. Просто мы забыли предусмотреть ситуацию, когда года ТекДаты и КонДаты отличаются. Сегодня с температурой лежу пластом. Завтра все внимательно посмотрю и напишу.

    19 марта 2015 , 23:19
  • Для Влад. Спасибо что оценили! Не сработали теги, к сожалению... Мучаюсь над заданием по 8 уроку, всвязи с этим есть вопрос - в запросах можно использовать только стандартные функции или свои тоже можно вставлять? У меня не получилось, ругается...

    22 марта 2015 , 10:43
  • Только стандартные функции. Но так как запрос это текстовая строка, а строки можно складывать, то мы можем в модуле писать условия и в зависимости от их выполнения или нет добавлять разные варианты (концовки) запросов. Ну и как правило все остальное передается в запрос через параметры.

    22 марта 2015 , 15:46
  • Доброго времени суток! Про небольшую ошибку с началом года упомянули, поэтому мне остается выложить свой вариант кода: "ВЫБРАТЬ | Контакты.Наименование, | Контакты.ДатаРождения, | Год(&ТекДата)-Год(Контакты.ДатаРождения) как Исполниться |ИЗ | Справочник.Контакты КАК Контакты |ГДЕ | ДеньГода(Контакты.ДатаРождения)-ДеньГода(&ТекДата) <= &ДнейДоДР И | ДеньГода(Контакты.ДатаРождения)-ДеньГода(&ТекДата) > 0 ИЛИ | ДеньГода(Контакты.ДатаРождения)-ДеньГода(&ТекДата)+365 <= &ДнейДоДР"; ТекДата = НачалоДня(ТекущаяДата()); ДнейДоДР = Константы.ДнейДоДР.Получить();

    24 марта 2015 , 20:09
  • Для vorm. Отличное решение.

    26 марта 2015 , 08:10
  • Здравствуйте, Влад. Большое Вам спасибо за уроки. Обратил внимание, что в интерфейсе Вашей конфигурации на рабочем столе отсутствуют панель навигации и панель действий. У меня же они присутствуют и сам рабочий стол вытянут в ширину и высоту, так что приходиться пользоваться полосами прокрутки. Можно ли это исправить и как? И вопрос по решению п.2 7-го задания. У Вас использовано условие больше ТекДата и меньше или равно МаксДата. Ранее в цикле были использованы условия меньше и равно для ТекДата. Можно ли ограничиться условием меньше или равно МаксДата. Спасибо!

    26 марта 2015 , 16:33
  • Для egor. Чтобы рабочий стол не содержал панели команд и панели действйи откройте в конфигураторе "Командный интерфейс рабочего стола" и удалите все ссылки. Другие вопросы видел, но отвечу позднее - нужно срочно убегать :)

    26 марта 2015 , 16:58
  • Прошу прощения. С настройкой рабочего стола разобрался. Оказывается в режиме 1С:Предприятие в Сервис - Параметры установил Режим открытия форм "В закладках". Спасибо за уроки.

    26 марта 2015 , 19:05
  • Влад, подскажите пожалуйста, почему в консоли запросов у меня отсутствует кнопки "Выполнить" и следующая за ней?

    07 апреля 2015 , 17:47
  • Влад, подскажите пожалуйста, почему в консоли запросов у меня отсутствует кнопки Выполнить и следующая за ней?</span></p>

    08 апреля 2015 , 08:51
  • Для Таниты. Кнопки есть, просто они не умещаются на панели. Можноу расширить либо окно всей консоли, либо только данной области (сузив окно составления запроса 1с).

    08 апреля 2015 , 08:53
  • Влад, спасибо, все получилось)))

    13 апреля 2015 , 20:49
  • Такой вариант:"ВЫБРАТЬ        |    Контакты.Наименование,        |    Контакты.ДатаРождения,        |    ГОД(&Текдата) - ГОД(Контакты.ДатаРождения) КАК Исполнится,        |    МЕСЯЦ(Контакты.ДатаРождения) * 100 + ДЕНЬ(Контакты.ДатаРождения) КАК ДатаР,        |    Контакты.Ссылка,        |    ДДДР.Значение        |ИЗ        |    Справочник.Контакты КАК Контакты,        |    Константа.ДнейДоДР КАК ДДДР        |ГДЕ        |    (РАЗНОСТЬДАТ(&ТекДата,ДОБАВИТЬКДАТЕ(Контакты.ДатаРождения, ГОД, ГОД(&Текдата) - ГОД(Контакты.ДатаРождения)), ДЕНЬ) МЕЖДУ 0 И ДДДР.Значение) И        |    НЕ Контакты.ПометкаУдаления        |УПОРЯДОЧИТЬ ПО        |    ДатаР";И вопрос: можно после обозначения чего нибудь спомощью КАК,  по этому обозначению потом к этому обращаться?например: после ГОД(&Текдата) - ГОД(Контакты.ДатаРождения) КАК Исполнится, написать: ДОБАВИТЬКДАТЕ(Контакты.ДатаРождения, ГОД, Исполнится)?

    17 апреля 2015 , 21:32
  • Здравствуйте! Спасибо за Ваши уроки, они очень замечательные)) С нетерпением жду продолжения)))У меня возник такой вопрос. У нас, на рабочем столе, есть кнопки с помощью которых можно создать новое напоминание, нового контакта, также мы сделали так, что бы при клике на именинника открывалась карточка кантакта и далее мы можем ее изменить или проводить какие либо действия с ней. В связи с этим вопрос - как после того как был создан новый элемент(напоминание, контак), либо изменен существующий, обновить рабочий стол, что бы внесенные изменеия отобразились на рабочем столе. Пошарив немного на просторах интернета были найдены такие методы как: Оповестить(), ОповеститьОбИзменении(), ОбновитьИнтерфейс(), но куда их притулить я никак не соображу((( Может я забегаю намного вперед, на буду очень признательна, если Вы пдскажите как это реализовать. Огромное спасибо)))

    20 апреля 2015 , 10:48
  • Для Jocker. Отличный вопрос про обновление рабочего стола. Для того, чтобы обновить формы на рабочем столе мы можем использовать метод Jocker ОбновитьИнтерфейс(). Для того, чтобы при изменении нашего контакта мы сразу же увидели изменения в нашей форме Именинники нам достаточно в модуле формы элемента справочника Именинники в процедуре ПередЗаписью() дописать данный метод ОбновитьИнтерфейс(). А вот с напоминаниями так не получится. С напоминаниями ситуация сложнее, так как на рабочий стол мы выводим не форму напоминаний, а отчет, который выполняется при открытии формы этого отчета. Так вот, вызов метода ОбновитьИнтерфейс() не приводит к вызову обработчика события ПриОткрытии, а значит наш отчет Напоминаний не будет перестроен заново. Но об этом может быть в следующий раз.

    21 апреля 2015 , 08:30
  • Доброго времени суток!Большое спасибо за уроки, они очень помогают!Вопрос такой возник: в форме отчёта Именинники мы сначала производим Запрос с нужными нам условиями, записывая его в переменную РезультатЗапроса, в коде выглядит так:РезультатЗапроса = Запрос.Выполнить();Потом уже, когда начинаем сборку макета, мы делаем так:ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();то есть, переприсваеваем результат нашего запроса из переменной РезультатЗапроса в переменную ВыборкаДетальныеЗаписи. И её уже используем в цикле. Так вот, какой смысл этого действия? Я уже выяснил, что это необходимо, и что к переменной РезультатЗапроса неприменим метод Следующий(), но почему так?

    22 апреля 2015 , 23:34
  • Для granturismo. Если попытаться объяснить это просто, то результат запроса - это ссылка на таблицу (результат выполненного запроса). Но что нам дает ссылка на таблицу? Только возможность к ней обратиться, а чтобы работать с записями этой таблицы их нужно получить (выбрать). Тоесть в строке ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать() самое важное - это метод выбрать. Таким образом работа с запросом это последовательность дейтсвий - взять текст запроса - выполнить его - выбрать записи - перебирать результат в цикле.

    24 апреля 2015 , 10:30
  • Добрый день! Огромное спасибо за Ваши уроки!Я еще не очень хорошо освоил приемы программирования, поэтому возник вопрос, который для Вас покажется, наверное, элементарным. Проблема с выводом поля "Исполнилось лет". Когда мы писали запрос в консоли запросов, то легко можно было добавить поле, через запятую после ключевого слова"Выбрать". Однако, что бы я не добавлял в запрос в конфигураторе, поле не выводится. Получилось вывести поле, только в ручную добавив его в Макет, но тут проблема с передачей в это поле параметра. При подставлении параметра: ГОД(&ТекДата) - ГОД(Контакты.ДатаРождения), выдает ошибку. Пробовал по аналогии с ТекДата, ДатаНач и т. п. УстановитьПраметр - тоже результатов не принесло.  Можно подсказать в каком направлении мне двигаться на данном этапе? Подглядеть у Вас не получается, так как конфигурацию с выполненным ДЗ 8 урока Вы еще не выложили.)) Спасибо!!!  

    21 мая 2015 , 11:46
  • Для steeshiy. Намек понял. Конфигурацию выложу :) На счет того, что не получается добавить поле в конфигураторе... Конструктор запросов в результате своей работы формирует текст запроса. Если вы хотите добвить поле, то просто пишите его прямо в процедуре в тексте. Кроме того, сам текст запроса, подготовленный в консоли запросов, можно скопировать и вставить в процедуру вместо размещения текста запроса.

    21 мая 2015 , 12:25
  • Да, я так и сделал, скопировал текст запроса созданный в консоли. Только в консоли он выдает все поля, а когда этот же текст в процедуре, то выдает только Наименование и ДатаРождения. В консоли на уроке мы добавляли поля, просто через запятую, например цифру 10, в результате было создано новое поле - где в шапке было поле1 и ниже значение 10. Добавив точно так же, в тексте запроса в конфигураторе, никакое дополнительное поле не создается. Почему?  

    21 мая 2015 , 13:12
  • <p>Подскажите, в ячейках макета внес ПараметрРасшифровки &quot;Ссылка&quot;, но в отчете клик по ячейкам отчета не переносит к соответствующему элементу списка.</p><p>Спасибо.</p>

    12 января 2016 , 22:43
  • В самом запросе нужно обязательно выбрать поле ссылка. Например, ВЫБРАТЬ Контакты.Ссылка. 

    13 января 2016 , 10:48
  • выбрать наименование,ДатаРождения,&текдата,РАЗНОСТЬДАТ(ДатаРождения,&текдата, год) как КоличествоЛЕТ                   Из Справочник.контакты                   Где НЕ ПометкаУдаления и ДЕНЬГОДА(ДатаРождения)>=ДЕНЬГОДА(&текдата)И ДЕНЬГОДА(ДатаРождения)<ДЕНЬГОДА(&текдата)+&константа//МНЕ кажется более оптимальное решение

    26 января 2016 , 19:35
  • Андрей1Сстажер, тут просто не получается. В данном случае не учитывается высокосный год, но погрешность на 1 день и только раз в 4 года :)

    28 января 2016 , 14:05
  • Мне удалось очень лаконично решить эту задачу, всё просто. Влад, если есть ошибка, прошу указать её. Заранее благодарен. Запрос.Текст = "ВЫБРАТЬ| Наименование,| ДатаРождения,| &ТекДата,  | РазностьДат(ДатаРождения,&ТекДата,Год) как Исполняется|ИЗ| Справочник.Контакты|ГДЕ| Не ПометкаУдаления И| Месяц(&Условие)=Месяц(ДатаРождения) И| День(&Условие)>=День(ДатаРождения) И| День(ДатаРождения)>=День(&ТекДата)"; ТекДата=НачалоДня(ТекущаяДата());Условие=ТекДата+Константы.ДнейДоДР.Получить()*60*60*24; Запрос.УстановитьПараметр("Условие",Условие);Запрос.УстановитьПараметр("ТекДата",ТекДата);РезультатЗапроса = Запрос.Выполнить();

    20 февраля 2016 , 15:47