Разработка и оптимизация запросов в 1С:Предприятие 8.3. Модуль 2. Синтаксис текста запроса
На данной странице задавайте вопросы по материалам и практическим заданиям второго модуля курса «Разработка и оптимизация запросов в 1С:Предприятие 8.3».
Практические задания
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (1 016):
Комментарии закрыты

Ключевое слово СПЕЦСИМВОЛ в конструкторе запроса можно только вручную записать в произвольном условии?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Задание №19.
При выполнении запроса в окне сообщений выводится следующее сообщение: «Метод объекта не обнаружен (Количество)»
…
(текст комментария доступен только участникам Мастер-группы)
Эта ошибка возможно возникает из-за того, что вы группируете не на закладке «Группировка» конструктора запроса, а на закладке «Итоги». У меня было также, не сразу понял)
…
(текст комментария доступен только участникам Мастер-группы)
Получается так и есть, в модуле 3, когда начинается работа в запросе с итогами, выдаёт такую ошибку. Отладчиком найти не получается, не проваливается в Попытка ВыполнитьЗапросСервер(…)
Возможно у вас есть нормальная версия консоли? Я скачивал на итс последнюю, версию?
…
(текст комментария доступен только участникам Мастер-группы)
Благодарю, всё заработало. Тогда ещё один вопрос по консоли: в пустом окне «текст запроса» не запускается конструктор запроса, выдавая ошибку «ожидается выражение «ВЫБРАТЬ». Приходится каждый раз писать «выбрать 1». Заранее благодарю)
…
(текст комментария доступен только участникам Мастер-группы)
Благодарю, теперь всё заработало.
Что мне нравится в вашем курсе — оперативно отвечаете!
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
В задании №17 наверняка надо добавить РАЗЛИЧНЫЕ, чтобы не было повторяющихся записей.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!При нажатии галочки «Выполнять план выполнения запроса» выходит такое окно.Я зашел под администратором, у него полные права. В чем же проблема?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Вопрос по практическому заданию №9. Зачем ссылаться на ссылку. Нельзя ли сделать так:
ВЫБРАТЬ РАЗЛИЧНЫЕ
РеализацияТоваров.Контрагент КАК Контрагент
ИЗ
Документ.РеализацияТоваров КАК РеализацияТоваров
ГДЕ
РеализацияТоваров.Товары.Номенклатура = &Номенклатура
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Не согласен с решением Вами практического задания №8. Если ввести номер +7(927)756-а1-12, то
Ваш запрос посчитает его корректным. Надо сделать так
ПОДОБНО «+7([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]»
Вот теперь он не пропустит последний номер телефона, можете попробовать.
…
(текст комментария доступен только участникам Мастер-группы)
Василий, здравствуйте.
Опять вопрос по консоли запросов.
Я раздобыл ИТС-версию консоли, которая работает без сбоев, однако когда я пытаюсь поставить галочку на «Показывать план выполнения запроса», мне выдается сообщение про права доступа (Снимок 1).
Подскажите, пожалуйста, что можно с этим сделать, чтобы работало как надо?
…
(текст комментария доступен только участникам Мастер-группы)
Да, теперь всё работает.
Спасибо большое.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.Подскажите пожалуйста,почему в конструкторе запросов при открытии в конфигураторе нет кнопки запуска на выполнение запроса?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо.
Здравствуйте.
Вы не могли бы прислать ссылку на консоль запросов?
Я скачивал здесь: http://its.1c.ru/db/metod81#content:4500:1.
Но что-то она «кривая» какая-то, не работает так, как у преподавателя в видео, в частности не запускается конструктор запроса при работе в толстом клиенте в режиме пользователя (снимок 1 и снимок 2).
Или дело в версии платформы?
У меня версия — 8.3.16.1063.
…
(текст комментария доступен только участникам Мастер-группы)
Так как есть ограничение по ветке комментариев, в продолжение переписки ниже на этой странице, а именно на комментарий
https://курсы-по-1с.рф/1c-v8/development-optimize-queries/startpage/module02/comment-page-5/#comment-847317
у меня еще такой вопрос:
Все теперь предельно ясно, спасибо!
Еще осталось не понятно что такое в данном случии таблица T1 и зачем оно делает какое то левое соединение если все же берем из таблицы источника — Справочник.Номенклатура.
И что означает —
«» + Данные.Наименование + » (» + Данные.Артикул + «)» — а именно зачем тут — «» +
…
(текст комментария доступен только участникам Мастер-группы)
А как Данные.Наименование могут быть не строковые или NULL ?
…
(текст комментария доступен только участникам Мастер-группы)
Представление = «» + Данные.Артикул + » (» + Данные.Наименование + «)»;
— если Данные.Артикул для групп = NULL, и вы говорите что все будет работать — то что получается что пустая строка + NULL = пустая строка?
…
(текст комментария доступен только участникам Мастер-группы)
Практическое задание №15 — «Пользователь устанавливает два параметра запроса – Дата начала и Дата окончания. Необходимо запросом получить список документов «Поступление товаров», попадающих в этот интервал.»
— это вы не сделали) — а как же все таки сделать в запросе Дата начала и Дата окончания ?
— уже нашел ответ по тексту «Небольшое уточнение, в 15 задании»
Коллеги — давайте писать не произвольно название задач а так как они называются — то есть эта задача называется в «Query-1Сv8-theory» — «Практическое задание №15» и так и пишем )
и тогда из 826 комментариев можно будет легко нажать Ctrl + F и найти ответ.
Суппорту предлагаю это прописать как правило!
Также есть пожелания — добавить на сайте кнопку ПОКАЗАТЬ ВСЕ Комментарии и
тогда что бы найти ответ методом поиска из 826 комментариев не нужно будет перелистывать 5 и более страниц!
Автору курса предлагаю на найденные баги, что бы не переснимать видео, просто добавлять текстовый документ в соответствующую папку задачи — с именем например комментарии к видео и писать что при снятии видео по ошибке не учли то-то и то и текст ниже что нужно сделать что бы оно работало как в задании — как пример здесь ниже ваш текст — нужно добавить в запрос:
ГДЕ
ПоступлениеТоваров.Дата МЕЖДУ &Дата1 И &Дата2
…
(текст комментария доступен только участникам Мастер-группы)
стр — 51 — Текстовое представление ссылочного поля — если функция
ПРЕДСТАВЛЕНИЕ(Номенклатура.Ссылка) — возвращает текстовое поле — то чего нельзя прибавить сразу текст какой то ?
например
ПРЕДСТАВЛЕНИЕ(Номенклатура.Ссылка) + «Вася»
— пишет ошибку — скрин прикрепил
или как к представлению ссылки присоединить в запросе текст какой то ?
а если вывести сразу через разименование — типо
Номенклатура.Наименование — то это намного тяжелей запрос получается ?
и если если выводить как текст через Номенклатура.Наименование — то тогда и работает
добавление текста — типо
Номенклатура.Наименование + » Вася» КАК Наименование
…
(текст комментария доступен только участникам Мастер-группы)
а чего именно когда отвечает Василий Ханевич — то не приходит на почту уведомление что был сделан ответ на мой вопрос. Прошлый раз когда Вы отвечали тоже не было уведомления на почту
…
(текст комментария доступен только участникам Мастер-группы)
а если вывести сразу через разименование – типо
Номенклатура.Наименование – то это намного тяжелей запрос получается ?
Тоесть есть есть например 100тыс товаров
И в первом случии выводим просто
Номенклатура.Ссылка
Во втором
Номенклатура.Наименование
В третьем
ПРЕДСТАВЛЕНИЕ(Номенклатура.Ссылка)
То сколько примерно в доли секундах будет длится запрос и какой из них наименее легкий и почему?
…
(текст комментария доступен только участникам Мастер-группы)
«Первые два запроса (где выбираются Ссылка и Наименование) должны быть сравнимы, потому что выбираются реальные поля из базы.» — а когда мы выводим ссылку, разве она не берет еще и поле Представление и не типо соединяет их? Ведь мы же видем не саму ссылку а так как она представленна.
…
(текст комментария доступен только участникам Мастер-группы)
“Первые два запроса (где выбираются Ссылка и Наименование) должны быть сравнимы, потому что выбираются реальные поля из базы.» — тогда почему вы пишите, что ссылка и наименование сравнимы, если когда мы берем просто наименование, мы просто взял его и все. А когда ссылку, это взяли с базы ссылку, потом обработали и приклеили представление — это же намного тяжелее запрос получается, или я все таки не правильно что то понял? Для примера берем например документ продажи и выводим реквизит Покупатель, что является ссылка на справочник Контрагенты.
Пока я так это понял, что если работаем с большой базой и делаем большой отчет и нам достаточно видеть текст в виде наименования — то через точку выводим наименование — это самый легкий запрос, так как через левое соединение просто выводим наименование.
Если нам нужно вывысти именно как сделанно представление то применяем функцию Представление, которая налету анализирует, стандартное ли это представление, если да то в чем, если не стандартное то по еще по алгоритму отрабатывает и налету выводит.
И ссылка это самое тяжелое, так как сначало с базы ссылку получаем, а потом — о типо нам же нужно вывести ее представление и поновой делаем запрос и выясняем представление и склеиваем с сылкой и выводим представление ссылки.
Верно я все понял?)
…
(текст комментария доступен только участникам Мастер-группы)
А можно еще на таком же понятном примере описать что просходит при использовании ПРЕДСТАВЛЕНИЕ(Номенклатура.Ссылка)
Функция ПРЕДСТАВЛЕНИЕ на лету формирует представление или тоже потом делает дополнительные запросы для каждой ссылки по отдельности ?
…
(текст комментария доступен только участникам Мастер-группы)
Практическое задание №18: вы в курсе, что именно такая реализация обработчика события ОбработкаПолученияПредставления приведет к невозможности получения представления групп — и, соответственно, к невозможности открытия любых форм, где отображаются группы номенклатуры? Поскольку у группы нет поля Артикул, то это будет попытка выполнить выражение
Null + Строка
…
(текст комментария доступен только участникам Мастер-группы)
Практическое задание 8: ИМХО, решение (шаблон «+7(___)___-__-__») не совсем корректное. В приведенном решении не учитываются случаи, когда вместо цифры в номере телефона оказался алфавитный символ. Проверьте:
ВЫБРАТЬ ВЫБОР КОГДА «+7(ЧТО)ЭТО-ЗА-??» ПОДОБНО «+7(___)___-__-__» ТОГДА «ПОДОБНО!» ИНАЧЕ «НИЧЕГО ПОДОБНОГО!» КОНЕЦ КАК РезультатПроверки
В результате окажется, что «телефонный номер» «+7(ЧТО)ЭТО-ЗА-??» вполне корректен.
Правильное решение: «+7([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]»
…
(текст комментария доступен только участникам Мастер-группы)
Просто замечание к главе о псевдонимах полей. Вот такая попытка задать псевдоним для поля Ссылка вызывает ошибку (ключевое слово КАК здесь обязательно):
ВЫБРАТЬ Номенклатура.Ссылка Ссылка ИЗ Справочник.Номенклатура Номенклатура
…
(текст комментария доступен только участникам Мастер-группы)
Задание №18 не имеет четкой постановки. Весь 2 модуль задачи решали в режиме Предприятия, а первую часть задания 18 потребовалось зайти в конфигуратор и переопределить Представление справочника «Номенклатура». А может быть так что в будущем разработчик добавит произвольное поле, которое пользователь может определять в режиме Предприятия для Представления каждого справочника и не надо кодить ничего в менеджере.
Вопрос: В чем смысл строить Представление через конфигуратор, если я могу в запросе получить конкатенацией Артикула и Наименования тот же результат? Этот вопрос касается больше типовых конфигураций, которые на поддержке и менять их себе дороже выйдет.
…
(текст комментария доступен только участникам Мастер-группы)
Вот через расширение согласен. Схема рабочая. Спасибо!
Приветствую!
Объект СхемаЗапросов работает с виртуальными таблицами?
…
(текст комментария доступен только участникам Мастер-группы)
Объект СхемаЗапроса полностью содержит функционал конструктора запроса?
…
(текст комментария доступен только участникам Мастер-группы)
Задание №7 Приведенное решение может вывести группы, содержащие в наименовании «%». Хорошо бы фильтром группы убрать из выборки товаров.
…
(текст комментария доступен только участникам Мастер-группы)
Спецсимвол потерялся…
…
(текст комментария доступен только участникам Мастер-группы)
В практическом задании 17 указывается, что обращение к регистратор.дата в случае большого количества типов регистраторов замедляет запрос. И ускорить его можно с помощью функции ВЫРАЗИТЬ. Но я не могу понять как её использовать в этом конкретном примере. Предположим, нам надо выбрать только даты всех поступлений товаров. Как это сделать?
А все. Разобрался.
ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваров).Дата
…
(текст комментария доступен только участникам Мастер-группы)
а как же остальные документы — РеализацияТоваров и ПеремещениеТоваров?
…
(текст комментария доступен только участникам Мастер-группы)
Почему не работает
ДАТАВРЕМЯ(Год(ПоступлениеТоваров.Дата),Месяц(ПоступлениеТоваров.Дата),День(ПоступлениеТоваров.Дата)) ?
Вроде по типам параметров все ок.
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
В уроке 15 при выборе группы в значении параметра выдает ошибку. С чем это может быть связано?
…
(текст комментария доступен только участникам Мастер-группы)
Да, спасибо, в этом и была ошибка.
…
(текст комментария доступен только участникам Мастер-группы)
Доброе утро. Помогите пожалуйста разобраться с оператором ВЫБОР.
Есть запрос:
БУ.Субконто1 КАК Контрагент,
БУ.Субконто2 КАК Договор,
БУ.Субконто3 КАК Документ,
БУ.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
-БУ.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт,
БУ.Счет КАК Счет
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Счет В ИЕРАРХИИ (&Счет), , ) КАК БУ
ГДЕ
ВЫБОР
КОГДА &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
ТОГДА ИСТИНА
ИНАЧЕ БУ.Субконто3.Контрагент = &Контрагент
КОНЕЦ
Не понимаю условия : КОГДА &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) — Если в параметр &Контрагент ничего не передается, тогда ИСТИНА?
Спасибо
Если в параметр &Контрагент передать Справочник.Контрагенты.ПустаяСсылка() тогда будет истина, Если передана не пустая ссылка, то результат будет зависеть от того равны параметр и Контрагент или нет, если совсем ничего не передать — будет ошибка что параметр не передан.
Да, правильнее было сказать, когда передается пустая ссылка. Мне не понятен результат ИСТИНА.
Передал пустую ссылку — получил ИСТИНА, что это значит? Вот это не понятно.
Все, разобрался. Этот прием разбирается в видео-уроке 8, 6 модуль.
Если передаем пустую ссылку, получаем в секции ГДЕ ИСТИНА — значит что условия нет.
Добрый день!
Задание №13. При попытке получить день используя функцию
Выдается сообщение об ошибке: «Неверные параметры «ДАТАВРЕМЯ»» ДАТАВРЕМЯ(Год(ПоступлениеТоваров.Дата),Месяц(ПоступлениеТоваров.Дата),День(ПоступлениеТоваров.Дата)).
Решение преподавателя использовать «НАЧАЛОПЕРИОДА» понятно. А как можно получить дату учитывая час без секунд?
…
(текст комментария доступен только участникам Мастер-группы)
Понятно, спасибо.
Просьба проконсультировать — в функциях параметры выделяются разным цветом (черным, синим, красным), в функции «ДАТАВРЕМЯ» параметры выделены красным. Можно-ли по цвету параметров понять что это обозначает?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо.
Добрый день!
На 86-ой странице учебника допущена ошибка. В предложении «Как реализовать свою собственную простейшую консоль запроса для управляемого ПРЕДЛОЖЕНИЯ» слово «предложение» следует заменить на «приложение».
…
(текст комментария доступен только участникам Мастер-группы)
на сегодня так и не исправили, когда планируете исправить ? )
…
(текст комментария доступен только участникам Мастер-группы)
Решение практического задание № 15 реализовано не полностью )))
Не указан интервал дат, который выбирает пользователь. Вероятно, Вы забыли это сделать. Я так понимаю, что в конструкторе запроса в секции Условия нужно было прописать: ПоступлениеТоваров.Дата > (&ДатаНачала) И ПоступлениеТоваров.Дата < (&ДатаОкончания)
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
В практическом задании № 13 даты поставки выводятся со временем. Причем все даты приведены к началу дня. Получается, что все даты поставки в решении указаны со временем 00:00:00. А нельзя никак вообще убрать 00:00:00 ? Или придется использовать функции День, Месяц, Год?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо! Вас понял. Знаю этот прием. В принципе, самое главное, чтобы в отчете выводилось красиво и грамотно.
Вечер добрый. При «Показе плана выполнения запроса» выдает ошибку о том, что нет прав доступа.Как можно это решить?
…
(текст комментария доступен только участникам Мастер-группы)
У меня возникала такая же ошибка. При запуске 1С от имени администратора ошибка не возникает. Спасибо!
«Обратите внимание, что если на таблицу отсутствует право ЧТЕНИЕ, то запрос с
использованием такой таблицы, будет выполнен с ошибкой вне зависимости от
использования в запросе ключевого слова РАЗРЕШЕННЫЕ.»
Запрос не будет выполнен полностью? Другие таблицы, если они еcnь, тоже не будут получены?
…
(текст комментария доступен только участникам Мастер-группы)
«Следует учитывать, что использование ключевого слова РАЗРЕШЕННЫЕ оказывает
влияние на работу только в том случае, если на таблицы наложены ограничения доступа к
данным (RLS).»
Не понял, о чем речь. Если не используется RLS, то нет смысла использовать РАЗРЕШЕННЫЕ?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый вечер.
Оформлю как новый вопрос.
Если используем в объекте конфигурации нестандартное представление, то тут уже нужно задуматься какое поле использовать.
Когда используем виртуальное поле «Представление», то запрос следующий:
T1.Артикул,
T1.Наименование
FROM Справочник.Номенклатура T
Когда используем функцию «Представление(Номенклатура.Ссылка)» получаем левое соединение:
T2.Артикул,
T2.Наименование
FROM Справочник.Номенклатура T1
LEFT OUTER JOIN Справочник.Номенклатура T2
ON T1.Ссылка = T2._IDRRe
Разница в скорости отработки запроса также не в пользу функции «Представление()».
Собственно вопрос: Поскольку еще «глубже» я не вижу как будет идти работа по «Представление», то возможно и нет разницы и там дальше данное различие нивелируется?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый вечер.
Не вижу разницы между:
РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
Контрагенты.Родитель КАК Родитель
ИЗ
Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
ПО (РеализацияТоваровТовары.Ссылка.Контрагент = Контрагенты.Ссылка)
И
РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
РеализацияТоваровТовары.Ссылка.Контрагент.Родитель КАК Родитель
ИЗ
Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
поскольку разницы в скорости или отличия по соединениям в SQL — запросе нет.
1. Какой вариант предпочтителен по «правилам хорошего тона»?
2. Имеется ли «иной» верный вариант вытащить Родителя контрагента с меньшими затратами?
…
(текст комментария доступен только участникам Мастер-группы)
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Цитата:
Если ограничение доступа установлено на конкретное поле, такое поле будет получено из
базы, если ограничение выполняется.
Если ограничение доступа установлено на Прочие поля, данные будут получены, если
ограничение выполняется для всех полей объекта, участвующих в запросе.
Подразумевается, что данные в сам запрос при выборке попадут, допустим для расчетов и т.д., но при отображении не будут видны?
Разберем на части:
1. Если ограничение доступа установлено на конкретное поле, такое поле будет получено из базы — т.е. получим из базы хоть и установлено ограничение?
2. Если ограничение выполняется — звучит как «получим если есть ограничение иначе не получим»
…
(текст комментария доступен только участникам Мастер-группы)
Благодарю
Пожалуйста!
Интересного обучения!
Приветствую.
Есть вот такой момент:
При использовании функции ПРЕДСТАВЛЕНИЕ() значение представления может
получаться одним или несколькими дополнительными запросами к базе данных.
В основном запросе из базы данных будут извлекаться только ссылки.
Значит:
1. Для ссылочных реквизитов создается виртуальное «представление» как реквизит. Не обращается к базе и не тратит ресурсы?
2. При использовании функции «Представление()» идет обращение к базе для того чтобы получить представление данного реквизита?
3. Пункт 2 отличается от «Строка(Выборка.Ссылка)» только лишь тем, что тут каждый раз идет обращение к базе, а не как в «Выборка.ПредставлениеСсылки», где все берется из кеша?
…
(текст комментария доступен только участникам Мастер-группы)
По пункту 1 неверно вопрос задал:
1. Виртуальное поле «Представление» создается системой для представления. Значит ли это, что данное виртуальное поле эффективнее к выборке чем использование функции «Представление(Контрагенты.Ссылка)». (скриншот)
Естественно мы не учитываем, что выбирать виртуальное поле куда логичнее чем использовать функцию.
…
(текст комментария доступен только участникам Мастер-группы)
Благодарю
Пожалуйста!
Интересного обучения!
Добрый день! подскажите пожалуйста, уловил мысль но вот чтоб точно….получается при получении поля «ссылка» в запросе, чтобы 2 раза система не бегала в БД за номальным представлениемк всегда лучше писать сразу: Представление(ссылка)? (это касаемо только ссылок?) спасибо!
Здравствуйте!
Если требуется показывать ссылку пользователю, то будет правильно получать сразу представление ссылки.
а что лучше показывать, ссылку или наименование ? ну т.е я могу показать представление ссылки и могу показать наименование….как правильнее?
…
(текст комментария доступен только участникам Мастер-группы)
Могу ли я в рамках данного курса задать еще вопрос, не совсем по теме:
— Делаю отчет на скд, в запросе проставил параметры, на вкладке параметры галочки – «Запрещать не заполненные значения» не ставил, но при формировании отчета появляется ошибка – «Не задано значение параметра (…)», Как сделать чтобы параметр был не обязательным?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый День!
Возможно, это будет в следующих уроках курса, но у меня возник вопрос – как можно в запросе обратиться к элементам справочников, если они не предопределенные (не через параметр, а именно в самом запросе). В самом начале курса было показано, как это сделать не через запрос, а на встроенном языке, например, «НайтиПоНаименованию» или «по коду» или «по реквизиту», а можно ли то же самое сделать в запросе?
…
(текст комментария доступен только участникам Мастер-группы)
Понял, Спасибо.
«Показывать план выполнения запроса» в Консоли запросов — только для управляемых приложений?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! В консоли запросов функционал ограничен и не позволяет выполнять запросы в том объеме, как в видеоуроках. Во-первых, за закладке «Условия» в правом окне «Условие» нет полей «Номер» и «Произвольное». Во-вторых, при написании вложенного запроса с помощью окна «Произвольное выражение» нет возможности написать вложенный запрос, потому что выделяя пробел в скобках и нажимая правую кнопку мыши, в контекстном меню нет «Конструктора запроса». Скрины прилагаю. Подскажите, пожалуйста, как исправить ошибку. Спасибо.
…
(текст комментария доступен только участникам Мастер-группы)
Скачал с сайта ИТС консоль запросов 8.2 обычное приложение. При написании вложенного запроса невозможно увидеть скопированный текст или написанный вручную в окне, которое отражено на скриншоте. После чего нажав, на «Выполнить запрос» (зеленая стрелка), появляется окно как на втором скриншоте (Текст запроса ВЫБРАТЬ 1 на черном фоне). Это можно как-то исправить?
…
(текст комментария доступен только участникам Мастер-группы)
В окне «Запрос» при нажатии на левую кнопку «Редактировать запрос», как Вы пишете, поле должно перейти в режим редактирования (либо вручную, либо скопированный текст). У меня после нажатия кнопки»Редактировать запрос» поле для редактирования не доступно.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! В видеоуроке №23 при проставлении «галочки» «Показывать план выполнения запроса» выходит сообщение об ошибке, скрин прилагаю. Подскажите, пожалуйста, вариант решения проблемы.
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо, ошибка исчезла.
Добрый день! В видеоуроке №21 второго модуля рассказывается о написании внешней обработки, которая прилагается в качестве доп.материала курса под названием «Консоль(Query-2-Syntax-21)». Когда в пользовательском режиме открываю эту обработку, то при нажатии на кнопку «Конструктор», появляется ошибка. Скрин прилагаю. Подскажите, как устранить ошибку.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Ваш совет помог. Спасибо.
Здравствуйте. Скачаны с ИТС свежие консоли запросов и демонстрационная база 8.3 «Управляемое приложение». Просматриваю видеоуроки (сейчас 14 видео модуля 2) и пытаюсь повторять всё, что в них показывается. Возникла проблемка. Не могу в параметры запроса выбрать группу справочника. Любая консоль на демонстрационной базе не дает выбрать группу. Эти же консоли на других базах группу выбирать дают. Делаю вывод, что это в базе какая-то настройка включена. Помогите, пожалуйста, разобраться.
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо, Василий. У меня получилось. Я предполагала, что копать нужно в сторону консоли. Но, ведь, именно эта же самая консоль на другой базе (ERP, 8.3.12) работала без её корректировки, свойство ВыборГруппИЭлементов было в значении АВТО, и группы выбирались.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый вечер!
1. Подскажите пожалуйста, почему в конструкторе запросов (вкладка «условие») сама строка условия выглядит иначе, чем у вас? При этом самой 1С конструктор запросов выглядит как у вас. Скриншоты прикрепила. ИнструментыРазработчикаКонсольЗапросов.epf была скачана с оф.сайта 1С
По умолчанию мне условие всегда приходится писать вручную, это ужасно неудобно и долго, можно ли ее «исправить»?
2. Также иногда появляется ошибка «Неизвестный идентификатор формы» — из-за чего?
3. Задание 16: в режиме просмотра плана выполнения запроса (выводить имена реквизитов и объектов метаданных) отображаются названия таблиц как они хранятся в БД. Почему так происходит?
Fields:(
T1.Номенклатура,
T2.Артикул
)
_DOCUMENT53_VT82 (T1) FULL SCAN
NESTED OUTER LOOP
_REFERENCE26 (T2) RANGE SCAN USING INDEX (_IDRREFIDX) (1 fields)
WHERE
(T1.Номенклатура = T2._IDRRef)
Statistics: RecordsScanned = 52, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 25850, ResultRecords = 26, RecordSize = 50
1) забыли приложить картинки
2) в какой момент возникает ошибка?
3) то ли обработка у Вас с глюками, то ли платформа. Отправил консоль на почту
Скрины загружала, отправляю повторно.
Ошибка возникает при вызове конструктора запросов. Конкретнее выяснить не удалось, т.е. иногда появляется, рандомно..
Консоль управляемого приложения, которую вы мне отправили ведет себя также. Такое поведение наблюдается в 1С:Предприятие 8.3 (8.3.13.1644) и 1С:Предприятие 8.3, учебная версия (8.3.12.1855).
В чем глобальное отличие ? На одной картинке строка условие в состоянии редактирования (нажали ентер или щнлкнули мышкой), на второй в обычном состоянии.
По вылету ошибки — похоже какой-то глюк платформы
В скриншотах выше — как выглядит поле «условие» у меня сразу после добавления условия и в режиме редактирования, а на скрине в этом сообщении — желаемый результат. Вопрос: в чем причина такого поведения обработки консоли запросов и можно ли это исправить? Повторюсь: в самом конфигураторе платформы конструктор запросов нормально отображает содержимое вкладки «условия». Также, есть альтернативная консоль запросов «универсальная», в ней все нормально.
Зачем что-то исправлять, если оно работает ? Ну разные консоли. Не нравится одна — пользуйтесь другой, которая нравится больше. Их сейчас много
Задание № 18 — в результате запроса в поле «представление» для групп: у меня пусто, в видео с этим заданием — NULL, почему?
Разные версии платформы, наверное.
У меня вообще ошибку выдало на эту строку Представление = Данные.Артикул + » — » + Данные.Наименование;
В группах у нас нет артикула, поэтому возвращается NULL. На моей версии платформы ругнулось, что не может сложить NULL и строку
Здравствуйте! Пример №6, текущего модуля — пожалуйста, разъясните подробнее, что происходит в этом запросе, каков будет результат выполнения этого запроса, в каких случаях может понадобится такой запрос; не поняла, как используется в данном случае функция «Выразить»: Выразить (ТоварныеЗапасы.Регистратор КАК Документ.РасходТовара).Номер КАК Номер ; какие в данном примере могут быть «лишние» неявные соединения, как именно ускоряется работа запроса?
…
(текст комментария доступен только участникам Мастер-группы)
Поняла, благодарю)
Добрый день может кто подсказать((( запутался….
Запрос.Текст =
"ВЫБРАТЬ
| ОбращениеКлиентаКонтактнаяИнформация.Представление КАК Представление
|ИЗ
| Документ.ОбращениеКлиента.КонтактнаяИнформация КАК ОбращениеКлиентаКонтактнаяИнформация";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи)Тогда
СсылкаНаТелефон = Документы.ОбращениеКлиента.НайтиПоРеквизиту("Телефон","");
ТелСт1 = СсылкаНателефон.ПолучитьОбъект();
ТелСт = ТелСт1;
ТелСТ.Телефон = ВыборкаДетальныеЗаписи.Представление;
ТелСт.Записать()
КонецЕсли;
КонецЦикла;
Хочу данные из ТЧ записать в реквизит Телефон для формы списка.
Пишет не выбран элемент(.
Не могли бы подсказать и как решить проблему?)
по урокам пока вопросов нету)
…
(текст комментария доступен только участникам Мастер-группы)
Не помогло. записывает первый номер во все документы. а нужно что бы искал из документов и записывал в переменную.Ну спасибо за наводку.
…
(текст комментария доступен только участникам Мастер-группы)
| ФИОФизическихЛицСрезПервых.Период КАК Период,
| ФИОФизическихЛицСрезПервых.Фамилия КАК Фамилия,
| ФИОФизическихЛицСрезПервых.Имя КАК Имя,
| ФИОФизическихЛицСрезПервых.Отчество КАК Отчество
|ПОМЕСТИТЬ ПервыхСрез
|ИЗ
| РегистрСведений.ФИОФизическихЛиц.СрезПервых КАК ФИОФизическихЛицСрезПервых
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Скоринг.Дата КАК Дата,
| Скоринг.ФизическоеЛицо.Фамилия КАК ФизическоеЛицоФамилия,
| Скоринг.ФизическоеЛицо.Имя КАК ФизическоеЛицоИмя,
| Скоринг.ФизическоеЛицо.Отчество КАК ФизическоеЛицоОтчество
|ПОМЕСТИТЬ Скоринг
|ИЗ
| Документ.Скоринг КАК Скоринг
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ФИОФизическихЛицСрезПоследних.Период КАК Период,
| ФИОФизическихЛицСрезПоследних.Фамилия КАК Фамилия,
| ФИОФизическихЛицСрезПоследних.Имя КАК Имя,
| ФИОФизическихЛицСрезПоследних.Отчество КАК Отчество
|ПОМЕСТИТЬ ПоследнихСрез
|ИЗ
| РегистрСведений.ФИОФизическихЛиц.СрезПоследних КАК ФИОФизическихЛицСрезПоследних";
Добрый день.Не могли бы подсказать.
У меня есть документы в них есть физ.лица которые имеют регистр ФИОФизическихЛиц
Измерения физлицо= ссылкаФизлицо
Ресурсы
фамилия
имя
отчество
в регистре есть период с который действует новая фамилия
Как можно составить запрос таким образом что бы при изменении допустим фамилии
в старых документах не менялась фамилия.
с 01.01.2018 был Иванова Ирина Петровна
документ от 01.02.2018 №1 что бы остался под ивановой
а с 01.03.2018 стала Петрова Ирина Петровна
а документ 01.04.2018 был уже под Петровой
В документе имеется дата документа которая равна дате записи документа
может с ней сравнивать…
Насколько я понимаю, регистр периодический ? Тогда нужно обращаться к виртуальной таблице СрезПоследних
ФИОФизЛица.Фамилия,
ФИОФизЛица.Имя,
ФИОФизЛица.Отчество
ИЗ
РегистрСведений.ФИОФизЛица.СрезПоследних(&ДатаДокумента, ФизЛицо В &СписокФЛ) КАК ФИОФизЛица
В параметр ДатаДокумента передать Дату документа, а в СписокФЛ — массив ссылок на физлиц в этом документе
Насчет массива не понял. нужно в модуле объекта массив сделать?
мне же нужно что бы ФИО в документе не перезаписывалось(
Документы бывают разные и работают они по-разному. Про запрос я Вам ответил, а про документ попробую ответить, если Вы опишете подробно логику работы документа.
Почему в нем должно что-то переписываться ? Или Вы имеете ввиду, что у физлица изменяют ФИО и оно во всех документах встает с новым ФИО ?
Так это естественно. Тут уже не столько тема запросов, сколько тема разработки интерфейсов и логики работы конкретного приложения. В какой момент и как применить шаблон запроса, который я Вам дал, как отрисовать полученные данные на форме — это уже специфика конкретного решения
Все как вы описали . Можете подсказатЬ? или нужно в раздел по формам обращаться?
Лучше, наверное, в разработку интерфейсов и форм, здесь это немного за рамками темы. Только опишите подробнее. Желательно со скринами
…
(текст комментария доступен только участникам Мастер-группы)
Есть 2 регистра периодических ФИО где есть Измерения — ссылкаконтрагент И я добавил еще 1 измерение куда я записываю фио до изменения и есть ресурсы ф-и-о
а также 2 регистр УДОСТОВЕРЕНИЯЛИЧНОСТИ
где есть также физлицо -ссылка физ.лицо и паспортные данные
Дело в том что пример взял был я так понял из Зуп 3.1
ну там был реализован документ где записывался контрагент и из него уже бралась информаци.
а у меня получается сразу пишется в контрагент и получается из данных прошлого периода остается только ФИО ну так как я добавил новое измерения строк я там складываю фио и получаю полное представления контрагента который был до. Может тогда его тоже передать в регистры документы и там уже сравнивать на уровни 1го регистра. Вообщем я запутался\(((Скрины покажу щас
Получается у меня есть форма создания контрагента допустим если это Петрова Елизовета Андреевна которых получил паспорт в свои 16 лет 2010г
а потом он спустя 9 лет опять пришела и в 25 у него уже другой паспорт
тогда я выбираю пункт изменить данные выбираю дату с которой будут действовать новые данные и старый документ который был создан 9 лет назад не должен сменить фамилию
а у меня получается что меняется9.
ФИОФизическихЛиц.Период КАК Период,
ФИОФизическихЛиц.ФиоПеред КАК ФиоПеред,
ФИОФизическихЛиц.Фамилия КАК Фамилия,
ФИОФизическихЛиц.Имя КАК Имя,
ФИОФизическихЛиц.Отчество КАК Отчество
ПОМЕСТИТЬ Вт_фио
ИЗ
РегистрСведений.ФИОФизическихЛиц КАК ФИОФизическихЛиц
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДокументыФизическихЛиц.Период КАК Период,
ДокументыФизическихЛиц.Физлицо КАК Физлицо,
Вт_фио.ФиоПеред КАК ФиоПеред,
ДокументыФизическихЛиц.ВидДокумента КАК ВидДокумента,
ДокументыФизическихЛиц.Серия КАК Серия,
ДокументыФизическихЛиц.Номер КАК Номер,
ДокументыФизическихЛиц.КодПодразделения КАК КодПодразделения,
ДокументыФизическихЛиц.ДатаВыдачи КАК ДатаВыдачи,
ДокументыФизическихЛиц.КемВыдан КАК КемВыдан
ИЗ
Вт_фио КАК Вт_фио
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыФизическихЛиц КАК ДокументыФизическихЛиц
ПО Вт_фио.Период = ДокументыФизическихЛиц.Период
Таким запросом ( с вашего урока я смог получить все записи которые равны обоим регистрам)скрин прикладываю
Где поле фиоперед я получаю строку из фио
Вообщем проблема у меня оказывается в записи физического лица. получается нету запретов на период который был до что бы не перезаписывал.
получается он перезаписал данные в период до
ну точней так в форме контрагента происходи, здесь то все красиво)
…
(текст комментария доступен только участникам Мастер-группы)
Можно более подробно как это реализовать\?, или тут могу ответы только по запросам получить?
…
(текст комментария доступен только участникам Мастер-группы)
Брать контрагента у которого менялась 2 раза фамилия и установить дату в тот момент когда менялась тогда где фам,имя,отчество получаю как и в регистре то что было до а в физлице получается уже последнее значение
Для полноты картины
Форма Документа
Борюсь какую неделю уже не могу понять(((
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.КонтактнаяИнформация
ДополнительныеПараметры = УправлениеКонтактнойИнформацией.ПараметрыКонтактнойИнформации();
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаКонтактнаяИнформация");
УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, ДополнительныеПараметры);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ДокументыФизическихЛиц.ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.ПаспортРФ;
ДокументыФизическихЛиц.Период = ТекущаяДата();
МассивФИО = СтрРазделить(Объект.Наименование, " ", Ложь);
Если МассивФИО.Количество() = 1 Тогда
Объект.Фамилия = МассивФИО[0];
ИначеЕсли МассивФИО.Количество() = 2 Тогда
Объект.Фамилия = МассивФИО[0];
Объект.Имя = МассивФИО[1];
ИначеЕсли МассивФИО.Количество() >= 3 Тогда
Объект.Фамилия = МассивФИО[0];
Объект.Имя = МассивФИО[1];
Объект.Отчество = МассивФИО[2];
КонецЕсли;
Объект.Наименование = АТКСервер.СформироватьФИОФизическогоЛица(Объект.Фамилия, Объект.Имя, Объект.Отчество);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
//Заполняем паспортные данные
АТКСервер.ЗаполнитьДокументУдостоверяющийЛичность(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Объект, Отказ);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ПараметрыФЛ = Новый Структура;
ПараметрыФЛ.Вставить("Ссылка", ТекущийОбъект.Ссылка);
ПараметрыФЛ.Вставить("Фамилия", Объект.Фамилия);
ПараметрыФЛ.Вставить("Имя", Объект.Имя);
ПараметрыФЛ.Вставить("Отчество", Объект.Отчество);
ПараметрыФЛ.Вставить("УстановитьНовыеФИО", УстановитьНовыеФИО);
ПараметрыФЛ.Вставить("ДатаСохраненияНовыхФИО", ДатаСохраненияНовыхФИО);
АТКСервер.ЗаписатьИсториюФИОФизическихЛиц(ПараметрыФЛ);
АТКСервер.ЗаписьДокументаУдостоверяющегоЛичность(ТекущийОбъект.Ссылка, ИзменилисьДанныеДокументаУдостоверяющегоЛичность, ДокументыФизическихЛиц);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если УстановитьНовыеФИО Тогда
Если ДатаСохраненияНовыхФИО = Дата(0001,01,01) Тогда
Отказ = Истина;
Сообщить("Для установки новых ФИО необходимо указать дату, с которой будут действовать новый значения!");
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Объект.ДатаСоздания = ТекущаяДата();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ФамилияПриИзменении(Элемент)
Объект.Фамилия = СокрЛП(Объект.Фамилия);
Объект.Наименование = АТКСервер.СформироватьФИОФизическогоЛица(Объект.Фамилия, Объект.Имя, Объект.Отчество);
КонецПроцедуры
&НаКлиенте
Процедура ИмяПриИзменении(Элемент)
Объект.Имя = СокрЛП(Объект.Имя);
Объект.Наименование = АТКСервер.СформироватьФИОФизическогоЛица(Объект.Фамилия, Объект.Имя, Объект.Отчество);
КонецПроцедуры
Процедура ОтчествоПриИзменении(Элемент)
Объект.Отчество = СокрЛП(Объект.Отчество);
Объект.Наименование = АТКСервер.СформироватьФИОФизическогоЛица(Объект.Фамилия, Объект.Имя, Объект.Отчество);
КонецПроцедуры
ОбщийМодуль
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументыФизическихЛицСрезПоследних.Физлицо КАК Физлицо,
| ДокументыФизическихЛицСрезПоследних.ВидДокумента КАК ВидДокумента,
| ДокументыФизическихЛицСрезПоследних.Серия КАК Серия,
| ДокументыФизическихЛицСрезПоследних.Номер КАК Номер,
| ДокументыФизическихЛицСрезПоследних.ДатаВыдачи КАК ДатаВыдачи,
| ДокументыФизическихЛицСрезПоследних.КодПодразделения КАК КодПодразделения,
| ДокументыФизическихЛицСрезПоследних.КемВыдан КАК КемВыдан,
| ДокументыФизическихЛицСрезПоследних.Период КАК Период
|ИЗ
| РегистрСведений.ДокументыФизическихЛиц.СрезПоследних(, Физлицо = &Физлицо) КАК ДокументыФизическихЛицСрезПоследних";
Запрос.УстановитьПараметр("Физлицо", ФизЛицо.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(Форма.ДокументыФизическихЛиц, Выборка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьИсториюФИОФизическихЛиц(ПараметрыФЛ) Экспорт
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ФизическоеЛицо", ПараметрыФЛ.Ссылка);
ИсторияФИО = РегистрыСведений.ФИОФизическихЛиц.СрезПоследних(,СтруктураОтбора);
НаборЗаписей = РегистрыСведений.ФИОФизическихЛиц.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ФизическоеЛицо.Установить(ПараметрыФЛ.Ссылка);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() > 0 И НЕ ПараметрыФЛ.УстановитьНовыеФИО Тогда //перезаписываем последнюю запись
Для каждого Запись Из НаборЗаписей Цикл
Если ИсторияФИО[0].Период = Запись.Период Тогда
Запись.Фамилия = ПараметрыФЛ.Фамилия;
Запись.Имя = ПараметрыФЛ.Имя;
Запись.Отчество = ПараметрыФЛ.Отчество;
КонецЕсли;
КонецЦикла;
Иначе //создаем первую/новую запись
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Фамилия = ПараметрыФЛ.Фамилия;
НоваяЗапись.Имя = ПараметрыФЛ.Имя;
НоваяЗапись.Отчество = ПараметрыФЛ.Отчество;
НоваяЗапись.ФизическоеЛицо = ПараметрыФЛ.Ссылка;
Если ПараметрыФЛ.УстановитьНовыеФИО Тогда
Период = ПараметрыФЛ.ДатаСохраненияНовыхФИО;
Иначе
Период = ТекущаяДата();
КонецЕсли;
НоваяЗапись.Период = Период;
КонецЕсли;
НаборЗаписей.Записать();
КонецПроцедуры
&НаСервере
Функция СформироватьФИОФизическогоЛица(Фамилия, Имя, Отчество) Экспорт
Наименование = Фамилия;
Наименование = Наименование + ?(Имя = "", "", " " + Имя);
Наименование = Наименование + ?(Отчество = "", "", " " + Отчество);
Возврат Наименование;
КонецФункции
&НаСервере
Процедура ЗаписьДокументаУдостоверяющегоЛичность(ФизическоеЛицо, ИзменилисьДанныеДокументаУдостоверяющегоЛичность, ДокументыФизическихЛиц) Экспорт
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Физлицо", ФизическоеЛицо);
ДокументыФизическогоЛица = РегистрыСведений.ДокументыФизическихЛиц.СрезПоследних(,СтруктураОтбора);
НаборЗаписей = РегистрыСведений.ДокументыФизическихЛиц.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Физлицо.Установить(ФизическоеЛицо);
НаборЗаписей.Прочитать();
//перезаписываем последнюю запись
Если НаборЗаписей.Количество() > 0 И НЕ ИзменилисьДанныеДокументаУдостоверяющегоЛичность Тогда
Для каждого Запись Из НаборЗаписей Цикл
Если ДокументыФизическогоЛица[0].Период = Запись.Период Тогда
ЗаполнитьЗначенияСвойств(Запись, ДокументыФизическихЛиц);
Запись.Физлицо = ФизическоеЛицо;
КонецЕсли;
КонецЦикла;
//создаем первую/новую запись
ИначеЕсли НаборЗаписей.Количество() = 0 ИЛИ ИзменилисьДанныеДокументаУдостоверяющегоЛичность Тогда
НоваяЗапись = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, ДокументыФизическихЛиц);
НоваяЗапись.Физлицо = ФизическоеЛицо;
КонецЕсли;
НаборЗаписей.Записать();
КонецПроцедуры
…
(текст комментария доступен только участникам Мастер-группы)
Так у меня также все получается…. я вижу прошлые ФИО вопрос( был такой как их сопоставить с документами.) и в списках документах получать старые ФИО( в другом разделе подсказали что писать из в отдельных реквизит ) ну , потом вывести в список документов. В отчетах я могу то сделать отбор)
…
(текст комментария доступен только участникам Мастер-группы)
Понял спасибо. Думаю лучше через отчет
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо вам огромное, и за уроки очень полезные.
…
(текст комментария доступен только участникам Мастер-группы)
Просто еще чуток не пойму в какой момент это должно произойти,
Что должно произойти ?
скрин прикладываю по запросу
Решил таким путем. тогда будет выбирать нужные номера из документа
Запрос.Текст = "ВЫБРАТЬ
| ОбращениеКлиентаКонтактнаяИнформация.Представление КАК Представление
|ИЗ
| Документ.ОбращениеКлиента.КонтактнаяИнформация КАК ОбращениеКлиентаКонтактнаяИнформация";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СсылкаНаТелефон = Документы.ОбращениеКлиента.НайтиПоРеквизиту("Телефон","");
Если НЕ СсылкаНаТелефон = Документы.ОбращениеКлиента.ПустаяСсылка()
Тогда
ТелСт = СсылкаНателефон.ПолучитьОбъект();
ТелСт1 = ТелсТ.КонтактнаяИнформация.Получить(0);
ТелСТ.Телефон = ТелСт1.Представление;
ТелСт.Записать()
…
(текст комментария доступен только участникам Мастер-группы)
Буду проверять на пустой индекс. если пустой тогда возврат.
Спасибо) как добраться до таблицы в ваших уроках увидел.)
Насчет Запроса я могу передать туда ссылку на документ а потом уже в цикле искать из запроса ссылку и добавить к ней реквизиты.
Спасибо огромное
…
(текст комментария доступен только участникам Мастер-группы)
Запрос.Текст = "ВЫБРАТЬ
| ОбращениеКлиентаКонтактнаяИнформация.Представление КАК Представление
|ИЗ
| Документ.ОбращениеКлиента.КонтактнаяИнформация КАК ОбращениеКлиентаКонтактнаяИнформация";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//МассивЧисел = Новый Массив();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СсылкаНаТелефон = Документы.ОбращениеКлиента.НайтиПоРеквизиту("Телефон","");
Если НЕ СсылкаНаТелефон = Документы.ОбращениеКлиента.ПустаяСсылка()
Тогда
ТелСт = СсылкаНателефон.ПолучитьОбъект();
//ТелМас = ТелСт.КонтактнаяИнформация.Выгрузить(МассивЧисел,);
//ТелМас.Индекс(1);
ТелСт1 = ТелсТ.КонтактнаяИнформация.Получить(0);
ТелСТ1.Телефон = ТелСт1.Представление;
ТелСт.Записать()
КонецЕсли;
КонецЦикла;
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//МассивЧисел = Новый Массив();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СсылкаНаТелефон = Документы.ОбращениеКлиента.НайтиПоРеквизиту("Телефон","");
Если НЕ СсылкаНаТелефон = Документы.ОбращениеКлиента.ПустаяСсылка()
Тогда
ТелСт = СсылкаНателефон.ПолучитьОбъект();
//ТелМас = ТелСт.КонтактнаяИнформация.Выгрузить(МассивЧисел,);
//ТелМас.Индекс(1);
ТелСт1 = ТелсТ.КонтактнаяИнформация.Получить(0);
ТелСТ1.Телефон = ТелСт1.Представление;
ТелСт.Записать()
КонецЕсли;
КонецЦикла;
Добрый день не могли бы посмотреть код( не как не могу проверить на 0 значение индекса(
…
(текст комментария доступен только участникам Мастер-группы)
Извиняюсь за свое не понимание((( ну никак не могу разобраться не могу пройти пустую ТЧ
может быть подскажете как это сделать. что бы пройти 0 тч
Даже не 0 тч а
пустую
…
(текст комментария доступен только участникам Мастер-группы)
Вообщем я вчера к этому и пришел просто не думал что количество будет отвечать за количество таблиц в ТЧ
сделал. еще в конце записал в пустой реквизит данные что бы можно было искать след.документ.
ну вообщем спасибо вам.
Запрос.Текст = "ВЫБРАТЬ
| ОбращениеКлиентаКонтактнаяИнформация.Представление КАК Представление
|ИЗ
| Документ.ОбращениеКлиента.КонтактнаяИнформация КАК ОбращениеКлиентаКонтактнаяИнформация";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СсылкаНаТелефон = Документы.ОбращениеКлиента.НайтиПоРеквизиту("Телефон","");
Если НЕ СсылкаНаТелефон = Документы.ОбращениеКлиента.ПустаяСсылка()
Тогда
ТелСт = СсылкаНателефон.ПолучитьОбъект();
Если ТелСт.КонтактнаяИнформация.Количество() > 0
Тогда
ТелСт1 = ТелсТ.КонтактнаяИнформация.Получить(0);
ТелСТ.Телефон = ТелСт1.Представление;
ТелСт.Записать()
Иначе
ТелСт.Телефон = "Без номера";
ТелСт.Записать();
КонецЕсли
КонецЕсли;
КонецЦикла;
…
(текст комментария доступен только участникам Мастер-группы)
Еще вопрос
Как вы вызываете в окне заполнения
новой процедуры.
написали проц жали клавиши дает возможность ввести имя и где производится процедура
…
(текст комментария доступен только участникам Мастер-группы)
хотел бы спросить про уничтожения таблиц. Для чего такой механизм:?
…
(текст комментария доступен только участникам Мастер-группы)
Еще бы 1 вопрос хотел уточнить.
Я искал допустим пустой реквизит и заполнял его. а как мне теперь искать заполненный реквизит. и пробегаться по нему смотреть не изменилось ли представление если да то менять.
…
(текст комментария доступен только участникам Мастер-группы)
Так мне то нужно найти заполненый реквизит.
СсылкаКомментарий = Документы.ОбращениеКлиента.НайтиПоРеквизиту(«КомментарийИзДокумента»,Истина);
то есть найти реквезит в котором уже есть значение и дописать туда если значения менялись.
я ищу документ где не записан комментарий так как у меня комментарий сделан через регистр и со связки документов добавляются через ссылку то при добавлении его в форму списка при 2х комментарий ругается что 2 ссылки. тогда я решил записывать в отдельный реквизит. Получается первой процедурой я обхожу документы и где у меня есть комментарий я добавляю его. а как обойти заново документы которые уже содержат документы. допустим дописали комментарий. хочу обойти и если выборка не = коменту тогда перезаписать.
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбращениеКлиента.КомментарийИзДокумента КАК КомментарийИзДокумента,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Комментарии.Обращение.Ссылка) КАК ОбращениеСсылка,
| ПОДСТРОКА(Комментарии.Комментарий, 1, 500) КАК Комментарий,
| Комментарии.Дата КАК Дата,
| Комментарии.Пользователь КАК Пользователь,
| Комментарии.Обращение.Номер КАК ОбращениеНомер
|ИЗ
| РегистрСведений.Комментарии КАК Комментарии
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОбращениеКлиента КАК ОбращениеКлиента
| ПО Комментарии.Документ = ОбращениеКлиента.Ссылка
| И Комментарии.Обращение = ОбращениеКлиента.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПОДСТРОКА(Комментарии.Комментарий, 1, 500),
| ОбращениеКлиента.КомментарийИзДокумента,
| Комментарии.Дата,
| Комментарии.Пользователь,
| Комментарии.Обращение.Номер";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//СсылкаКомментарий1 = Документы.ОбращениеКлиента.НайтиПоРеквизиту("КомментарийИзДокумента",Истина);
СсылкаКомментарий = Документы.ОбращениеКлиента.НайтиПоРеквизиту("КомментарийИзДокумента","");
Если НЕ СсылкаКомментарий = Документы.ОбращениеКлиента.ПустаяСсылка()
Тогда
Коммент = СсылкаКомментарий.ПолучитьОбъект();
//Коммент1 = СсылкаКомментарий1.ПолучитьОбъект();
КонецЕсли;
Если Коммент = Неопределено Тогда
Прервать;
КонецЕсли;
Если ВыборкаДетальныеЗаписи.ОбращениеНомер = Коммент.Номер
И Коммент.КомментарийИзДокумента = "" Тогда
Коммент.КомментарийИзДокумента = ВыборкаДетальныеЗаписи.Комментарий;
Коммент.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
…
(текст комментария доступен только участникам Мастер-группы)
А если новый комментарий добавить он допишет
Я правильно понял. он получается всегда будет проверять эти комментарии
…
(текст комментария доступен только участникам Мастер-группы)
у меня еще такая проблема я из 4х документов записываю в 1 регистр комментарии и они хранятся в разрезе цикла документов которые относятся к этой сделки.
обращения -скоринг -осмотр-заключение
на любом этапе могут добавить комментарий.
все комментарии должны хранится в регистре и только последний вывожу в списко.
решил это избыточным реквизитом
…
(текст комментария доступен только участникам Мастер-группы)
Вам спасибо за напутствия
…
(текст комментария доступен только участникам Мастер-группы)
| ЕСТЬNULL(Комментарии.Комментарий, «»»») КАК Комментарий
Вы такой код пишите что бы если был Null он был пустой строкой??
…
(текст комментария доступен только участникам Мастер-группы)
…
(текст комментария доступен только участникам Мастер-группы)
СсылкаНаТелефон = Документы.ОбращениеКлиента.НайтиПоРеквизиту("Телефон",""); мне в таком контексте нужно
СсылкаНаТелефон = Документы.ОбращениеКлиента.НайтиПоРеквизиту("Телефон",ЗначениеЗаполнено(Реквизит)); так получается?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Вопрос по упорядочиванию результатов. В книге сказано, что в каждом справочнике или документе есть поля, по которым, по умолчанию, сортируются записи. Для справочника это код или наименование. А по какому полю в первую очередь будет производится сортировка: по коду или наименованию?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый! Как в запросе удалить назначающие пробелы, типа функции СокрЛП(),
Интересен такой запрос
«ВЫБРАТЬ
| АктВъезда.Ссылка,
| АктВъезда.Автомобиль,
| АктВъезда.ТСПринял
|ИЗ
| Документ.АктВъезда КАК АктВъезда
|ГДЕ
| АктВъезда.Автомобиль.Наименование ПОДОБНО «»% %»»»;
Но в него попадают Авто вида » В225НК67″ и Авто вида «В225НК67 «, а необходимо только «В225 НК67» (пробел в середине)
…
(текст комментария доступен только участникам Мастер-группы)
Понял, спасибо, но это не универсально. Буду тогда анализировать документы при записи, чтоб лишние пробелы не записывались в БД в принципе. А затем запросом искать ошибки и анализировать.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Небольшое уточнение, в 15 задании «Пользователь устанавливает два параметра запроса – Дата начала и Дата окончания. …» У вас в решении не указано это.
ПоступлениеТоваров.Дата МЕЖДУ &Дата1 И &Дата2
…
(текст комментария доступен только участникам Мастер-группы)
При решении задачи 18 запрос в консоли нормально сформировал новое представление, но сам справочник «Номенклатура» в режиме «Предприятие» не запускается. выдает ошибку: {Справочник.Номенклатура.МодульМенеджера(12)}: Преобразование значения к типу Число не может быть выполнено
Представление = Данные.Артикул + «-» + Данные.Наименование;
…
(текст комментария доступен только участникам Мастер-группы)
А как в модуле менеджера в процедурах представления наложить ограничение на поля групп? Создать экспортную процедуру в модуле объекта?
Добрый день!

Добавьте проверку стандартного реквизита «ЭтоГруппа» непосредственно при формировании строки Представления в модуле менеджера справочника Номенклатура.
Спасибо!
Добрый день.
При решении задачи №15 возник вопрос.
В конструкторе запросов операторе «Выбор» функцию «Месяц» нужно обязательно ставить после оператора:
При выставлении функции в условии
КОГДА МЕСЯЦ(ПоступлениеТоваров.Дата)=3 ТОГДА "Март"
…
выражение становится неправильным. Как определить, что можно ставить в условии, а что нет?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Объясните пожалуйста, почему при выборе полей из табличной части через основной документ выводятся таблицы значений
ПоступлениеТоваров.Товары.(
Номенклатура КАК Номенклатура,
Сумма КАК Сумма
) КАК Товары
ИЗ
Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
И только если выбирать их напрямую из табличной части, поля появляются в результате запроса?
ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура,
ПоступлениеТоваровТовары.Сумма КАК Сумма
ИЗ
Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
…
(текст комментария доступен только участникам Мастер-группы)