Добрый день. Роман, спасибо большое за ваш труд, респект ! Мои замечания: 1) В запросе на 1:55:17 при отмене проведения первичного ("правильного") "Приходного ордера", проверка обратно провести его не даст, так как выберет из регистра документы "приобретение товаров и услуг", которые так же являются регистраторами регистра "ТоварыКПоступлению" Можно добавить еще условие: И ТоварыКПоступлениюОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары и тогда будут проверяться только приходные ордера (документ обратно будет проводиться), НО проверку так же можно обойти, распровести первый (правильный) ордер, и провести второй (неправильный) - получится что у двух ордеров одинаковое распоряжение. Может добавить еще проверку на реквизит "Распоряжение" ? Что бы нельзя было указать "приемку товара по факту" для ордера, когда у другого ордера уже установлена эта приёмка ? 2) Немного по другому сделал контроль при проведении. Весь фильтр, кроме даты остатков беру из ТЧ товары, в том числе и "ДокументПоступление" Кстати, для небольших таблиц (ТЧ товары - небольшая таблица) поля можно не индексировать - это излишнее. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЧ_Товары.Ссылка.ПриемкаТоваровПоФакту КАК ДокументПоступление, | ТЧ_Товары.Ссылка.ХозяйственнаяОперация КАК ХозяйственнаяОперация, | ТЧ_Товары.Ссылка.Склад КАК Склад, | ТЧ_Товары.Номенклатура КАК Номенклатура, | ТЧ_Товары.Характеристика КАК Характеристика, | ТЧ_Товары.Серия КАК Серия |ПОМЕСТИТЬ Вт_Товары |ИЗ | Документ.ПриобретениеТоваровУслуг.Товары КАК ТЧ_Товары |ГДЕ | ТЧ_Товары.Ссылка = &Ссылка | |ИНДЕКСИРОВАТЬ ПО | ДокументПоступление, | ХозяйственнаяОперация, | Склад, | Номенклатура, | Характеристика, | Серия |; |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыКПоступлениюОстатки.Номенклатура КАК Номенклатура, | ТоварыКПоступлениюОстатки.КОформлениюПоступленийПоОрдерамОстаток КАК Перерасход, | ТоварыКПоступлениюОстатки.ДокументПоступления КАК Распоряжение |ИЗ | РегистрНакопления.ТоварыКПоступлению.Остатки( | &ДатаОстатков, | (ДокументПоступления, ХозяйственнаяОперация, Склад, Номенклатура, Характеристика, Серия) В | (ВЫБРАТЬ | Вт_Товары.ДокументПоступление КАК ДокументПоступление, | Вт_Товары.ХозяйственнаяОперация КАК ХозяйственнаяОперация, | Вт_Товары.Склад КАК Склад, | Вт_Товары.Номенклатура КАК Номенклатура, | Вт_Товары.Характеристика КАК Характеристика, | Вт_Товары.Серия КАК Серия | ИЗ | Вт_Товары КАК Вт_Товары)) КАК ТоварыКПоступлениюОстатки |ГДЕ | ТоварыКПоступлениюОстатки.КОформлениюПоступленийПоОрдерамОстаток < 0"; Запрос.УстановитьПараметр("ДатаОстатков", Новый Граница(Дата,ВидГраницы.Включая)); Запрос.УстановитьПараметр("Ссылка", Ссылка); 3) Замечание по отчету, требуется: "нужно отображать данные по приходным ордерам" Я бы в финальном запросе выводил бы данные из табличной части ордера, т.е. ссылку на ордер, товар, количество, т.е. визуально понятный отчет для пользователя, а не детализацию регистра. 4) В документе "ПриходныйОрдерНаТовары" в форме "ВыборРаспоряжения" выводится некорректно строка с новым документом, нужно в динамическом запросе прописать: И НЕ ТоварыКПоступлению.ДокументПоступления ССЫЛКА Документ.ПриемкаТоваровПоФакту Если в этом списке выбора не выводить наш новый документ - это в какой то степени контроль, руками пользователь документ не перевыберет. (правда может скопировать другой ордер с заполненным распоряжением) 5) В обработке "Управление поступлением" нужно так же прописать в условиях СКЛАД | ВЫБРАТЬ | ПриемкаТоваровПоФакту.Ссылка, | ПриемкаТоваровПоФакту.Контрагент.Партнер, | ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика), | ВЫРАЗИТЬ(ПриемкаТоваровПоФакту.Номер КАК СТРОКА(11)), | ПриемкаТоваровПоФакту.Дата, | """", | ДАТАВРЕМЯ(1, 1, 1), | ""ПриемкаТоваровПоФакту"", | ЛОЖЬ, | 2 | ИЗ | Документ.ПриемкаТоваровПоФактуКАК ПриемкаТоваровПоФакту | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПоступлению.Обороты КАК ТоварыКПоступлению | ПО ПриемкаТоваровПоФакту.Ссылка = ТоварыКПоступлению.ДокументПоступления | ГДЕ | ПриемкаТоваровПоФакту.Проведен = ИСТИНА | И ПриемкаТоваровПоФакту.Склад = &Склад | И ТоварыКПоступлению.ДокументПоступления ЕСТЬ NULL
@liubrom Жыл бұрын
Прошу прощения, я уже к этому моменту не помню нюансов решения билета, но ваши замечания выглядят как по делу. Спасибо, это поможет следующим сдающим)
@АляХасанова-е8щ11 ай бұрын
Просто спасение для тех кто начинает все это сдавать изучать и все в этом духе, еще бы спец конс хотелось полностью🙏
@МихаилШишканов-с2ь Жыл бұрын
Благодарю! Отличный разбор билета!
@liubrom Жыл бұрын
Спасибо!)
@andreywonttell40166 ай бұрын
Спасибо за ролик. Задача какая-то долгая. Сколько времени на весь экзамен дается? Как это можно успеть? 1с предполагает, что мы заучивать наизусть будем?
@liubrom5 ай бұрын
Действительно, это задача на фоне остальных сложная, но и по статистике она никому не попадается (на момент съемки видео)
@MamantVeb25 күн бұрын
спасибо за видео Роман, как насчет такого решения при проведении документа ПриобретениеТоваровУслуг по регистру ТоварыКПоступлению вместо варианта с колонками: Модуль Набора Записей , Процедура Перед Записью, цикл типовой Для Каждого СтрНабора Из ЭтотОбъект Цикл //++Экзамен Если ТипЗнч(СтрНабора.ДокументПоступления) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") И ЗначениеЗаполнено(СтрНабора.ДокументПоступления.ПринятьТоварыПоФакту) Тогда СтрНабора.ДокументПоступления = СтрНабора.ДокументПоступления.ПринятьТоварыПоФакту; КонецЕсли; //++ КонецЦикла;
@АлексейЗемлянский-в2х2 ай бұрын
Как 1с спец посмею чуть уточнить. в новой методике пишем вместо "Новый Граница(Дата, ВидГраницы.Включая)" -> "Новый Граница(МоментВремени(), ВидГраницы.Включая)", так как могут быть несколько документов в пределах одной секунды
@siniks7 Жыл бұрын
Капец, снова сломали мне мозг, Роман) Столько учил запросы и будто впустую. Зачем выбираем левое соединение если нам нужно найти данные где есть ордер, но нет приобретения? Очевидно же использовать внутреннее соединение. Вообще даже не понял как у вас это заработало через Левое соединение
@liubrom Жыл бұрын
Возможно, я не прав в своём решении) немного уже забыл в чем там суть отчёта, но в теории внутреннее соединение звучит лучше, чем отбор в условии... если через внутреннее работает также, то лучше внутренне... наверное😅
@shimorskiy5 ай бұрын
По примеру из видео, внутреннее соединение не работает, только левое. Скинь пожалуйста пример, если решил иначе. Я лично смог только укоротить запрос до 2х временных таблиц вместо трёх)
@mobilitymoon5232 Жыл бұрын
Приступай к УТ консультанту, тема востребована
@liubrom Жыл бұрын
Уже) Спаибо)
@mobilitymoon5232 Жыл бұрын
Спасибо за видео. С колонками при проведении перемудрил, достаточно СтруктураТаблиц.ТаблицаТоварыКПоступлению.Колонки.Удалить(СтруктураТаблиц.ТаблицаТоварыКПоступлению.Колонки.Найти("ДокументПоступления")); СтруктураТаблиц.ТаблицаТоварыКПоступлению.Колонки.Добавить("ДокументПоступления",Новый ОписаниеТипов("ДокументСсылка.Экз_ПриемкаТоварПоФакту"));
@liubrom Жыл бұрын
Наверняка так тоже можно, но мне хотелось сделать минимум изменений в типовом механизме. Поэтому я сначала получаю все старые типы этой колонки чтобы к ним добавить еще и наш тип.
@RuslanValiev Жыл бұрын
НовыйТипДокументПоступления = Новый ОписаниеТипов(ТоварыКПоступлению.Колонки.ДокументПоступления.ТипЗначения,"ДокументСсылка.ПринятьТоварПоФакту"); ТоварыКПоступлению.Колонки.Удалить("ДокументПоступления"); ТоварыКПоступлению.Колонки.Добавить("ДокументПоступления",НовыйТипДокументПоступления);