Задача 1.13. 1С: Специалист по платформе 8.3

05.01.19

Разработка - Подготовка к аттестации

Вариант решения задачи 1.13 с комментарием основных моментов (тестировалось на релизе 8.3.9.2170).

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Задача 1.13 1с Специалист по платформе 8.3:
.dt 183,78Kb
7 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Суть задачи – компания продает стеллажи и детали стеллажей.

Приходуются только детали, продавится могут как детали, так и стеллажи (указываются в одной табличной части)

Нужны отчеты по наличию стеллажей и наличию деталей.

Основные моменты:

Стеллажи и детали указываются в справочнике «Номенклатура».  Для определения стеллажей добавлен реквизит «ЭтоСтеллаж» (тип:Булево)

Составы стеллажей хранятся в РС «СоставыСтеллажей».

Измерения:

Деталь (тип СпарвочникСсылка.Номенклатура). Для исключения выбора стеллажей – указываем «Параметры выбора» - Отбор.ЭтоСтеллаж – Ложь.

                Ресурсы:

Стеллаж (тип СпарвочникСсылка.Номенклатура). Для исключения выбора деталей – указываем «Параметры выбора» - Отбор.ЭтоСтеллаж – Истина.

КоличествоВСтеллаже (тип Число)

РС «СоставыСтеллажей»

Стеллаж отнесен к ресурсам, чтобы выполнить условие задачи -  «одна и та же деталь не может относиться к разным стеллажам»

Приходная накладная – для реквизита Номенклатура табличной части указываем ПараметрыВыбора (аналогично как в РС для детали)

 

Учет остатков ведется в деталях только по количеству в разрезе складов (соответственно нужно добавить справочник Склады,  измерение в регистре Остатки номенклатуры и реквизит в шапке приходной и расходной накладной)

Проведение приходной накладной - стандартно.

При проведении расходной накладной используется «новая» методика, единственное, стеллажи нужно пересчитать в детали.

Схема проведения по «новой» методике – стандартная, посмотреть можно например здесь https://xn----1-bedvffifm4g.xn--p1ai/articles/2017-02-12-two-methods-for-inventory-check/ или например здесь https://1c.chistov.pro/2010/06/1-82.html

Не забываем, что при новой методике при проверке остатков используем не момент времени, а создаем границу (т.к. МоментВремени() не включает сам документ, а необходимо, чтобы документ включатся)

ГраницаПериода=новый Граница(МоментВремени(),ВидГраницы.Включая);
Запрос.УстановитьПараметр("ГраницаПериода", ГраницаПериода);

 

Для пересчета стеллажей в детали левым соединением к табличной части присоединяем регистр сведений с комплектациями (по стеллажу). Далее если поле стеллаж из регистра сведений «ЕСТЬ NULL», то тогда номенклатуру берем из табличной части (т.е. если стеллаж в РС не найден, значит это деталь), количество просто берем из табличной части. Если стеллаж найден (т.е. это стеллаж), то номенклатуру (деталь) берем из РС, а количество - из табличной части умножаем на количество в стеллаже.

