Задача 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    74454    79    14    

172

Экзамен "1С:Специалист-консультант" по внедрению подсистем управленческого учета в 1С:ERP. Полные и правильные решения билетов

Подготовка к аттестации Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

В публикации представлены только решения тех заданий, который попадаются на экзамене 1С:СК управленческого учета ERP. Благодаря данным решениям к экзамену стало подготовиться проще, чем когда-либо.

10 стартмани

08.04.2024    1576    19    user1988637    0    

11

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

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

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

18.03.2024    3959    AlOkt    4    

6

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

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

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

14.03.2024    11769    PROSTO-1C    46    

89

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

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

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

04.02.2024    6667    shuhratsj    16    

78

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

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

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

29.01.2024    14666    shuhratsj    103    

157

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

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

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

5 стартмани

01.12.2023    1694    21    Ocherkcons    0    

6

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

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

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

17.11.2023    3540    Ocherkcons    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Сейчас в теме
Стеллаж отнесен к ресурсам, чтобы выполнить условие задачи - «одна и та же деталь не может относиться к разным стеллажам»


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