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

Добрый день
Партнеры – иерархический справочник,
Контактная информация партнера находится в табличной части справочника.Партнеры.
В Справочнике Контрагенты есть ссылка на партнера, контактная информация контрагента также находится в табличной части справочникаКонтрагенты.
Справочник КонтактныеЛицаПартнеров подчинен справочнику Партнеры, контактная информация контактного лица – находится в табличной части справочника КонтактныеЛицаПартнеров.
Требуется вывести информацию о контактных данных партнеров, контрагентов и контактных лиц в следующем виде:
Партнер 1
— Контактная инфо Партнера1
— Контрагент 1 Партнера1
— Контактная инфо Контрагента 1 Партнера1
— Контрагент 2 Партнера1
— Контактная инфо Контрагента 2 Партнера1
— Контактное лицо 1 Партнера1
— Контактная инфо Контактного лица 1 Партнера1
— Контактное лицо 2 Партнера1
— Контактная инфо Контактного лица 2 Партнера1
— Партнер 1.1 — (Родитель = Партнер 1)
— Контактная инфо Партнера1.1
— Контрагент 1* Партнера1.1
— Контактная инфо Контрагента 1* Партнера1.1
— Контактное лицо 1* Партнера1.1
— Контактная инфо Контактного лица 1* Партнера1.1
Решение, которое наше на данный момент — делать 3 запроса (в пакете) — по партнерам и его контактной информации, по контрагентам и его КИ, по контактным лицам и их КИ, Получить 3 выборки, а дальше перебирать выборку партнеров, выбирать оттуда данные партнера и его КИ, далее искать контрагента для партнера в выборке контрагентов, получать оттуда контрагента и его КИ, далее искать контактное лицо для партнера в выборке контактных лиц, получать оттуда контактное лицо и его КИ.
А нельзя ли сделать это одним запросом и одной выборкой?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо, попробую
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день
Текст запроса
ВЫБРАТЬ
ТоварыОрганизацийОбороты.Номенклатура КАК Номенклатура,
ТоварыОрганизацийОбороты.Регистратор КАК Регистратор,
ТоварыОрганизацийОбороты.КоличествоРасход КАК Количество,
ВЫБОР
КОГДА ТоварыОрганизацийОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
ТОГДА ВЫРАЗИТЬ(ТоварыОрганизацийОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата
ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
КОНЕЦ КАК Дата
ИЗ
РегистрНакопления.ТоварыОрганизаций.Обороты( , // Начало периода
&ДатаОстатков, // КонецПериода
Регистратор , // Периодичность
) КАК ТоварыОрганизацийОбороты
ГДЕ
ТоварыОрганизацийОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
Вопрос:
Т.к. в поле Регистратор может быть документ любого типа, для пользователей, у которых нет прав на другие документы приходится явно приводить его значение к нужному типу.
Можно ли выражение для даты записать как
«ВЫРАЗИТЬ(ТоварыОрганизацийОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата»?
Т.е. при наличии условия отбора
«ТоварыОрганизацийОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг»
при вычислении выражения
«ВЫРАЗИТЬ(ТоварыОрганизацийОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата»
может ли встретиться ситуация, когда «ТоварыОрганизацийОбороты.Регистратор» будет иметь тип, отличный от «Документ.РеализацияТоваровУслуг»? (Т.е, более широко, в каком порядке выполняется запрос? Сначала отбор, потом вычисление полей?)
В справке сказано, что в этом случае выражение
«ВЫРАЗИТЬ(ТоварыОрганизацийОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг)» будет иметь значение NULL. Будет ли тогда вычислено выражение
«ВЫРАЗИТЬ(ТоварыОрганизацийОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата» или выдаст ошибку? Почему нет ошибки? Корректно ли использовать выражение .ПОЛЕ, где = NULL?
…
(текст комментария доступен только участникам Мастер-группы)
То есть, если поле ТоварыОрганизацийОбороты.Регистратор будет иметь в таком случае только тип Документ.РеализацияТоваровУслуг, то корректно ли будет вместо
ВЫРАЗИТЬ(ТоварыОрганизацийОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата
написать просто ТоварыОрганизацийОбороты.Регистратор.Дата?
Корректно в том смысле, что не будет возникать ошибки у тех пользователей, у которых нет прав на другие виды документов, отличных от Документ.РеализацияТоваровУслуг.
…
(текст комментария доступен только участникам Мастер-группы)
И ещё.
Столкнулся с тем, что при вычислении в запросе конструкции [Выражение].ПОЛЕ, где [Выражение] = NULL, ошибки не возникает. То есть можно использовать конструкцию [Выражение].ПОЛЕ, и обойтись без проверки на NULL, даже если возможность появления значений NULL предполагается? Это корректно?
…
(текст комментария доступен только участникам Мастер-группы)
Коллеги, добрый вечер
курс до конца еще не досмотрел, возможно после окончания курса я решение бы и нашел .
но печатная форма нужна уже сейчас.
подскажите куда копать , что вывести информацию так как в макете?
гуглил , но что — то безуспешно
пример макета, как сделано сейчас и что нужно изменить
https://cloud.mail.ru/public/9f1k/CDxR3ni2w
за ранее благодарен
…
(текст комментария доступен только участникам Мастер-группы)
Коллеги , добрый день
дайте плиз комментарии , нужно было сделать отчет на СКД для БП 30
интересно ваше мнение с точки зрения оптимальности его формирования на скд
что можно было сделать иначе , так как сказать + и — отчета
пример макете и сам отчет во вложениии
спасибо !
…
(текст комментария доступен только участникам Мастер-группы)
извиняюсь , в выходные запрос вам писал
видно не то прикрепил
сам отчет во вложении
ФинансовыйРезультатИерархияГрупп
видно явно обработку не прикрепляет
ссылка на отчет
https://cloud.mail.ru/public/FoqD/aNRm5xmMe
спасибо за первый ответ , если будет время гляньте текущее решение
ваш способ обязательно возьму на вооружение )
…
(текст комментария доступен только участникам Мастер-группы)
да, бухи утвердили, единственное что бы я в нем поменял , так это получение ставки налога на прибыль из уч. политики, но это наверно не так критично, при желании можно допилить ) данных подход использовал уже ранее. в свое время брал за основу пример формирования отчета в зуп 2.5. расчетная ведомость по орг.
Василий , спасибо за ответы ! буду дальше ваш курс смотреть
…
(текст комментария доступен только участникам Мастер-группы)
только у некоторых бухов руки кривые или любят что — то поменять в месяце, а процедуру закрытия заново не сделать
Анализ налога на прибыль покажет ошибку , а так нет
палка о двух концах ) я собственно поэтому и не стал в отчете данные по налогу брать по данным ИБ ,а расчетным путем.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
В практическом задании 36 для оформления ячеек табличного поля используется процедура «ПриПолученииДанных». Для оформления ячеек в табличном документе (в управляемой форме) цвет фона задаем по областям ячеек. В обработке после вывода области детальных записей определяем переменную:
// Обл = ТабДок.НайтиЗначение(ВыборкаДетальныеЗаписи.Сумма)//,
метод НайтиЗначение табличного документа ничего не возращает (Неопределено).
почему после вывода не опрелеяется область значения?
…
(текст комментария доступен только участникам Мастер-группы)
Вариант с установленным свойством СодержитЗначение
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
Обл = ТабДок.НайтиЗначение(ВыборкаДетальныеЗаписи.Сумма);
Если НЕ Обл = Неопределено Тогда
Если ВыборкаДетальныеЗаписи.Сумма > 10000 Тогда
Ячейка = ТабДок.Область(Обл.Имя);
Ячейка.ЦветФона = WebЦвета.Бирюзовый;
КонецЕсли
КонецЕсли;
КонецЦикла;
спасибо за подсказку!
…
(текст комментария доступен только участникам Мастер-группы)
Хотелось бы реализовать механизм учета программного обеспечения . Для примера можно взять модельную базу для выполнения практических заданий Query-Homework-Template.dt. В качестве регистра для хранения данных используем остаточный регистр «ТоварыНаСкладах».
1. Есть документ который фиксирует установку ПЗ, в табличной части только наименование ПЗ, количество не обязательно(всегда будет 1).
2. Аналогично документ который фиксирует расход(удаление ПЗ)
3. В шапке склад(или компьютер).
4. В итоге надо получить отчет в виде
|Наименование ПЗ|Дата установки|Дата удаления
5. По конкретному складу(компьютеру)
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день. Пытаюсь сделать обработку для расчета пени, при этом табличная часть делится на три части, в первой выводится информация по реализациям по определенному контрагенту, во второй оплата, а в третьей собственно расчет суммы просрочки, количество дней просрочки и расчет пени. Не подскажете по какому регистру правильней сформировать запрос?
…
(текст комментария доступен только участникам Мастер-группы)
Типовая конфигурация Бухгалтерия 3.0 базовая.
…
(текст комментария доступен только участникам Мастер-группы)
ХозрасчетныйОборотыДтКт?, я правильно понимаю, сначала я во временную таблицу помещаю дебетовые обороты по контрагенту, затем в другую временную таблицу кредитовые, после соединяю обе ВТ полным соединением?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Подскажите, пожалуйста, почему в первом примере Вы данные таблицы регистра ПродажиОбороты помещаете во временную таблицу, а не соединяете сразу с таблицей ЦеныТоваров?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
В задании 38 идет обращение к внешнему источнику.
Возможно ли подключение из 1С-ки к обыкновенному ДБФ файлу, чтобы построить отчет?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Спасибо за ответ, но один пользователь не хочет расставаться со старым Clipper-ом, а новые отчеты хочет. Я считаю два-три отчета на СКД смогли бы поменять его мировоззрение. Вот только у меня никак не получается подключить в конфигурации ДБФ-ник во внешние источники данных. Буду очень признателен за описание как это сделать.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Внешнее соединение
В конфигураторе создаем внешний источник данных, в закладке данные добавляем таблицу.
В окне выбираем «Выбрать из списка таблиц внешнего источника данных», в окне «Подключение к источнику данных» в строке соединения вводим «Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\;» где, Dbq- путь в файлам ДБФ (корневой каталог диска С).
Откроется список таблиц (ДБФ-ники), галочками отмечаем поля для отображения.
Обновляем конфигурацию, идет в создание отчета, при построении запроса появились наши ДБФ-ники.
Запускаем программу в режиме пользователя, идем в «Все функции» -> «Стандартные» -> «Управление внешними источниками данных». В окне выбираем пункт меню «Администрирование» -> «Изменить общие параметры». В ном окне отмечаем «тип СУБД» = «Прочие», «Строка соединения» = «Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\; ». Далее выбираем пункт меню «Подключиться», в новом окне выбираем «Запомнить» и жмем кнопку «подключиться». Запускаем наш отчет, видим данные ДБФ-ника.
Теперь вопрос.
Какая разница между «строкой соединения» в конфигураторе и «строкой соединения» в программе в режиме пользователя?
Может я перед этим еще трогал ODBC и запутался когда настраивал?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Огромное спасибо, конечно получилось, будем теперь планировать фронт работы.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Когда подставил высланную Вами строку соединения, подключение срабатывает, ДБФ-ники DOS-программ открываются. Вопрос, почему, когда жму три точки возле окна строки соединения и выбираю строку из появившегося списка получаю сообщение «Ошибка получения параметров строки соединения. Возможно, драйвер не позволяет получить параметры строки соединения.» и сформировать строку штатным конструктором не представляется возможным?
И когда пытаюсь открыть таблицу ДБФ созданную в базе данных Visual FoxPro, показывает только название файла без структуры. Видимо надо строку соединения вводить с другим драйвером подключения, но сказываются проблемы знания английского языка. В связи с этим просьба, дать если есть, более подробную информацию по синтаксису строки соединения для всех остальных возможных источников подключения.
…
(текст комментария доступен только участникам Мастер-группы)
Что-то я не поняла почему в 1-ом видеоуроке мы делаем 3-ий запрос пакета. ведь можно получить все нужные данные из 2-ой временной таблицы ВТ_Цены, не вижу смысла в 3-ем запросе:
«ВЫБРАТЬ
| ПродажиОбороты.Период КАК ДатаПродажи,
| ПродажиОбороты.Покупатель КАК Покупатель,
| ПродажиОбороты.Товар КАК номенклатура,
| ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
| ПродажиОбороты.СуммаОборот КАК СуммаОборот
|ПОМЕСТИТЬ ВТ_Продажи
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , День, ) КАК ПродажиОбороты
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_Продажи.ДатаПродажи КАК ДатаПродажи,
| ВТ_Продажи.Покупатель КАК Покупатель,
| ВТ_Продажи.номенклатура КАК номенклатура,
| ВТ_Продажи.КоличествоОборот КАК КоличествоОборот,
| ВТ_Продажи.СуммаОборот КАК СуммаОборот,
| МАКСИМУМ(ЦеныТоваров.Период) КАК Период,
| ЦеныТоваров.ВидЦен КАК ВидЦен,
| ЦеныТоваров.Цена
|ПОМЕСТИТЬ ВТ_Цены
|ИЗ
| ВТ_Продажи КАК ВТ_Продажи
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныТоваров КАК ЦеныТоваров
| ПО (ЦеныТоваров.ВидЦен = &ТипЦены)
| И (ВТ_Продажи.номенклатура = ЦеныТоваров.Товар)
| И (ВТ_Продажи.ДатаПродажи >= ЦеныТоваров.Период)
|
|СГРУППИРОВАТЬ ПО
| ВТ_Продажи.ДатаПродажи,
| ВТ_Продажи.Покупатель,
| ВТ_Продажи.номенклатура,
| ЦеныТоваров.ВидЦен,
| ВТ_Продажи.КоличествоОборот,
| ВТ_Продажи.СуммаОборот,
| ЦеныТоваров.Цена»
Или здесь какая то тонкость?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день, Василий! Огромное спасибо за интереснейший курс, за очень понятное и исчерпывающее объяснение материалов. Я с большим удовольствием изучил Ваш курс, сожалею, что он заканчивается. Еще раз огромное спасибо. Разрешите мне задать Вам два общетеоретических вопроса:
1 На этом форуме, Вы не однократно ссылались на документацию по языкам запроса, по платформе. Не могли бы Вы уточнить, о какой документации идет речь и где она может быть расположена на диске или сайте ИТС?
2 В одном из ответов, ВЫ упомянули о разрабатывающимся курсе по СКД. Такой курс следует ожидать? Если да, то я в очереди на приобретении )))
Спасибо
…
(текст комментария доступен только участникам Мастер-группы)
Добрый вечер
Платформа 8.3.5.1482
При выполнении задания 35
в обработке при нажатии на кнопку Выполнить возникает ошибка
{Форма.Форма.Форма(5)}: Ошибка при вызове конструктора (COMObject)
Подключение = Новый COMObject(«V83.COMConnector»);
по причине:
-2147221164(0x80040154): Класс не зарегистрирован.
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо, все получилось
Все получилось. Вопрос не актуален.
Прошу прощения, этот вопрос уже не актуален.
А есть какие-то тонкости по написанию запросов для правильного взаимодействия с правами пользователей? Наткнулся на странную ситуацию, когда работающий запрос при его применении в СКД возвращает нормальные данные только под полными правами. Даже попытки дать права на чтение и просмотр ВСЕМ объектам использованным в запросе не помогают получить то, что надо под ограниченными правами.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
В видео-уроке «Руководители компаний-должников» приводится запрос с двумя временными таблицами и выборкой.
Хотя можно обойтись и одной временной таблицей, да даже без временных таблиц. Вопрос в следующем. Для чего использовать две временные таблицы, чтоб показать поэтапно(для наглядности) выполнение задания или так будет оптимальнее.
Я попробовал сделать так.
ВЫБРАТЬ
Аналитика.Партнер,
РасчетыСКлиентамиОстатки.СуммаОстаток КАК Долг
ПОМЕСТИТЬ Долги
ИЗ
РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК Аналитика
ПО РасчетыСКлиентамиОстатки.АналитикаУчетаПоПартнерам = Аналитика.КлючАналитики
ГДЕ
РасчетыСКлиентамиОстатки.СуммаОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 10
КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка,
КонтактныеЛицаПартнеровРолиКонтактногоЛица.РольКонтактногоЛица,
Долги.Партнер,
Долги.Долг КАК Долг
ИЗ
Долги КАК Долги
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров.РолиКонтактногоЛица КАК КонтактныеЛицаПартнеровРолиКонтактногоЛица
ПО Долги.Партнер = КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка.Владелец
И (КонтактныеЛицаПартнеровРолиКонтактногоЛица.РольКонтактногоЛица = &Директор)
УПОРЯДОЧИТЬ ПО
Долг УБЫВ
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! У меня при подключении к файлу 1Cv8.lgd возникает ошибка (скриншот в приложении).
Подскажите, пожалуйста, в чем может быть проблема.
…
(текст комментария доступен только участникам Мастер-группы)
Разобрался. Установил OBDC-драйвер для 32-битной системы, до этого был установлен для 64-битной.
…
(текст комментария доступен только участникам Мастер-группы)
Да.
Здравствуйте,Возникает такая же проблема. Платформа 1С:Предприятие 8.3 (8.3.5.1443). Операционная система ХP (32). Драйвера переустанавливал не помогает. Строку подключения прописывал руками, тоже не подключает.Куда еще копать?
Все разобрался первоначально написал вот так «DRIVER = {SQLite3 ODBC Driver}…», а нужно было «DRIVER={SQLite3 ODBC Driver}…» без пробелов у знака равно.
…
(текст комментария доступен только участникам Мастер-группы)
Установила драйвер путь прописала руками выдает такую ошибку (в прикрепленном файле)при нажатии на ОК
Разобралась, неправильно прописала путь…
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте. Решил поэкспериментировать с запросом ко внешнему источнику данных. Поместил результат запроса к таблице внешнего источника во временную таблицу, но при запросе к этой временной таблице возникает ошибка «Невозможно получение из нескольких источников данных» (см вложение). Текст запроса такой:
EventLog.Ссылка,
EventLog.Представление,
EventLog.rowID,
EventLog.date / 10000 КАК date,
EventLog.connectID,
EventLog.userCode,
EventLog.computerCode,
EventLog.appCode,
EventLog.eventCode,
EventLog.comment,
EventLog.Представление КАК Представление1
ПОМЕСТИТЬ ВТ
ИЗ
ВнешнийИсточникДанных.ЖурналРегистрации.Таблица.EventLog КАК EventLog
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Ссылка,
ВТ.Представление,
ВТ.rowID,
ВТ.date,
ВТ.connectID,
ВТ.userCode,
ВТ.computerCode,
ВТ.appCode,
ВТ.eventCode,
ВТ.comment,
ВТ.Представление1
ИЗ
ВТ КАК ВТ
Та же ошибка при попытке использовать соединения в запросе. Как же быть тогда, если нужна дальнейшая обработка данных?
…
(текст комментария доступен только участникам Мастер-группы)
В практическом задании №38 все сделал как в решении преподавателя, но никак не получается вывести правильную дату, даты выводятся как 03.01.0001 11:39:08, что может быть не так?
…
(текст комментария доступен только участникам Мастер-группы)
В задании 35 внешнее соединение работает только, когда платформа запущена от имени администратора. Как заставить работать внешнее соединение, если запускать платформу обычным образом?
…
(текст комментария доступен только участникам Мастер-группы)
Под обычным пользователем выдается такое сообщение. А под администратором нет…
…
(текст комментария доступен только участникам Мастер-группы)
Повторная регистрация библиотеки помогла.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Вопрос по видео-уроку № 31 про склад карантина.
В последнем запросе мы соединяли таблицу товаров ВТ_Товары, которые хранились на складе карантина более 10 дней, с регистром накопления остатки на других складах.
В чем преимущество такого решения перед следующим:
указать в параметрах запроса к регистру накопления остатки условие на номенклатуру — выбрать номенклатуру из таблицы ВТ_Товары?
…
(текст комментария доступен только участникам Мастер-группы)
Переслушал еще раз кусок по партиям.
Я ошибся при создании ВТ_ОстальныеПартии
У вас было Остатки кроме партий которые указаны в документе
Я сделал Остатки кроме количества по партиям которые указаны в документе.
Вы это делаете после, поэтому у меня и получилось задвоение
…
(текст комментария доступен только участникам Мастер-группы)
По заданию 36. Зачем при поиске в ТЗ использовать метод НайтиСтроки по структуре поиска, когда мы заведомо должны получить одну строку.Проще в данном случае, мне кажется, использовать метод Найти.
Для каждого ОформлениеСтроки ИЗ ОформленияСтрок Цикл
НайденнаяСтрока= Тз.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка,»Контрагент»);
Если НЕ НайденнаяСтрока=Неопределено Тогда
Долг= НайденнаяСтрока.Долг;
ОформлениеСтроки.Ячейки.Долг.Текст =Формат(Долг,»ЧЦ=15; ЧДЦ=2; ЧГ=3,0″);
ОформлениеСтроки.Ячейки.Долг.ОтображатьТекст=Истина;
Если Долг >=0 Тогда
ОформлениеСтроки.Ячейки.Долг.ЦветТекста = WebЦвета.Синий;
Иначе
ОформлениеСтроки.Ячейки.Долг.ЦветТекста = WebЦвета.Красный;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Хотя, наверное, это не имеет значения. Кто как привык писать.
…
(текст комментария доступен только участникам Мастер-группы)
Не работает запрос по партиям.
пример
получаем товар партиями 5, 10, 20
Расход 10 от первой партии и 6 от второй
Во временной таблице «Партии» объединение 3-х таблиц
1)ОстальныеПартии
2)ПартииДокументов
3)ПрочиеПартииДокументов
ПрочиеПартииДокументов- тут лишние, получается задвоение
Протестировал запрос marivgo от 29 числа, работает
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Опять про задание №32. Про високосный год.
Во временной таблице ВТ в поле ГОД у нас уже начало года.
Тогда, возможно, в условии РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВТ.Год,Год),КОНЕЦПЕРИОДА(ВТ.Год,Год))=365
является лишним повторное приведение поля ГОД к началу года?
И условие можно упростить: РАЗНОСТЬДАТ(ВТ.Год,КОНЕЦПЕРИОДА(ВТ.Год,Год))=365?
И будет маленькая оптимизация? Или я ошибаюсь?
…
(текст комментария доступен только участникам Мастер-группы)
В 9 — модуле (не простые случаи запроса) хотелось бы разобрать пример сравнения продаж: вывод данных 2013 года; вывод данных 2014 года и отклонение по этим годам помесячно (месяцы в колонках).
…
(текст комментария доступен только участникам Мастер-группы)
Рекомендацию использования СКД взял на заметку.
Добрый день!
В 16-ом видео 9-ого модуля не точно описана ситуация с применением условия «Ссылка В Иерархии &Список»: если в данное выражение в качестве параметра передадим пустой список, то запрос нам ничего не вернет.
В приведенном видео параметр «Список» имеет ссылочный тип, и в качестве параметра мы передаем пустую ссылку на справочник, именно поэтому в результат попадают все элементы справочника (Выражение «В Иерархии» получает ссылки на элементы с учетом группы или списка групп).
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте! Отчет по доходам и расходам. Не поняла, зачем, при создании временной таблицы СчетаРасходов, в условии мы пишем несколько ИЛИ. Мне кажется, что проще в написании и быстрее при исполнении запроса написать условие вхождения в список счетов.
ГДЕ
Хозрасчетный.Ссылка В ИЕРАРХИИ(&СписокСчетовРасходов)
и задать параметр СписокСчетовРасходов списком счетов.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
По заданию 32
Я бы предложил вместо РазностьДат использовать условие
ДЕНЬГОДА(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаНачала, ГОД), ГОД, ВТ_Цифры.Поле1 * 100 + ВТ_Цифры1.Поле1 * 10 + ВТ_Цифры2.Поле1)) = 366
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Вопрос по 1 видео-уроку — срез последних на каждую дату
В ответах на задание 28 вы писали о преимуществе временных таблиц, над повторным обращением к виртуальным таблицам.
А в уроке вы обращаетесь 2 раза к физической таблице, вместо того чтобы сделать временную. Почему?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте! Вопрос по кейсу Динамика курсов валют с количеством дней одинакового курса. Мне так кажется, что мы теряем начальный период. Когда мы получаем только те даты, за которые у нас есть смена курса — первая смена у нас происходит с 9 на 10 января. Причем поле Период — это 10.01, а поле ПредыдущийПериод — 09.01. Для дальнейшей работы мы берем поле Период, тем самым мы теряем смену курса с 09.01 на 10.01. А если считать с 01.01.2014, то курс у нас был установлен 01.01.2014 и изменился 10.01 ,т.е. курс оставался неизменным 9 дней. В приведенном запросе мы этого не получим. Как нам не потерять границу периода?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Извините, что не сразу ответила (каникулы кончились, а с ними, к сожалению, и свободное время для занятий). Это исправление ничего не даст. Во временной таблице ПериодыИсходные у нас и так есть 01.01.2014. Во временной таблице КурсыВалютИсх есть курс на 01.01.2014 — он не NULL. Вот при получении таблицы ВТ_Курсы по условию неравенства курсов мы получаем первую запись, где Период 10.01.2014, а ПредыдущийПериод 09.01.2014 (первая смена курса произошла 09.01.2014). Далее мы из этой таблицы выбираем поле Период , тем самым теряем не только 01.01.2014, но и 09.01.2014, тем самым теряем первую смену курса.
…
(текст комментария доступен только участникам Мастер-группы)
Я, конечно,перед тем как Вам ответить, проверяла на данных в консоли. Ничего не меняется.
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо большое! Я все поняла. Моя ошибка была в том, что в запросе я сделала Внутренне соединение, а нужно было Левое. Извините, протупила. ((
…
(текст комментария доступен только участникам Мастер-группы)
Извините, не дописала до конца свой вопрос. Хотелось бы скачать, конечно и сами файлы с запросами, в том случае, когда они разрабатываются в консоли запросов. Запросы уже довольно сложные с несколькими ВТ и для полного понимания возможность открыть запрос в конструкторе запросов очень важна.
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте! Скажите, пожалуйста, где можно скачать базу, на основании которой даются Кейсы по запросам 9-го блока. Хотелось бы посмотреть эти запросы не только на видео.
Здравствуйте,
В кейсе 3 (задача про расчет премии) приводится решение запроса.
ВЫБОР КОГДА ПродажиОбороты.СуммаОборот>ШкалаПремий.НижняяГраница
И ПродажиОбороты.СуммаОборотШкалаПремий.ВерхняяГраница ТОГДА
ШкалаПремий.НижняяГраница-ШкалаПремий.ВерхняяГраница ИНАЧЕ 0 КОНЕЦ КОНЕЦ
А если сумма продаж равна нижней границе из второй строчки шкалы, то сумма премии будет равна 0? Ведь в данных условиях нет равенства.
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте
В разделе «Типы данных в запросах» файла pdf «Разработка и оптимизация запросов…» приведен пример 6
ВЫБРАТЬ
ВЫРАЗИТЬ(ТоварныеЗапасы.Регистратор КАК Документ.РасходТовара).Номер КАК
Номер,
ВЫРАЗИТЬ(ТоварныеЗапасы.Регистратор КАК Документ.РасходТовара).Дата КАК
Дата
ИЗ
РегистрНакопления.ТоварныеЗапасы КАК ТоварныеЗапасы
ГДЕ
ТоварныеЗапасы.Регистратор ССЫЛКА Документ.РасходТовара
Секция ГДЕ применяется к результату запроса, когда номер и дата уже получены. Если это так, с какой целью нужна секция ГДЕ?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте
По мотивам примера по составлению отчета по доходам и расходам, возник вопрос.
В конфигурации Бухгалтерия предприятия существует необходимость отобрать остатки по тем товарам, которые продавались за указанный период. Задачу можно решить разными способами, но данный пример запроса приведен из-за непонимания результата — в результат включается и та номенклатура, по которой не было оборотов. Почему не срабатывает условие соединени НЕ ЕСТЬ NULL?
ВЫБРАТЬ
Остатки.Субконто1
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = &Счет41, , Организация = &Организация) КАК Остатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(, , , Счет = &Счет90021, , Организация = &Организация, КорСчет = &Счет41, ) КАК Продажи
ПО Остатки.Субконто1 = Продажи.КорСубконто1
И (НЕ Продажи.СуммаОборот ЕСТЬ NULL )
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте
В параметрах виртуальной таблицы регистра бухгалтерии есть параметр «Субконто». Предположим существует необходимость вывести остатки по номенклатуре по указанному счету. По данному счету номенклатура является субконто №1.
В данной ситуации повляет ли указание субконто на скорость выполнения запроса?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
В модуле объекта «РасходнаяНакладная» создан запрос к виртуальной таблице остатков. Параметром «Период» указан &МоментВремени.
Будут ли отличаться итоги запроса, если установку параметров производить:
а) Запрос.УстановитьПараметр(«МоментВремени», МоментВремени())
б) Запрос.УстановитьПараметр(«МоментВремени», Новый Граница (МоментВремени(), ВидГраницы.Включая)
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте,
В задании №32 приводится пример вычисления высокосного года методом «РазностьДат».
А можно воспользоватся методом «ДеньГода» от даты приведенной к концу периода — год, в этом случае надо будет сравнивать полученную цифру с числом 366, а не с 365?
…
(текст комментария доступен только участникам Мастер-группы)
Склад карантина.
Последний запрос в пакете.
Используется забавный приём. Отбор накладывается через внутреннее соединение. А что быстрее будет работать в качестве отбора, внутреннее соединение, или наложение условия «В» на выборку из ВТ в секции «где»?
И да, в любом случае это грубая ошибка, отбор нужно было делать через параметры виртуальной таблицы.
…
(текст комментария доступен только участникам Мастер-группы)
Расчет премии сотрудникам.
Приём конечно интересный, но есть ошибки.
Например, когда настраиваем оператор «выбор» (тайминг 7:31). Везде условия сравнения строгие.
Пример. В году была всего одна продажа и та на 100 000 рублей.
Оператор выбор вернёт 0, процент будет 0, сотрудник не получит премию.
Да и оператор выбор странно построен. Зачем вложенный оператор выбора, если можно было использовать конструкцию «когда… тогда…» два раза?
т.е.
Выбор
Когда сумма НижняяГраница Тогда
Сумма — НижняяГраница
Когда Сумма > ВерхняяГраница Тогда ВерхняяГраница — НижняяГраница
Иначе 0
Конец
Выглядит более читабельно, а результат должен быть тот же.
…
(текст комментария доступен только участникам Мастер-группы)
последнее поступление по каждому товару.
В целом, конечно, верно, но всё-таки имеет смысл выбирать последний проведённый документ.
…
(текст комментария доступен только участникам Мастер-группы)
К сожалению, в этом модуле не учтен материал 8го модуля. Есть соединения с подзапросами, нет индексирования по полям соединения.
Курс очень хороший, но немного не хватает примеров по оптимизации. Если бы все запросы этого модуля были бы написаны по науке, было бы вообще идеально.
…
(текст комментария доступен только участникам Мастер-группы)
Всё ясно. Спасибо.
Расчет накопительных скидок.
Зачем делать третью временную таблицу «ВТ»? Можно было точно так же выбрать выходное поле «процент скидки» (вместе с порогом) и взять по нему агрегатную функцию МАКСИМУМ. Из условий задачи (да и из здравого смысла) видно, что максимальному порогу соответствует максимальная скидка, поэтому запрос при корректно введенных данных работал бы верно и не было бы лишнего соединения.
…
(текст комментария доступен только участникам Мастер-группы)
в примере был разобран следующий случай:
Нижняя граница/Процент скидки/сумма оборот:
1000/1/28800
5000/2/28800
После этого, выходное поле процент скидки удалили, сгруппировали по СуммаОборот и взяли максимум из НижняяГраница, получили 5000/28800. Потом соединили эту запись с исходной табличкой на равенство нижней границы и получили соответствующий процент.
Можно было бы без удаления выходного поля сразу сгруппировать по СуммаОборот и взять максимум по нижней границе и проценту, получили бы верную запись 5000/2/28800.
Рассмотрим второй случай с некорректными данными.
пусть исходные данные будут
1000/2/28800
5000/1/28800
Тогда мой запрос вернёт строку
5000/2/28800
а ваш запрос «верную» строку
5000/1/28800.
Есть ещё один контрпример.
Пусть есть две строки
1000/1/28800
1000/2/28800
Тогда мой запрос вернёт более верный результат 1000/2/28800, а ваш запрос, благодаря соединению и отсутствии группировки вернёт 4 записи, что есть ошибка.
…
(текст комментария доступен только участникам Мастер-группы)
>>Вы рассматриваете случай, когда пороги для разных процентов равны? В базе периодичность регистра установлена В пределах дня, не получится сохранит такие записи.
Да, согласен. Забыл про регистр.
Забавный случай, мой вариант запроса не только будет работать быстрее, но и исправлять ошибки пользователей :)
Но для точного решения, видимо, всё-таки придётся делать последнее соединение.
Срез последних на каждую дату.
Во втором запросе из пакета используется левое соединение и накладывается условие по виду цен на правую таблицу, получается что соединение преобразуется к внутреннему.
С точки зрения оптимизации, что быстрее, сразу указать что соединение не левое а внутреннее или тут без разницы?
…
(текст комментария доступен только участникам Мастер-группы)
У меня еще вопрос по уроку «Отчет о продажах». Отбор данных выполняется из виртуальной таблицы Хозрасчетный.Обороты. При этом условие накладывается только на счет — на его равенство счету выручки — и берется кредитовый оборот. При этом проверки на то, что этот оборот ненулевой, нет. Я проверила на тестовой базе, в которой таблица Хозрасчетный.Обороты содержит строку, где для счета 90.01 есть строка с корреспондирующим счетом 90.09, в которой есть только дебетовый оборот по счету 90.01, а кредитовый нулевой. Но в отчет она почему-то не попадает. (В моем понимании, она должна была бы вывестись как строка с нулевой суммой, т.к. кредитовый оборот равен нулю, сгруппированной по пустому контрагенту, т.к. по кор.счету 90.09 субконто контрагенты нет). Однако почему-то несмотря на наличие этой строки в Хозрасчетный.Обороты, она не влияет на отчет, он формируется корректно. Может быть, я не совсем правильно понимаю, как работает отбор данных из виртуальной таблицы оборотов — например, если среди выбираемых ресурсов нет ни одного ненулевого, строка не выводится. Или каким-то образом из итоговых данных «отсеивается» группировка по контрагенту Null с нулевой суммой. Не могли бы Вы пояснить этот момент?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо! Разобралась. Да, я имела в виду эту проводку. Из описания полей виртуальной таблицы «Обороты» регистра бухгалтерии я сначала поняла, что все поля этой таблицы существуют всегда, если есть данные хотя бы в одном поле (например, Счет и ОборотДебет), а в других полях просто будет Null (например, ОбортКредит), аналогично физической таблице. Но на самом деле, похоже, что виртуальная таблица имеет не постоянный состав полей, а формируемый динамически в зависимости от конкретных запрашиваемых данных. То есть, если мы запрашиваем только Счет и кредитовый оборот, которого по указанному счету нет, то виртуальная таблица вернет не строку с этим счетом и значением Null в запрашиваемом поле, а вообще не вернет ни одной строки… В этом отличие от физической таблицы, что состав полей и строк здесь непостоянен. То есть не сначала формируется вся виртуальная таблица, а потом из нее что-то выбирается, а изначальный состав строк и полей зависит от накладываемых условий.
…
(текст комментария доступен только участникам Мастер-группы)
Курс продолжает радовать:) Раздел 9 действительно очень ценный: наконец-то поняла, что означает загадочное Выбрать 1 в настройке RLS в некоторых местах. И другие примеры тоже очень полезны.
Есть небольшие вопросы:
1) В некоторых примерах курса встречается полное соединение по условию Истина. Можно ли не указывать здесь соединение вообще, а просто использовать декартово произведение таблиц — выбор из двух таблиц через запятую? Кажется, результат будет один и тот же, но может быть по каким-то причинам явно указывать соединение предпочтительнее?
2) В задаче про списание партий мне показалось, что можно уменьшить количество шагов, если ОстальныеПартии получать как разность таблицы остатков и уже полученной ранее таблицы ПартииДокумента. Таким образом можно получить сразу общий доступный остаток по партиям с приоритетом 2, не задействованный в документе — как по указанным в документе партиям, так и по неуказанным, и таблица ПрочиеПартии не понадобится.
…
(текст комментария доступен только участникам Мастер-группы)
Попробовала отладить. Небыстрое это дело оказалось:) Да и то нельзя сказать, что полностью протестировала все возможные ситуации из-за ограниченного количества времени. На нескольких тестах с разными партиями и количеством результаты показывает правильные. Обработку проведения изменять не пришлось. Единственное, с чем столкнулась — при добавлении в расходный документ второго товара, по которому не было поступлений, данная позиция не попадала в итоговую выборку и по ней не выходило сообщение о нехватке. Это решилось заменой Сумма(ВТ_Партии.КоличествоПартии) на Сумма(ЕстьNull(ВТ_Партии.КоличествоПартии)), т.к. используется левое соединение и остатков может не быть, как и произошло. Я использовала запрос, приведенный ниже:
ВЫБРАТЬ
РасходнаяНакладнаяТовары.Номенклатура,
РасходнаяНакладнаяТовары.Партия,
СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество
ПОМЕСТИТЬ РасходнаяНакладная
ИЗ
Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
ГДЕ
РасходнаяНакладнаяТовары.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
РасходнаяНакладнаяТовары.Номенклатура,
РасходнаяНакладнаяТовары.Партия
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПартииТоваровОстатки.Номенклатура,
ПартииТоваровОстатки.Партия,
ПартииТоваровОстатки.КоличествоОстаток
ПОМЕСТИТЬ Остатки
ИЗ
РегистрНакопления.ПартииТоваров.Остатки(
&МоментВремени,
Номенклатура В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
РасходнаяНакладная.Номенклатура
ИЗ
РасходнаяНакладная КАК РасходнаяНакладная)) КАК ПартииТоваровОстатки
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
РасходнаяНакладная.Номенклатура,
РасходнаяНакладная.Партия,
ВЫБОР
КОГДА Остатки.КоличествоОстаток > РасходнаяНакладная.Количество
ТОГДА РасходнаяНакладная.Количество
ИНАЧЕ Остатки.КоличествоОстаток
КОНЕЦ КАК КоличествоПартии,
1 КАК Порядок
ПОМЕСТИТЬ ПартииДокумента
ИЗ
РасходнаяНакладная КАК РасходнаяНакладная
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Остатки КАК Остатки
ПО РасходнаяНакладная.Номенклатура = Остатки.Номенклатура
И РасходнаяНакладная.Партия = Остатки.Партия
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Остатки.Номенклатура,
Остатки.Партия,
Остатки.КоличествоОстаток,
2 КАК Порядок
ПОМЕСТИТЬ ОстальныеПартии
ИЗ
Остатки КАК Остатки
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПартииДокумента.Номенклатура,
ПартииДокумента.Партия,
-ПартииДокумента.КоличествоПартии,
2
ИЗ
ПартииДокумента КАК ПартииДокумента
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
РасходнаяНакладная.Номенклатура,
СУММА(РасходнаяНакладная.Количество) КАК Количество
ПОМЕСТИТЬ ВТ_Накладная
ИЗ
РасходнаяНакладная КАК РасходнаяНакладная
СГРУППИРОВАТЬ ПО
РасходнаяНакладная.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПартииДокумента.Номенклатура,
ПартииДокумента.Партия,
ПартииДокумента.КоличествоПартии КАК КоличествоПартии,
ПартииДокумента.Порядок
ПОМЕСТИТЬ ВТ_Партии
ИЗ
ПартииДокумента КАК ПартииДокумента
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ОстальныеПартии.Номенклатура,
ОстальныеПартии.Партия,
ОстальныеПартии.КоличествоОстаток,
ОстальныеПартии.Порядок
ИЗ
ОстальныеПартии КАК ОстальныеПартии
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Накладная.Номенклатура КАК Номенклатура,
МИНИМУМ(ВТ_Накладная.Количество) КАК Количество,
ВТ_Партии.Партия,
СУММА(ЕСТЬNULL(ВТ_Партии.КоличествоПартии, 0)) КАК КоличествоПартии,
ВТ_Партии.Порядок
ИЗ
ВТ_Накладная КАК ВТ_Накладная
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Партии КАК ВТ_Партии
ПО ВТ_Накладная.Номенклатура = ВТ_Партии.Номенклатура
СГРУППИРОВАТЬ ПО
ВТ_Накладная.Номенклатура,
ВТ_Партии.Партия,
ВТ_Партии.Порядок
УПОРЯДОЧИТЬ ПО
Номенклатура,
ВТ_Партии.Порядок,
ВТ_Партии.Партия.МоментВремени
ИТОГИ
МИНИМУМ(Количество),
СУММА(КоличествоПартии)
ПО
Номенклатура
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Во втором уроке модуля 9, наверное, нужно брать максимум от регистратора только если периодичность в пределах регистратора. Если же у регистра цен установлена периодичность в пределах дня, то на каждую дату для каждого сочетания измерений будет единственная запись с единственным регистратором, то есть максимума по периоду должно быть достаточно, а регистратор можно получить при необходимости вместе с ценой из единственной записи для конкретного сочетания измерений, относящейся к максимальной дате для этого сочетания.
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
Во втором видео уроке «Срез последних при помощи запроса» рассматривается запрос регистру ЦеныНоменклатуры с регистратором.
Для чего делаются две таблицы с группировками (отдельно для периода и регистратора). Разве в одной нельзя брать максимум по двум полям? Проверил — результат одинаков, а время выполнения в 2 раза быстрее. Если смотреть стандартный срез последних в плане выполнения запроса на SQL, то отбор по регистратору вообще не делается.
…
(текст комментария доступен только участникам Мастер-группы)
А почему платформа не делает индексы по соединяемым полям?
И почему этого не делаем мы в запросах?
…
(текст комментария доступен только участникам Мастер-группы)
Я имел ввиду немного другое. Мы обращаемся к виртуальной таблице, система генерирует запрос. В этом запросе нет индексов. Это уже не на откуп разработчику, у нас нет возможности управлять этим процессом.
Пользоваться индексами я полюбил после примера из практики. Был отчёт на скд с каким-то кривым запросом, который выводил отчёт около 5 минут (замерял секундомером). Отлаживать запрос было реально неудобно и долго. В два места вставил индексирование по соединяемым полям, после этого весь отчёт (вместе с выводом на экран) стал формироваться около 15 секунд. Заказчик, который привык к такому долгому отчёту и который просил просто поправить немного запрос (по сути отбор наложить в нужном месте) был удивлён результатом и долго не верил, что отчёт работает правильно :)
После этого, у меня сформировалось мнение, что лишнее «чуть-чуть» на построение индекса по соединяемым полям вполне может окупиться временем на выполнение запроса, когда данных в базе станет много.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Немного не понял… Если уникальность записи уже обеспечивается вне зависимости от регистратора в пределах дня (мы не можем в тот же день сделать еще одним регистратором запись с уже существующим набором полей, сделанным другим регистратором), для чего тогда нужна вторая таблица ВТ_Регистраторы (и в ней максимум по регистратору)?
Прошу прощения за беспокойство, вы уже ответили на подобный вопрос участнику marivgo…
…
(текст комментария доступен только участникам Мастер-группы)
В плей-листе 9 модуля ошибка в п.17 Последнее поступление по каждому товару пропущено расширение файла .ufm.
И вопрос по решению этой задачи (п. 18 Часть 2). В первой ВТ у нас товары и даты (ссылок на эту дату нет, т.е. неизвестно в каких документах были поступления этого товара), на втором шаге таблицы соединяются только по дате и выбирается Максимум(Ссылка), но почему в итоге будет нужный документ, ведь в этом документе может и не быть нужного товара?
…
(текст комментария доступен только участникам Мастер-группы)