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

Вопрос к кейсу 10 — 4.
1. При расчёте аванса в Расходной накладной зачем нам поле НаправлениеДеятельности? Ведь в параметрах виртуальной таблицы указано, что отбираем только Аванс, значит других направлений деятельности быть не может.
2. Правильно понимаю, что результатом запроса по авансу будет такое количество строк, сколько существует незакрытых авансов по каждой переплаченной приходной накладной?
3. Если в запросе применить группировку по НаправлениеДеятельности.Аванс, просуммировав остаток для того, чтобы закрыть аванс одной суммой, то так возможно?
4. Было применено индексирование к НаправлениеДеятельности, на что оно влияет, кроме скорости?
…
(текст комментария доступен только участникам Мастер-группы)
Хочу посмотреть в справке информацию по оператору ВЫБОР. Справка предлагает 918 вариантов, а синтаксис-помощник 495 вариантов. Подскажите, пожалуйста, как ориентироваться в таком количестве предложенных вариантов?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Query 10 — case 2. При формировании запроса пакета 3 мы исключаем строки с равными курсами, для чего на закладке Условие накладываем фильтр на неравенство Курс и Предыдущий Курс. Почему мы на закладке Связи не описываем это условие?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Вопрос к видео 9-10.
1. Не понятна предложенная конструкция, а ссылка на SQL путает ещё больше, т.к. с SQL не знакома. Описала алгоритм, как понимаю, прошу указать, где ошибки.
— Выражение
ВЫБРАТЬ
| 1
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В (&Список)
возвращает 1, если выбранные товары входят в список и 0, если нет.
— НЕ 1 В (шаг 1). Если на первом шаге была 1, то НЕ 1 возвращает 0, а НЕ 0 возвращает 1.
— Номенклатура.Ссылка В (&Список) — это либо ссылка на товар, либо пустая ссылка.
Результат выражения, в моём понимании, должен быть: если товар выбран, то ссылка на товар, иначе 1.
Не понятно, как система понимает 1, если товар не выбран?
2. Оператора «ИЛИ» понимает 1 – как ИСТИНА, а 0 – как ЛОЖЬ?
Почему говорится, что выражение НЕ 1 В (шаг 1) возвращает ИСТИНУ или Ложь, а не 1 или 0?
3. Выбрать ПЕРВЫЕ 1 1 – это выбрать одно первое число, а число – 1, правильно читаю?
4. Правильно ли поняла, что оператор В ИЕРАРХИИ можно использовать для всех случаев, кроме описания прав доступа пользователей?
5. Не понимаю, почему говорится, что предложенная конструкция тождественна с В ИЕРАРХИИ?
Когда в первом случае выбираю наименование группы, то возвращает только наименование этой группы.
Когда заменяю на Номенклатура.Ссылка В ИЕРАРХИИ(&Список), то, как и положено, кроме самого наименования возвращаются все наименования этой группы. В чём тождественность?
…
(текст комментария доступен только участникам Мастер-группы)
1. >>возвращает 1, если выбранные товары входят в список и 0, если нет.
>>Нет, указанный запрос возвращает столько строк со значением 1, сколько
>> номенклатур есть в списке, переданном в качестве параметра.
>>Если список, переданный в качестве параметра, пустой, то и запрос ничего не вернет.
Не понимаю.
Если мы ничего не передаём, то возвращается 0, если передаём 1 наименование, то возвращается 1, а если передаём массив или список значений, что видит программа и что возвращает?
2. >>– НЕ 1 В (шаг 1). Если на первом шаге была 1, то НЕ 1 возвращает 0, а НЕ 0 возвращает 1.
>>Нет, если результат запроса пустой, то это выражение вернет значение >>ИСТИНА (ведь в результате запроса нет значения 1).
Как же в результате запроса нет значения 1, если на 1-м шаге возвращаются строки со значением 1?
3. Если Номенклатура.Ссылка В (&Список) возвращает Истина ИЛИ Ложь, то что возвращается, если в переданном массиве часть наименований входят в список, а часть нет?
…
(текст комментария доступен только участникам Мастер-группы)
Василий, прошу прощения, только сейчас доглядела, что не увидела выражение «1 В» после НЕ. А без этих двух символов ничего не складывалось!
…
(текст комментария доступен только участникам Мастер-группы)
Query-9-9. Как программа понимает МАКСИМУМ для Ссылки? Это максимум по алфавиту по наименованию для справочников и по дате для документов или что-то другое?
…
(текст комментария доступен только участникам Мастер-группы)
Понимаю, что ссылка — это уникальный идентификатор. Но есть ли какая-то прогнозируемая закономерность при формировании этих ссылок? Или это полностью случайный идентификатор?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо, ответ на мой вопрос есть в видео 9-11-1
…
(текст комментария доступен только участникам Мастер-группы)
Принцип формирования идентификатора интересовал для того, чтобы понять по какому принципу можно выстроить очерёдность ссылок, так что видео 9-11-1 ответило на этот вопрос, спасибо.
…
(текст комментария доступен только участникам Мастер-группы)
Query-9-8. Расчёт накопительных скидок. В запросе выбираем пороги накопительных скидок. И когда в параметрах запроса указывается оба года: 2012 и 2013, то выбираются границы продаж, установленные обоими документами. Правильно понимаю, что это произошло из-за того, что в документах указаны различные границы? Если бы, к примеру, границы в документах были одинаковые, а % разные, то этого бы не произошло?
…
(текст комментария доступен только участникам Мастер-группы)
В примере, о котором говорилось выше (“Урок 9 -7 Остатки товаров по дням”) задаваемые даты определила в формате дата и время. КонДата указана по времени 23:59:59.
КонДата установила на конец дня при установке параметра: Запрос.УстановитьПараметр(«КонДата», КонецДня(КонДата));
При этом, задавая КонДата 24-04-2014 23:59:59, вижу, что продажа чайника 24-04-2014 12:00:00 не учитывается в остатках. В чём ошибка?
…
(текст комментария доступен только участникам Мастер-группы)
1. Поменяла знак < на =<, сработало, спасибо.
2. Правильно ли понимаю, что функция КонецДня(Дата) равнозначна функции ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(Дата, ДЕНЬ), СЕКУНДА, 1) для даты со временем 23:59:59?
3. Как понять в каких случаях достаточно среза последних, а в каких необходимо ещё и отсекать предыдущие значения?
…
(текст комментария доступен только участникам Мастер-группы)
В предложенном примере расчёта накопительных ссылок, необходимо было для 2013 г. предусмотреть, чтоб не попали установленные на 2012г. границы продаж, т.е. получение только среза последних было неправильно. Хочу понять, на что обращать внимание, чтобы при получении среза последних не попасть в такую же ошибочную ситуацию.
…
(текст комментария доступен только участникам Мастер-группы)
Query-9-5-AccumRg-3. В прикреплённой базе в разделе «Запросы» обработка «Урок 9 -7 Остатки товаров по дням». Исходные даты задаю: НачДата — 01-03-2014, КонДата — 30-04-2014. В результатах возник вопрос по холодильнику. На 01-03-2014 его остатки в базе — 1шт, которая была продана 08-03-2014. Результат же запроса для 2-х диапазонов дат (01-03-2014 — 30-04-2014 и 08-03-2014 — 30-04-2014) выдаёт остаток 2 шт. Подскажите, пожалуйста, где ошибка?
…
(текст комментария доступен только участникам Мастер-группы)
но ведь 06-02-2014 с Основного склада холодильник был перемещён на склад электроники и 07-02-2014 1 шт продана со склада электроники. Т.е. на 01-03-2014 остаток 1 шт на складе электроники.
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо, поняла.
…
(текст комментария доступен только участникам Мастер-группы)
Видео 9-5-1. Почему для получения остатков использовали виртуальную таблицу ТоварныеЗапасы.ОстаткиИОбороты, а не ТоварныеЗапасы.Остатки?
…
(текст комментария доступен только участникам Мастер-группы)
Видео 9- 5. Правильно поняла, что поле Ссылка1 отображается в результате, как цифра, т.к. к полю применена функция количество различных?
…
(текст комментария доступен только участникам Мастер-группы)
Почему в регистре сведений ЦеныНоменклатуры Валюта – это ресурс, а не измерение?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Видео 9-1. Подскажите, почему в запросе пакета 2 условие ЦеныТоваров.ВидЦен =&ВидЦены устанавливается на закладке Связи, а не Условие?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте! Вопрос по примеру Query-9-Practice-2.
Выполняется агрегатная функция МАКСИМУМ(ЦеныНоменклатуры.Регистратор). В примере регистр сведений имеет периодичность «В пределах дня», значит по набору полей и регистратору может быть одна запись, разве нет?
Чтобы агрегатная функция имела смысл у регистра в поле периодичность должна стоять «По позиции регистратора». Или я ошибаюсь?
Заранее спасибо!
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Вопрос по Query-9-Practice-11-3
Подскажите, а можно документы не помещать во временную таблицу, я попробовала так сделать и получила такой же результат:
ПриходТовараТовары.Товар КАК Товар,
МАКСИМУМ(ПриходТовараТовары.Ссылка.Дата) КАК Дата
ПОМЕСТИТЬ ВТ_Даты
ИЗ
Документ.ПриходТовара.Товары КАК ПриходТовараТовары
СГРУППИРОВАТЬ ПО
ПриходТовараТовары.Товар
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПриходТовараТовары.Товар КАК Товар,
МАКСИМУМ(ПриходТовараТовары.Ссылка) КАК Ссылка,
ПриходТовараТовары.Ссылка.Дата КАК Дата
ИЗ
ВТ_Даты КАК ВТ_Даты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходТовара.Товары КАК ПриходТовараТовары
ПО ВТ_Даты.Товар = ПриходТовараТовары.Товар
И ВТ_Даты.Дата = ПриходТовараТовары.Ссылка.Дата
СГРУППИРОВАТЬ ПО
ПриходТовараТовары.Товар,
ПриходТовараТовары.Ссылка.Дата
В видео временная таблица используется для наглядности или таким образом повышается быстродействие? (ведь в моем решении все равно есть обращение к дате через точку от ссылки, а значит таблица будет на стороне СУБД все равно построена, я правильно понимаю?)
…
(текст комментария доступен только участникам Мастер-группы)
Какое практическое применение 3 примера из 9-го модуля — генерация последовательности?
В запросе Вы применяли функцию от параметра, хотя в главе оптимизация запросов говорили, что это нежелательно делать.
…
(текст комментария доступен только участникам Мастер-группы)
Во втором задании 9-го модуля применяется агрегатная функция МАКСИМУМ к Регистратору. Какой результат будет, ведь Регистратор это ссылка на документ?
…
(текст комментария доступен только участникам Мастер-группы)
Получается МАКСИМУМ для Регистратора будет выбирать Ссылку на Документ с наиболее поздней датой?Тип у Регистратора МоментВремени?
…
(текст комментария доступен только участникам Мастер-группы)
В первом примере 9-го модуля почему условие ЦеныТоваров.ВидЦен = &ВидЦен ставится в соединение, а не в секции ГДЕ, ведь поле ВидЦен есть только у одной таблицы?
…
(текст комментария доступен только участникам Мастер-группы)
т.е можно применить ГДЕ, но оно будет применяться к результату соединения, а в первом случае до соединения?
…
(текст комментария доступен только участникам Мастер-группы)
Практическое занятие 38 указан файл 1CV8.lgd, такого нет в этой папке, скриншот приложил.
…
(текст комментария доступен только участникам Мастер-группы)
МАКСИМУМ(ПоступлениеТоваровТовары.Ссылка.Дата) КАК Дата,
МАКСИМУМ(ПоступлениеТоваровТовары.Ссылка.Ссылка) КАК Ссылка,
ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
СГРУППИРОВАТЬ ПО
ПоступлениеТоваровТовары.Номенклатура
Скажите Задание 9-11 , сколько пробовал данный запрос дает корректный результат, выводит последние поступления документы по номенклатуре. Зачем делать много запросов с таблицами, или я не все условия проверил?
…
(текст комментария доступен только участникам Мастер-группы)
Доброго времени суток.
Практическое задание 31 сформулировано некорректно, либо решение ему не соответствует: формулировка задачи предполагает ЛЮБЫЕ две даты, а в решении вы генерируете 1000 дат.
Между тем, максимальная разница в месяцах между двумя датами в языке запросов — это 3999 * 12 — 1 = 47987. Т.е., именно столько дат потенциально должен возвращать запрос
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте.
В видео Query-9-Practice-1.mp4 приводится пример решения задачи, а результат получается вот такой, как на снимке.
Подскажите в чём может быть проблема?
Вот запрос:
ВЫБРАТЬ
ПродажиОбороты.Период КАК ДатаПродажи,
ПродажиОбороты.Контрагент КАК Контрагент,
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиОбороты.СуммаОборот КАК СуммаОборот
ПОМЕСТИТЬ ВТ_Продажи
ИЗ
РегистрНакопления.Продажи.Обороты(, , День, ) КАК ПродажиОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Продажи.ДатаПродажи КАК ДатаПродажи,
ВТ_Продажи.Контрагент КАК Контрагент,
ВТ_Продажи.Номенклатура КАК Номенклатура,
ВТ_Продажи.КоличествоОборот КАК КоличествоОборот,
ВТ_Продажи.СуммаОборот КАК СуммаОборот,
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
ЦеныНоменклатуры.ТипЦен КАК ТипЦен
ПОМЕСТИТЬ ВТ_цены
ИЗ
ВТ_Продажи КАК ВТ_Продажи
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ВТ_Продажи.Номенклатура = ЦеныНоменклатуры.Номенклатура
И ВТ_Продажи.ДатаПродажи >= ЦеныНоменклатуры.Период
И (ЦеныНоменклатуры.ТипЦен = &ТипЦен)
СГРУППИРОВАТЬ ПО
ЦеныНоменклатуры.ТипЦен,
ВТ_Продажи.ДатаПродажи,
ВТ_Продажи.Номенклатура,
ВТ_Продажи.Контрагент,
ВТ_Продажи.КоличествоОборот,
ВТ_Продажи.СуммаОборот
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_цены.ДатаПродажи КАК ДатаПродажи,
ВТ_цены.Контрагент КАК Контрагент,
ВТ_цены.Номенклатура КАК Номенклатура,
ВТ_цены.КоличествоОборот КАК КоличествоОборот,
ВТ_цены.СуммаОборот КАК СуммаОборот,
ВТ_цены.Период КАК Период,
ВТ_цены.ТипЦен КАК ТипЦен,
ЦеныНоменклатуры.Цена КАК Цена
ИЗ
ВТ_цены КАК ВТ_цены
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ВТ_цены.Номенклатура = ЦеныНоменклатуры.Номенклатура
И ВТ_цены.ТипЦен = ЦеныНоменклатуры.ТипЦен
И ВТ_цены.Период = ЦеныНоменклатуры.Период
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
Вопрос по запросу, который получает остатки в периоде, когда не было движений. Из запроса получается, что если товара не было на остатках на начало периода, то все даты от начала периода до момента, пока товар не появится на остатках, в результат запроса не попадут. По-моему, это неправильно. Мне кажется, что эти даты все равно должны попасть в результат с количеством, равным нулю.
Подскажите, пожалуйста, как этого добиться?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Практическая работа 35.
Не получается подключиться к внешней файловой базе.
База без пароля. Имя «Администратор»
Создал экспортную функцию для подключения.
Подключаюсь, функция возвращает ошибку «{ВнешнийОтчет.ПрактическаяРабота35.Форма.ФормаОтчета.Форма(20)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Неверные или отсутствующие параметры соединения с информационной базой»
Функция ПодключитьсяКбазе() экспорт
ПараметрыПодключенияИБ = «Filе=»»C:\1с\InfoBase4″»; Usr=»»Администратор»;
V83COMCon= Новый COMОбъект(«V83.COMConnector»);
Попытка
Возврат V83COMCon.Connect(ПараметрыПодключенияИБ);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
КонецФункции
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте. Выдаёт сообщение метод объекта не обнаружен (Connect)
…
(текст комментария доступен только участникам Мастер-группы)
Создаётся COMObject, скрин кинул.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Возможен ли такой вариант указания условия в практической работе № 33 по номенклатуре в параметрах виртуальной таблицы?
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.СуммаОборот КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(
&НачалоПериода,
&КонецПериода,
,
Номенклатура = &Номенклатура
ИЛИ НЕ 1 В
(ВЫБРАТЬ
1 КАК Поле1
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Номенклатура)) КАК ПродажиОбороты
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте, у меня вопрос по 9 модулю Query-10-Case-7, вы в запросе Реквизит партнер получаете из регистра сведений АналитикаУчетаПоПартнерам, а почему не используете ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер?
И еще поясните, пожалуйста, зачем соединение с док. Реализация? Если использовать регистр ВыручкаИСебестоимостьПродажОбороты.Период для определения даты последней покупки, выбрав периодичность День или Регистратор мы не получим нужный результат?
«ВЫБРАТЬ
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер КАК АналитикаУчетаПоПартнерамПартнер,
МАКСИМУМ(ВыручкаИСебестоимостьПродажОбороты.Период) КАК Период,
СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК СуммаВыручкиОборот
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, , Регистратор, ) КАК ВыручкаИСебестоимостьПродажОбороты
СГРУППИРОВАТЬ ПО
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер
ИМЕЮЩИЕ
СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) > &Оборот И
МАКСИМУМ(ВыручкаИСебестоимостьПродажОбороты.Период) < &Период"
Добрый день!
1) Вот тут посмотрите ответ автора курса на аналогичный вопрос https://курсы-по-1с.рф/1c-v8/development-optimize-queries/startpage/module09/?comments#comment-674090
2) Для конкретной периодичности (День или Регистратор) вы получите нужный результат. Думаю, что автор использует именно такую реализацию в целях универсальности, т.е. чтобы текст запроса подошел под любую периодичность регистра.
Спасибо, за ответ)
Пожалуйста!
Интересного обучения!
Здравствуйте, практическое задание 34 определение високосного года, вы определяете по количеству дней в году, а если остатком от деления на 4, такое решение будет верным?
ВЫБОР ГОД(Годы.Год ) — (ВЫРАЗИТЬ(ГОД(Годы.Год) / 4 КАК ЧИСЛО(15, 0))) * 4 КОГДА 0 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ
…
(текст комментария доступен только участникам Мастер-группы)
1 КАК Цифры
ПОМЕСТИТЬ вт_цифры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
9
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата1, ГОД), ГОД, 100 * вт_цифры2.Цифры + 10 * вт_цифры1.Цифры + вт_цифры.Цифры) КАК ГОД
ИЗ
вт_цифры КАК вт_цифры,
вт_цифры КАК вт_цифры1,
вт_цифры КАК вт_цифры2
ГДЕ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата1, ГОД), ГОД, 100 * вт_цифры2.Цифры + 10 * вт_цифры1.Цифры + вт_цифры.Цифры) МЕЖДУ &дата1 И &дата2
УПОРЯДОЧИТЬ ПО
ГОД
УЖЕ СВЕрил с вашим . вроде одинаковое в чем ошибка?
…
(текст комментария доступен только участникам Мастер-группы)
0 КАК Цифры
ПОМЕСТИТЬ вт_цифры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
9
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Дата1, МЕСЯЦ), МЕСЯЦ, 100 * вт_цифры2.Цифры + 10 * вт_цифры1.Цифры + вт_цифры.Цифры) КАК Месяц
ИЗ
вт_цифры КАК вт_цифры,
вт_цифры КАК вт_цифры1,
вт_цифры КАК вт_цифры2
УПОРЯДОЧИТЬ ПО
Месяц
В этом запросе я правильно понимаю просто добавляется к текущему месяцу месяца из таблицы,?
сначала 0 так как не изменилось и так до 999
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день, почему в кейсе Query-10-case-4 в процедуре обработки документа «Приход денег» при оформлении аванса по контрагенту используется движение «приход», а не «расход? Ведь аванс значит, что мы должны контрагенту, а не наоборот. Либо я что то не так понимаю. Ниже приведен код :
Если СуммаСписать > 0 Тогда
Движение = Движения.ВзаиморасчетыСКонтрагентами.ДобавитьПриход();
Движение.Контрагент = Контрагент;
Движение.Период = Дата;
Движение.НаправлениеДеятельности = Справочники.НаправленияДеятельности.Аванс;
Движение.Сумма = СуммаСписать;
КонецЕсли;
…
(текст комментария доступен только участникам Мастер-группы)
В этом случае при проведении расходной накладной при зачтении аванса было бы движение приход ,а не расход, как у вас, верно?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день, Василий.
Помогите, пожалуйста, разобраться с запросом.
ПриемныеКампанииСрезПоследних.Регистратор КАК Документ,
ПриемныеКампанииСрезПоследних.ГодПоступления КАК Представление,
ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявленийПоступающих.ПустаяСсылка) КАК Состояние
ИЗ
РегистрСведений.ПриемныеКампании.СрезПоследних КАК ПриемныеКампанииСрезПоследних
ГДЕ
ЛОЖЬ
И ПриемныеКампанииСрезПоследних.Регистратор.Ссылка ЕСТЬ NULL
Интересует секция ГДЕ, а именно:
1) Если в условии указано только ИСТИНА, тогда, грубо говоря, условие всегда будет выполняться, как и в соединении таблиц мы использовали такой прием. Верно? А для чего здесь указали ЛОЖЬ?
2) И ПриемныеКампанииСрезПоследних.Регистратор.Ссылка ЕСТЬ NULL — как я понимаю, должны отбираться все записи, где у регистратора отсутствует значение?
3) В совокупности (1) и (2) выходит, что условие секции ГДЕ не выполнится никогда? Ведь если ЛОЖЬ и ИСТИНА всегда будет ЛОЖЬ?
4) ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявленийПоступающих.ПустаяСсылка) КАК Состояние — в результирующей таблице у каждой записи последняя колонка будет Состояние со значением ПустаяСсылка, верно?
…
(текст комментария доступен только участникам Мастер-группы)
Доброго времени суток, Василий!
1)
В задаче «Списание по партиям» в итоге Вы используете три основных виртуальных таблицы:
(1) Таблица, в которой хранится информация по Партиям из таблицы документа РасходнаяНакладная с количеством товара, которое возможно списать;
(2) Далее Вы получаете виртуальную таблицу, где хранится информация о Партиях с количеством, которые НЕ задействованы в таблице документа (от остатка отнимаете с помощью объединения остаток по этой же партии, чтобы в итоге остались те партии, которых нет в тч документа);
(3) Далее получаете виртуальную таблицу с информацией по партиям, которые Задействованы в документе, но количество представляет собой остаток (КоличествоОстаток – КоличествоВДокументе Иначе 0).
Вопрос:
Для чего получать (2) и (3) временные таблицы, если можно во временной таблице (2) от Остатка отнять не такой же остаток, а то количество, которое мы будем списывать (отнять с помощью объединения таблиц). В итоге получим таблицу, где есть те записи, в которых партия отсутствует в тч документа, а также записи, партия которых есть в тч, с остатком, который можно потом распределить при списании.
Прикрепляю выгрузку базы с реализованным текстом запроса, т.к будет понятнее о чем говорю. Проверил, вроде работает исправно, но возможно я что-то упустил. Заранее благодарю!
2) Вопрос по кейсу Отчет по продажам.
2.1) Почему выбрали виртуальную таблицу Хозрасчетный.Обороты, а не ОборотыДтКт? Не понимаю, когда необходимо использовать именно Обороты, а когда ОборотыДтКт.
2.2) Также хотелось бы уточнить почему Вы поместили условие на счет по выручке 9001 в УсловиеСчета, а не в УсловиеКорСчета? По сути можно ведь и так и так? Запрос отработает ведь исправно, только сумму по дебету надо будет вынести, а не по кредиту.
2.3) В решении мы ведь получаем значение субконтно1, а в нем НоменклатурнаяГруппа, а не номенклатура, правильно?
3) Как подтянуть свои знания в бухгалтерии? Не приходилось работать с этой предметной областью, поэтому побаиваюсь ее. В планах пройти курс Подготовка к спецу, там все это разбирается?
…
(текст комментария доступен только участникам Мастер-группы)
Василий, большое спасибо! Как всегда очень подробно и доходчиво.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый вечер. Видео 22 \ Модуль 9 \ На 00:09:20 параметру запроса &ДатаОкончания Вы присваиваете МоментВремени().
Вопрос:
1) Почему именно МоментВремени(), а не Дата документа? Когда использовался МоментВремени в запросах, где необходимо однозначно определить положение документа на временной оси, такой прием мне был понятен, т.к МоментВремени это Ссылка + Дата.
2) Существует ли четкое определение, когда необходимо применять МоментВремени() обязательно?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Видео «Остатки в периоде, когда не было движений». Прикрепляю архив со скриншотами и файлом запроса. Такое поведение и должно быть или я ошибку сделал где? Не могу понять, почему остатки на Тапочки 17.12.2017 17:20:32 не попадают в результат, если период &Дата2 17.12.2017 23:59:59. Это из-за условия ?
ИЗ
втОстатки КАК втОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОстатки КАК втОстатки1
ПО втОстатки.Товар = втОстатки1.Товар
И втОстатки.Склад = втОстатки1.Склад
И втОстатки.Период < втОстатки1.Период
Остаток же должен быть равен 7, а отображается 2.
Тестировал на последней Демонстрационной конфигурации.
…
(текст комментария доступен только участникам Мастер-группы)
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Задача 32. Результат правильный, но оптимальный ли вариант решения я выбрал?
0 КАК Поле1
ПОМЕСТИТЬ втЧисло1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
9
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втЧисло0.Поле1 + 10 * втЧисло1.Поле1 + 100 * втЧисло2.Поле1 КАК Год
ПОМЕСТИТЬ втГода
ИЗ
втЧисло1 КАК втЧисло0
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЧисло1 КАК втЧисло1
ПО (ИСТИНА)
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЧисло1 КАК втЧисло2
ПО (ИСТИНА)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА ДЕНЬГОДА(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаНачала, ГОД, втГода.Год), ГОД)) = 366
ТОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаНачала, ГОД, втГода.Год), ГОД)
КОГДА ДЕНЬГОДА(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаНачала, ГОД, втГода.Год), ГОД)) = 365
ТОГДА 0
КОНЕЦ КАК ВисокосныйГод
ИЗ
втГода КАК втГода
ГДЕ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаНачала, ГОД, втГода.Год), ГОД) МЕЖДУ &ДатаНачала И &ДатаОкончания
И ДЕНЬГОДА(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаНачала, ГОД, втГода.Год), ГОД)) = 366
УПОРЯДОЧИТЬ ПО
ВисокосныйГод
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день. Решил задачу 37 заметно менее сложным запросом. Правильно ли так?
ПродажиОбороты.СуммаОборот КАК СуммаОборот
ПОМЕСТИТЬ ВТ_Итоги
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПродажиОбороты.Контрагент КАК Контрагент,
ПродажиОбороты.СуммаОборот / ВТ_Итоги.СуммаОборот * &Сумма КАК Процент
ИЗ
ВТ_Итоги КАК ВТ_Итоги,
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ИТОГИ
СУММА(Процент)
ПО
ОБЩИЕ
При этом проблем с округлением не возникло. Хотя, возможно, это из-за настройки округления консоли запросов. Не подскажете, где их можно изменить?
…
(текст комментария доступен только участникам Мастер-группы)
Ясно. Спасибо.
Добрый день! В кейсе 10 в первых две временные таблицы включают в себя только вложенные запросы. Возможно ли напрямую использовать те же данные, но без вложенных запросов, и, если это возможно, то чем лучше вариант с вложенными запросами?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Объясните пожалуйста. В видеуроке Query-9-Practice-1 «Срез последних на каждую дату» условие выбор вида цен по параметру ставится в связях. Почему там, а не в секции «Где»?
…
(текст комментария доступен только участникам Мастер-группы)
Ясно, спасибо.
Видеоурок «Взаиморасчеты по направлениям деятельности»
Подскажите, почему обычная оплата делает движения «Расход», а оплата-аванс делает «Приход»? Никак не пойму логику. Ведь аванс это тоже оплата.
…
(текст комментария доступен только участникам Мастер-группы)
Для задачи «Получить первую попавшуюся запись» сделала еще один вариант — с использованием генератора случайных чисел. Можно использовать для розыгрыша призов среди покупателей:)
("ВЫБРАТЬ
| СУММА(1) КАК КолВоКонтрагентов
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ЭтоГруппа");
Выборка = Запрос.Выполнить().Выбрать();
КолВоКонтрагентов = 0;
Если Выборка.Следующий() Тогда
КолВоКонтрагентов = Выборка.КолВоКонтрагентов;
ГСЧ = Новый ГенераторСлучайныхЧисел();
СлучайноеЧисло = ГСЧ.СлучайноеЧисло(1, КолВоКонтрагентов);
Запрос = Новый Запрос
("ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВтКонтрагенты
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ЭтоГруппа
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагенты1.Ссылка) КАК ПорядкНомер
|ИЗ
| ВтКонтрагенты КАК Контрагенты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтКонтрагенты КАК Контрагенты1
| ПО Контрагенты.Ссылка >= Контрагенты1.Ссылка
|
|СГРУППИРОВАТЬ ПО
| Контрагенты.Ссылка
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагенты1.Ссылка) = &ПорядкНомер");
Запрос.УстановитьПараметр("ПорядкНомер", СлучайноеЧисло);
Запрос.Выполнить().Выбрать();
ВыборкаКонтр = Запрос.Выполнить().Выбрать();
Если ВыборкаКонтр.Следующий() Тогда
Объект.Контрагент = ВыборкаКонтр.Ссылка;
КонецЕсли;
КонецЕсли;
…
(текст комментария доступен только участникам Мастер-группы)
Вопрос по «Практическое задание №31. Генерация последовательности дат запросом»
Столкнулась с такой проблемой — задала период 100 лет и получилось, что 1000 месяцев не покрыли его целиком. Пришлось добавлять еще один порядок из ВТЦифры3.
В связи с этим вопрос.
А можно ли создать универсальный запрос, который будет генерировать последовательность на основании переданного параметра, в котором указано, какое кол-во чисел нужно сгенерировать? Или эта задача решается только в модуле, формированием текста запроса из кусочков?
…
(текст комментария доступен только участникам Мастер-группы)
Не поняла, зачем в задаче получения среза последних в случае зависимого регистра получать максимум по регистратору?
Ведь периодичность регистра все равно день, значит двух регистраторов в день быть не может.
Правильно ли я понимаю, что если регистратор установки цен нам не нужен, то можно использовать первый вариант запроса?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! В видео-уроке 9-го модуля Qvery-9-Practice-2 вы берёте МАКСИМУМ от ЦеныНоменклатуры.Регистратор. Вопрос:Что даёт максимум по регистратору, если например документы-регистраторы выгрузили правилами обмена и не по-порядку, сначала поздние, потом ранние; или например задним числом создали документ УстановкаЦен, или ошиблись, создали другим числом, а потом исправили?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо, Василий! Курс по запросам очень познавательный, логически выстроен, в целом понятен, Вы сделали его содержательным, последовательным, Вами проведена огромная серьёзная работа! Спасибо Вам, успехов во всём, интересных вопросов в мастер-группах, больше учеников!
…
(текст комментария доступен только участникам Мастер-группы)
Что значит максимальная ссылка?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
Практическое задание №35. Получение данных из внешней информационной базы.
Не получается сделать внешнюю базу. Можно ли нашу учебную выгрузить и потом подключится к ней?
Выгружаю файл 1Cv8.dt кладу в папку C:\Temp\Homework, но база к ней не подключается «Ошибка открытия базы».
Пробовала и конфигурацию выгружать и просто информационную базу.
Подскажите пожалуйста.
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте. Спасибо Вам за курс, особенно за 9 модуль. Возник такой вопрос, м.б. я и пропустила ответ. Консоль запросов позволяет сформировать текст запроса для конфигуратора. Меня же интересует обратная задача — как из конфигуратора вставить запрос в консоль? Сейчас удаляю | в текстовом редакторе и вставляю в консоль. А нельзя ли прямо в консоли?
…
(текст комментария доступен только участникам Мастер-группы)
Кроме видеоурока «Нумерация строк в запросе» еще где-то рассматривается сортировка документов по «МоментуВремени» или похожие задачи определения хронологической последовательности документов?
…
(текст комментария доступен только участникам Мастер-группы)
Для определения хронологии документа одного типа мы использовали Дату и Ссылку. А можно ли использовать такой же подход для определения хронологии документов разных типов или такой подход может привести к проблемам? Будут ли два уже созданных документа разных типов всегда выстраиваться в одну хронологическую последовательность (при условии что их даты совпадают с точностью до секунды)?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте, вопрос по кейсу 6-9. Скажите, чем лучше или хуже такое решение данного кейса с нахождением даты последнего остатка, без интервалов?
0 КАК Цифра
ПОМЕСТИТЬ ВТ_Цифры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
9
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Цифры.Цифра + 10 * ВТ_Цифры1.Цифра + 100 * ВТ_Цифры2.Цифра КАК Поле1
ПОМЕСТИТЬ Вт_365
ИЗ
ВТ_Цифры КАК ВТ_Цифры,
ВТ_Цифры КАК ВТ_Цифры1,
ВТ_Цифры КАК ВТ_Цифры2
ГДЕ
ВТ_Цифры.Цифра + 10 * ВТ_Цифры1.Цифра + 100 * ВТ_Цифры2.Цифра <= 365
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&Дата, ДЕНЬ, Вт_365.Поле1) КАК Поле1
ПОМЕСТИТЬ Вт_365Дни
ИЗ
Вт_365 КАК Вт_365
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Вт_365Дни.Поле1 КАК Поле1,
ЕСТЬNULL(МАКСИМУМ(ТоварныеЗапасыОстаткиИОбороты.Период), 0) КАК Период
ПОМЕСТИТЬ ДниСДнямиДвижений
ИЗ
Вт_365Дни КАК Вт_365Дни
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварныеЗапасы.ОстаткиИОбороты(, , День, , Товар = &Товар) КАК ТоварныеЗапасыОстаткиИОбороты
ПО Вт_365Дни.Поле1 >= ТоварныеЗапасыОстаткиИОбороты.Период
СГРУППИРОВАТЬ ПО
Вт_365Дни.Поле1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТоварныеЗапасыОстаткиИОбороты.Период КАК Период,
ТоварныеЗапасыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ПОМЕСТИТЬ ОстаткиПоДням
ИЗ
РегистрНакопления.ТоварныеЗапасы.ОстаткиИОбороты(, , День, , Товар = &Товар) КАК ТоварныеЗапасыОстаткиИОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДниСДнямиДвижений.Поле1 КАК Дата,
ДниСДнямиДвижений.Период КАК Период,
ЕСТЬNULL(ОстаткиПоДням.КоличествоКонечныйОстаток, 0) КАК КоличествоКонечныйОстаток
ИЗ
ДниСДнямиДвижений КАК ДниСДнямиДвижений
ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПоДням КАК ОстаткиПоДням
ПО ДниСДнямиДвижений.Период = ОстаткиПоДням.Период
УПОРЯДОЧИТЬ ПО
Дата
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
Вопрос по первой задаче. Зачем надо тратить ресурсы на создание первой виртуальной таблицы, если можно сразу создать вторую?
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.ПериодДень КАК ДеньПродажи,
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПоследняяУстановкаЦен
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО (ПродажиОбороты.Номенклатура = ЦеныНоменклатуры.Номенклатура)
И (ЦеныНоменклатуры.ТипЦен = &ТипЦен)
И (ЦеныНоменклатуры.Период <= ПродажиОбороты.ПериодДень)
СГРУППИРОВАТЬ ПО
ПродажиОбороты.Номенклатура,
ПродажиОбороты.ПериодДень
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВременнаяТаблица.Номенклатура КАК Номенклатура,
ВременнаяТаблица.ДеньПродажи КАК ДеньПродажи,
ВременнаяТаблица.ПоследняяУстановкаЦен КАК ПоследняяУстановкаЦен,
ЦеныНоменклатуры.Цена КАК Цена
ИЗ
ВременнаяТаблица КАК ВременнаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО (ЦеныНоменклатуры.Период = ВременнаяТаблица.ДеньПродажи
И ЦеныНоменклатуры.ТипЦен = &ТипЦен
И ВременнаяТаблица.Номенклатура = ЦеныНоменклатуры.Номенклатура)
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо!
Добрый день. Соединение таблиц без общих полей по условию «Истина» чем отличается от декартова произведения?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо.
День добрый.
кейс 5.1 списание партий товаров. если есть возможность, посмотрите мой запрос. сделал, как мне кажется проще. использовал «(номенклатура,партия) В» чтобы отделить партии которые в документе и те, которые нет.
правильное ли решение в результате получилось?
«ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Номенклатура,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
| РасходнаяНакладнаяТовары.Партия
|ПОМЕСТИТЬ ТабДокумента
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.Номенклатура,
| РасходнаяНакладнаяТовары.Партия
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПартииТоваровОстатки.Номенклатура,
| ПартииТоваровОстатки.Партия,
| ПартииТоваровОстатки.КоличествоОстаток,
| 0 КАК Приоритет
|ПОМЕСТИТЬ ПартииДокумента
|ИЗ
| РегистрНакопления.ПартииТоваров.Остатки(
| &МоментВремени,
| (Номенклатура, партия) В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТабДокумента.Номенклатура,
| ТабДокумента.Партия
| ИЗ
| ТабДокумента КАК ТабДокумента)) КАК ПартииТоваровОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПартииТоваровОстатки.Номенклатура,
| ПартииТоваровОстатки.Партия,
| ПартииТоваровОстатки.КоличествоОстаток,
| 1 КАК Приоритет
|ПОМЕСТИТЬ ПартииВнеДокумента
|ИЗ
| РегистрНакопления.ПартииТоваров.Остатки(
| &МоментВремени,
| НЕ (Номенклатура, партия) В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТабДокумента.Номенклатура,
| ТабДокумента.Партия
| ИЗ
| ТабДокумента КАК ТабДокумента)) КАК ПартииТоваровОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПартииДокумента.Номенклатура,
| ПартииДокумента.Партия,
| ПартииДокумента.КоличествоОстаток,
| ПартииДокумента.Приоритет КАК Приоритет
|ПОМЕСТИТЬ ПартииКСписанию
|ИЗ
| ПартииДокумента КАК ПартииДокумента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПартииВнеДокумента.Номенклатура,
| ПартииВнеДокумента.Партия,
| ПартииВнеДокумента.КоличествоОстаток,
| ПартииВнеДокумента.Приоритет
|ИЗ
| ПартииВнеДокумента КАК ПартииВнеДокумента
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТабДокумента.Номенклатура КАК Номенклатура,
| ТабДокумента.Количество КАК Количество,
| ПартииКСписанию.Партия,
| ПартииКСписанию.КоличествоОстаток КАК КоличествоОстаток,
| ПартииКСписанию.Приоритет КАК Приоритет
|ИЗ
| ТабДокумента КАК ТабДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПартииКСписанию КАК ПартииКСписанию
| ПО ТабДокумента.Номенклатура = ПартииКСписанию.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура,
| Приоритет
|ИТОГИ
| МАКСИМУМ(Количество),
| СУММА(КоличествоОстаток)
|ПО
| Номенклатура»
…
(текст комментария доступен только участникам Мастер-группы)
да, не учел, что одна номенклатура в документе несколько раз фигурировать может.
не подскажите, почему периодически возникает ошибка
{ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(741)}: Ошибка при вызове метода контекста (Вопрос)
Ответ = Вопрос(Текст, Режим, 0);
по причине:
Использование модальных окон в данном режиме запрещено!
Работа в толстом клиенте, консоль запросов 8.2
…
(текст комментария доступен только участникам Мастер-группы)
В уроке по партионному учету Вы решаете очень похожую задачу на ту, которую я имел в виду, когда задавал вопрос по получению в запросе итогов по паре Номенклатура+Характеристика. Точно также, как и в Вашей задаче, при проведении документа итоги нужны для того, что бы сразу определить достаточность общего остатка (без учета партий). Как бы Вы решили эту задачу, если бы кроме номенклатуры нужны были бы еще и ее характеристики?
…
(текст комментария доступен только участникам Мастер-группы)
Т.е. Вы бы не стали создавать вычисляемое поле типа КодНоменклатуры + НаименованиеХарактеристики, чтобы получить по нему общие итоги? Если да, то почему?
…
(текст комментария доступен только участникам Мастер-группы)
Задача 35 сформулирована просто — надо данные из другой БД только поместить в отчет. А если эти данные нужны для совместной обработки с данными текущей БД? Скажем, данные по номенклатуре из двух баз надо соединять в запросе по коду. Как это делать?
…
(текст комментария доступен только участникам Мастер-группы)