Текс запроса сразу формируем конструктором и для записи движений, и для последующей проверки (потом разделим как надо)

 

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

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВЫБОР
		|		КОГДА СоставыСтеллажей.Стеллаж ЕСТЬ NULL 
		|			ТОГДА РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
		|		ИНАЧЕ СоставыСтеллажей.Деталь
		|	КОНЕЦ КАК Номенклатура,
		|	СУММА(ВЫБОР
		|			КОГДА СоставыСтеллажей.Стеллаж ЕСТЬ NULL 
		|				ТОГДА РасходнаяНакладнаяСписокНоменклатуры.Количество
		|			ИНАЧЕ РасходнаяНакладнаяСписокНоменклатуры.Количество * СоставыСтеллажей.КоличествоВСтеллаже
		|		КОНЕЦ) КАК Количество
		|ПОМЕСТИТЬ ТабЧасть
		|ИЗ
		|	Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыСтеллажей КАК СоставыСтеллажей
		|		ПО РасходнаяНакладнаяСписокНоменклатуры.Номенклатура = СоставыСтеллажей.Стеллаж
		|ГДЕ
		|	РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
		|
		|СГРУППИРОВАТЬ ПО
		|	ВЫБОР
		|		КОГДА СоставыСтеллажей.Стеллаж ЕСТЬ NULL 
		|			ТОГДА РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
		|		ИНАЧЕ СоставыСтеллажей.Деталь
		|	КОНЕЦ
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ТабЧасть.Номенклатура,
		|	ТабЧасть.Количество
		|ИЗ
		|	ТабЧасть КАК ТабЧасть
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ОстаткиНоменклатурыОстатки.Номенклатура) КАК Представление,
		|	-ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Нехватка
		|ИЗ
		|	РегистрНакопления.ОстаткиНоменклатуры.Остатки(
		|			&ГраницаПериода,
		|			Склад = &Склад
		|				И Номенклатура В
		|					(ВЫБРАТЬ
		|						ТабЧасть.Номенклатура
		|					ИЗ
		|						ТабЧасть)) КАК ОстаткиНоменклатурыОстатки
		|ГДЕ
		|	ОстаткиНоменклатурыОстатки.КоличествоОстаток < 0";
	
	Запрос.УстановитьПараметр("ГраницаПериода", ГраницаПериода);
	Запрос.УстановитьПараметр("Склад", Склад);
	Запрос.УстановитьПараметр("Ссылка", Ссылка);

 

Отчеты:

Отчет по стеллажам имеет определенные подводные камни. Можно посмотреть здесь://infostart.ru/public/969323/

Как добавить параметр в заголовок – можно посмотреть здесь://infostart.ru/public/963368/

 

Интерфейс задачи – 8.2, (тестировалось на релизе 8.3.9.2170)

Подсистемы не создавались.

 

Благодарю за внимание!

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Подготовка к аттестации Программист Стажер 1С v8.3 1C:Бухгалтерия Платные (руб)

Обучающая программа 1С Online представляет собой интерактивное изучение языка запросов с самого начала:<br/> - 50 практических заданий с различным уровнем сложности;<br/> - Методические материалы по практике написания запросов;<br/> - Описание назначения таблиц и индексов 1С Предприятие 8;<br/> - Методика решения реальных задач запросом 1С;<br/> - Автоматическая система проверки решений с указанием ошибок;<br/> - Инструкции по решению задач с разъяснениями;<br/> - Техническая поддержка пользователей.<br/> Тренажер запросов подходит для начинающих и действующих разработчиков 1С

5010 руб.

11.02.2014    83547    113    15    

208

Подготовка к аттестации Программист Стажер 1С v8.3 Россия Бесплатно (free)

Установим основные параметры, сделаем тексты удобочитаемыми, создадим копипастом подсистемы и группы команд, настроим консоль запросов.

07.07.2025    3470    cargobird    9    

13

Подготовка к аттестации Программист Россия Бесплатно (free)

Источники информации для подготовки к Эксперту.

18.12.2024    13910    GraVVitY    61    

70

Подготовка к аттестации Программист Стажер Бесплатно (free)

Меня зовут Татьяна, в 1С-разработке я уже семь лет, а в этом году официально стала junior-специалистом. Рассказываю, как всё происходило.

10.09.2024    10604    PROSTO-1C    21    

14

Подготовка к аттестации Программист Стажер 1С v8.3 Россия Бесплатно (free)

Я Олег, разработчик 1С. Расскажу, как сдавал на сертификат Специалиста, в чём ошибся и что стоит учесть.

11.06.2024    21367    PROSTO-1C    54    

73

Подготовка к аттестации Программист Стажер 1С v8.3 Россия Бесплатно (free)

Хочу поделиться своей историей планирования обучения, подготовки к экзамену и сдачи непосредственно экзамена. Надеюсь, что это будет полезно и откинет все вопросы об экзамене.

04.06.2024    16344    anton99    50    

59
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nytlenc 09.01.19 10:42 Сейчас в теме
Минус пол балла за ПРЕДСТАВЛЕНИЕССЫЛКИ() в запросе вместо ПРЕДСТАВЛЕНИЕ()
а также за не совсем правильные параметры отбора.

у Вас

		|Склад = &Склад
		|				И Номенклатура В
		|					(ВЫБРАТЬ
		|						ТабЧасть.Номенклатура
		|					ИЗ
		|						ТабЧасть)


а нужно

		|(Склад, Номенклатура) В
		|					(ВЫБРАТЬ
                |                                               &Склад,
		|						ТабЧасть.Номенклатура
		|					ИЗ
		|						ТабЧасть)


Также минус пол балла за отсутствие индексации по полю "Номенклатура" т.к. оно используется для соединения, а так же для отбора в виртуальной таблице регистра накопления Остатки.
2. user913680 64 09.01.19 11:22 Сейчас в теме
Добрый день! Спасибо! Представление и представление ссылки - так и не понял разницу для ссылочных данных. Индексирование - видимо забыл, спасибо. Про склад - не совсем понял, в табличной части нет склада (и он там , в табличной части, вроде не подразумевается)
3. nytlenc 09.01.19 12:17 Сейчас в теме
(2)
ПРЕДСТАВЛЕНИЕССЫЛКИ() в основном используется для оптимизации в СКД, как правило принято использовать ПРЕДСТАВЛЕНИЕ(). Не уверен но могут снять на экзамене - я бы не рискнул если честно.

Склад выбирается не из табличной части, а из параметра, а вот уже номенклатура из временной таблицы ТабЧасть.
Еще раз обратите внимание.

Конструкция выглядит так
ВЫБРАТЬ &Склад, ТабЧасть.Номенклатура ИЗ ТабЧасть


соответственно выбирая подобную конструкцию вы более оптимально используете ресурсы серверной части т.к. (Склад, Номенклатура) в отличии например от Склад = &Склад И Номенклатура = &Номенклатура будет обработано сервером за одну итерацию, Вернется сразу номенклатура по нужному складу. А во втором случае за две. Сначала будут перебираться все склады, а потом уже номенклатура по ним.
Хотя если заранее измерения будут проиндексированы и переданы в нужном порядке сильно большой роли это не сыграет и как правило на это на экзамене не обращают внимание, главное не забыть отборы вообще поставить.

В целом задача решена хорошо по моему мнению.
4. user913680 64 09.01.19 15:04 Сейчас в теме
Спасибо за замечания и подробные комментарии.
5. seregaf2 26.07.19 11:59 Сейчас в теме
Кажется принципиально неверным:
не понятно, как выполняется пункт "Возможна продажа отдельных комплектующих стеллажа". Допустим купили стеллаж и продаем по комплектующим.
6. user913680 64 26.07.19 12:35 Сейчас в теме
(5) Добрый день. Закупаются только комплектующие. Продаются либо собранные из комплектующих стеллажи, либо сами комплектующие.
7. seregaf2 26.07.19 13:43 Сейчас в теме
Даже допустим что нет закупки целых стеллажей. Как человек соберет из деталей комплект? он же не сможет посмотреть сколько уже деталей в комплекте есть. У вас комплект - вообще ресурс, а не измерение (не индексируется). Запрос будет перебирать все данные регистра и подвиснет. Очень сомнительное решение.
8. seregaf2 26.07.19 13:49 Сейчас в теме
Да, можно проиндексировать ресурс. Ну хорошо)
9. user1227721 12.08.22 17:19 Сейчас в теме
Стеллаж отнесен к ресурсам, чтобы выполнить условие задачи - «одна и та же деталь не может относиться к разным стеллажам»


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