Добрый день. В обработке есть ТЧ из которой программно заполняется документ "ЗаказНаПроизводство" Как получить основную спецификацию из регистра сведений ""ОсновныеСпецификации" и ввести в документ?
НовДок = Документы.ЗаказНаПроизводство2_2.СоздатьДокумент();
НовДок.Дата = ТекущаяДата();
НовДок.Организация = Справочники.Организации.НайтиПоНаименованию("Организация");
НовДок.Подразделение = Справочники.СтруктураПредприятия.НайтиПоКоду("00-000001");
НовДок.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СобственноеПроизводство;
НовДок.ЗаказПодДеятельность = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
НовДок.Приоритет = Справочники.Приоритеты.НайтиПоНаименованию("Средний");
НовДок.Статус = Перечисления.СтатусыЗаказовНаПроизводство2_2.Формируется;
Склад = Справочники.Склады.НайтиПоНаименованию("Производственный цех (Склад)");
НовДок.НачатьНеРанее = НачалоДня(ТекущаяДата());
НовДок.Ответственный = ПараметрыСеанса.ТекущийПользователь;
НовДок.РазмещениеВыпуска = Перечисления.СпособыПривязкиОперацийПроизводства.КНачалу;
Для Каждого ТекущаяСтрока Из Объект.Продукция
Цикл
Если ТекущаяСтрока.КЗаказу Тогда
нс = НовДок.Продукция.добавить();
нс.Номенклатура = ТекущаяСтрока.НоменклатураВЭтап;
нс.Характеристика = ТекущаяСтрока.ХарактеристикаВЭтап;
нс.КоличествоУпаковок = ТекущаяСтрока.КоличествоВЭтап;
нс.Количество = ТекущаяСтрока.КоличествоВЭтап;
нс.Склад = Склад;
//нс.Спецификация = ТекущаяСтрока.Спецификация;
КонецЕсли;
КонецЦикла;
ПоказатьПо теме из базы знаний
- Расчет себестоимости спецификации по типу цен. Разузлование - дерево с ценами и количеством
- Развернуть дерево спецификаций быстро
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- Создание наборов из спецификаций в 1С:УНФ
- Интеграция с API WB (Wildberries). Создание карточки товара (спецификации)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(11)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
| СтруктураПредприятия.Ссылка КАК Подразделение
|ПОМЕСТИТЬ ПроизводственныеПодразделения
|ИЗ
| Справочник.СтруктураПредприятия КАК СтруктураПредприятия
|ГДЕ
| НЕ СтруктураПредприятия.ПометкаУдаления
| И СтруктураПредприятия.ПроизводственноеПодразделение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СтруктураПредприятия.Ссылка
|ИЗ
| Справочник.СтруктураПредприятия КАК СтруктураПредприятия
|ГДЕ
| НЕ СтруктураПредприятия.ПометкаУдаления
| И СтруктураПредприятия.ПодразделениеДиспетчер";
Запрос.Выполнить(); //ПроизводственныеПодразделения для получения спецификации подразделение не должно быть пустым
//ТаблицаДанных = Запрос.Выполнить().Выгрузить(); //ТаблицаДанных получить запросом или самому заполнить
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВЫРАЗИТЬ(Таблица.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| ВЫРАЗИТЬ(Таблица.Характеристика КАК Справочник.ХарактеристикиНоменклатуры) КАК Характеристика,
| ВЫРАЗИТЬ(Таблица.НачалоПроизводства КАК ДАТА) КАК НачалоПроизводства
|ПОМЕСТИТЬ ТаблицаДокумента
|ИЗ
| &КоллекцияДанных КАК Таблица
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.НачалоПроизводства КАК НачалоПроизводства,
| ПроизводственныеПодразделения.Подразделение КАК Подразделение
|ПОМЕСТИТЬ СписокНоменклатуры
|ИЗ
| ТаблицаДокумента КАК Таблица,
| ПроизводственныеПодразделения КАК ПроизводственныеПодразделения
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|УНИЧТОЖИТЬ ТаблицаДокумента";
Запрос.УстановитьПараметр("КоллекцияДанных", ТаблицаДанных);
СтруктураКлючаПоискаСтроки = Новый Структура("Номенклатура,
|Характеристика,
|НачалоПроизводства",
"Номенклатура",
"Характеристика",
"НачалоПроизводства");
УправлениеДаннымиОбИзделиях.ЗаполнитьОсновныеСпецификацииВКоллекции(Запрос, ТаблицаДанных, СтруктураКлючаПоискаСтроки);
Показать
(3) Не совсем пока понимаю как это сделать. Есть пример?
Так явно не правильно, да и параметры так в запрос не передаются. РС не периодический.
НовДок = Документы.ЗаказНаПроизводство2_2.СоздатьДокумент();
НовДок.Дата = ТекущаяДата();
НовДок.Организация = Справочники.Организации.НайтиПоНаименованию("Организация");
НовДок.Подразделение = Справочники.СтруктураПредприятия.НайтиПоКоду("00-000001");
НовДок.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СобственноеПроизводство;
НовДок.ЗаказПодДеятельность = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
НовДок.Приоритет = Справочники.Приоритеты.НайтиПоНаименованию("Средний");
НовДок.Статус = Перечисления.СтатусыЗаказовНаПроизводство2_2.Формируется;
Склад = Справочники.Склады.НайтиПоНаименованию("Производственный цех (Склад)");
НовДок.НачатьНеРанее = НачалоДня(ТекущаяДата());
НовДок.Ответственный = ПараметрыСеанса.ТекущийПользователь;
НовДок.РазмещениеВыпуска = Перечисления.СпособыПривязкиОперацийПроизводства.КНачалу;
Для Каждого ТекущаяСтрока Из Объект.Продукция
Цикл
Если ТекущаяСтрока.КЗаказу Тогда
нс = НовДок.Продукция.добавить();
нс.Номенклатура = ТекущаяСтрока.НоменклатураВЭтап;
нс.Характеристика = ТекущаяСтрока.ХарактеристикаВЭтап;
нс.КоличествоУпаковок = ТекущаяСтрока.КоличествоВЭтап;
нс.Количество = ТекущаяСтрока.КоличествоВЭтап;
нс.Склад = Склад;
//нс.Спецификация = ТекущаяСтрока.Спецификация;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеСпецификации.Номенклатура,
| ОсновныеСпецификации.Характеристика,
| ОсновныеСпецификации.Спецификация
|ИЗ
| РегистрСведений.ОсновныеСпецификации КАК ОсновныеСпецификации
|ГДЕ
| ОсновныеСпецификации.Номенклатура = &НоменклатураВЭтап
| И ОсновныеСпецификации.Характеристика = &ХарактеристикаВЭтап";
Запрос.УстановитьПараметр("НоменклатураВЭтап", Объект.Продукция.НоменклатураВЭтап);
Запрос.УстановитьПараметр("ХарактеристикаВЭтап", Объект.Продукция.ХарактеристикаВЭтап);
Выборка = Запрос.Выполнить().Выбрать();;
Пока Выборка.Следующий() Цикл
нс.Спецификация = Выборка.Спецификация;
КонецЦикла;
ПоказатьТак явно не правильно, да и параметры так в запрос не передаются. РС не периодический.
Вы сформируйте в запросе временную таблицу с номенклатурой и характеристикой (их можно получить из коллекции Объект.Продукция в таблицу значений), потом сделайте отбор по этой временной таблице в регистре сведений (с помощью оператора В, получите связку для данного документа Номенклатура-Характеристика-ОсновнаяСпецификация, ну а дальше или обходите выборку и находите строки в ТЧ документа и изменяете их, или наоборот ...
(6)
Типа того
Типа того
ТЗ = Объект.Продукция.Выгрузить(,"Номенклатура,Характеристика");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТЗ.Номенклатура КАК Номенклатура,
| ТЗ.Характеристика КАК Характеристика
|ПОМЕСТИТЬ втТЗ
|ИЗ
| &ТЗ КАК ТЗ
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| втТЗ.Номенклатура КАК Номенклатура,
| втТЗ.Характеристика КАК Характеристика,
| ЕСТЬNULL(ОсновнаяСпецификация.Спецификация, ЗНАЧЕНИЕ(Справочник.Спецификация.ПустаяСсылка)) КАК Спецификация
|ИЗ
| втТЗ КАК втТЗ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОсновнаяСпецификация КАК ОсновнаяСпецификация
| ПО втТЗ.Номенклатура = ОсновнаяСпецификация.Номенклатура
| И втТЗ.Характеристика = ОсновнаяСпецификация.Спецификация
|ГДЕ
| (ОсновнаяСпецификация.Номенклатура, ОсновнаяСпецификация.Характеристика) В
| (ВЫБРАТЬ
| вт.Номенклатура,
| вт.Характеристика
| ИЗ
| втТЗ КАК вт)";
Запрос.УстановитьПараметр("ТЗ",ТЗ);
Выборка = Запрос.Выполнить().Выбрать();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот