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

05.01.19

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

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

Скачать файлы

Наименование Файл Версия Размер
Задача 1.13 1с Специалист по платформе 8.3:
.dt 183,78Kb
6
.dt 183,78Kb 6 Скачать

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

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

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

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

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

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

Измерения:

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

                Ресурсы:

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

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

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

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

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

 

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

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

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

Схема проведения по «новой» методике – стандартная, посмотреть можно например здесь 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С OnLine. Интерактивная обучающая программа.

Подготовка к аттестации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

1800 руб.

11.02.2014    73852    677    13    

165

Оптимизация запросов 1С - от теории к практике

Подготовка к аттестации Запросы Конфигурации 1cv8 Платные (руб)

Желаете повысить свой уровень разработки? Не знаете, как оптимизировать работу тяжелых запросов 1С? Или знаете методы оптимизации, но на практике не получаете результат? Тогда эта интерактивная обучающая программа для Вас! Оптимизация запросов прямо в программе 1С:Предприятие 8. Несколько десятков практических заданий, рассматривающих методы оптимизации на практике. От Вас требуются реальные решения - оптимизация представленных запросов. Автоматизированная система оценит Ваш запрос и представит результат проверки.

1800 руб.

06.07.2015    70810    118    9    

128

Программист 1С: как начать с нуля с минимальными затратами

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

Информация будет полезна многим начинающим программистам 1C и тем, кто хочет что-то изменить в своей жизни, испытывая жизненные трудности, с минимальными затратами.

18.03.2024    1093    AlOkt    4    

6

Как я готовилась к экзамену на Специалиста по платформе 1С

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

Готовилась три месяца, сдала с первого раза. Делюсь опытом, лайфхаками и ресурсами, по которым учила материал.

14.03.2024    9446    PROSTO-1C    46    

78

Как я стал Экспертом по технологическим вопросам за 3 месяца. Часть 2 (обновлена)

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

Мой опыт подготовки и сдачи к экзамену 1С: Эксперт по технологическим вопросам. Часть 2.

04.02.2024    5640    shuhratsj    16    

72

Как я стал Экспертом по технологическим вопросам за 3 месяца

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

Мой опыт подготовки и сдачи к экзамену 1С: Эксперт по технологическим вопросам за 3 месяца. Часть 1.

29.01.2024    13032    shuhratsj    102    

153

1С: Специалист-консультант ЗУП 8. Решения из сборника задач для подготовки к экзамену «1С:Специалист-консультант» по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“, редакция сентябрь 2023. Часть 6

Подготовка к аттестации Зарплата Кадровый учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Абонемент ($m)

Часть шестая. Делюсь сквозным решением 15-ти задач из сборника задач для подготовки к экзамену «1С:Специалист-консультант» по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“, редакция сентябрь 2023.

5 стартмани

01.12.2023    1329    16    Ocherkcons    0    

6

1С: Специалист-консультант ЗУП 8. С чего начать решение билета на экзамене? Актуальность: ноябрь 2023 года

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

Делюсь наработками из опыта подготовки к экзамену на получение сертификата 1С:Специалист-консультант по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“. Первые минуты на экзамене.

17.11.2023    2362    Ocherkcons    0    

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

у Вас

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


а нужно

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


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

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

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


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

В целом задача решена хорошо по моему мнению.
4. user913680 59 09.01.19 15:04 Сейчас в теме
Спасибо за замечания и подробные комментарии.
5. seregaf2 26.07.19 11:59 Сейчас в теме
Кажется принципиально неверным:
не понятно, как выполняется пункт "Возможна продажа отдельных комплектующих стеллажа". Допустим купили стеллаж и продаем по комплектующим.
6. user913680 59 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 Сейчас в теме
Стеллаж отнесен к ресурсам, чтобы выполнить условие задачи - «одна и та же деталь не может относиться к разным стеллажам»


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