8.х Комплектация Номенклатуры

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем MevMix, 27 май 2011.

  1. TopicStarter Overlay
    MevMix
    Offline

    MevMix Опытный в 1С

    Регистрация:
    21 фев 2011
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Доброго всем дня!!!
    Конфиг сам разрабатываю!!!
    Документ Комплектация Номенклатуры.
    Пытался разобраться по аналогии с конфигом "Управления Торговли 10.3",
    но пока что знаний не хватило

    Номенклатуру из Табличной части списывает все ОК,
    Но как организовать поступление данной единицы(комплекта)

    ПО УТ10.3 я понял что это реквизит, как и количество и все остальное, что находиться на панели "Комплект".

    Подскажите плиз
    Как его провести по регистрам и положить единицей товара на склад

    Help!!!!
  2. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    обработкой проведения... создавай движения : списывай товар(вид движения расход) , приходуй комплект (вид движения приход)
  3. TopicStarter Overlay
    MevMix
    Offline

    MevMix Опытный в 1С

    Регистрация:
    21 фев 2011
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    То что ОбработкаПроведения это понятно
    Затык на Комплект(вид движения приход)
    Код:
    Процедура ОбработкаПроведения(Отказ, Режим)
    
    СтруктураШапкиДокумента = ОбщегоНазначения.СформироватьСтруктуруШапкиДокумента(ЭтотОбъект);
    Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(СтруктураШапкиДокумента);
    ПроверитьЗаполнениеШапки(СтруктураШапкиДокумента, Отказ, Заголовок);
    
    СтруктураПолей = Новый Структура;
    СтруктураПолей.Вставить("Номенклатура");
    СтруктураПолей.Вставить("Количество");
    ЗаполнениеДокументов.ПроверитьЗаполнениеТабличнойЧасти(ЭтотОбъект, "ПереченьНоменклатуры", СтруктураПолей, Отказ, Заголовок);
    
    
    Если НЕ Отказ Тогда
    Запрос = Новый Запрос;
    Если Режим = РежимПроведенияДокумента.Оперативный Тогда
    Запрос.Текст  =
    "ВЫБРАТЬ
    |    КомплектацияНоменклатурыПереченьНоменклатуры.Номенклатура,
    |    КомплектацияНоменклатурыПереченьНоменклатуры.Количество,
    |    КомплектацияНоменклатурыПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    |    ОстаткиТоваровОстатки.КоличествоОстаток,
    |    ОстаткиТоваровОстаткиНаСкладе.КоличествоОстаток КАК КоличествоОстатокНаСкладе
    |ИЗ
    |    Документ.КомплектацияНоменклатуры.ПереченьНоменклатуры КАК КомплектацияНоменклатурыПереченьНоменклатуры
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
    |                &МоментВремени,
    |                Номенклатура В (&СписокНоменклатурыДокумента)
    |                    И Склад = &СкладВДокументе) КАК ОстаткиТоваровОстаткиНаСкладе
    |        ПО КомплектацияНоменклатурыПереченьНоменклатуры.Номенклатура = ОстаткиТоваровОстаткиНаСкладе.Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
    |                &МоментВремени,
    |                Номенклатура В (&СписокНоменклатурыДокумента)
    |                    И Склад = &СкладВДокументе) КАК ОстаткиТоваровОстатки
    |        ПО КомплектацияНоменклатурыПереченьНоменклатуры.Номенклатура = ОстаткиТоваровОстатки.Номенклатура
    |ГДЕ
    |    КомплектацияНоменклатурыПереченьНоменклатуры.Ссылка = &Ссылка
    |
    |ДЛЯ ИЗМЕНЕНИЯ
    |    РегистрНакопления.ОстаткиТоваров.Остатки";
    Запрос.УстановитьПараметр("СкладВДокументе", Склад);
    Иначе
    Запрос.Текст  =
    "ВЫБРАТЬ
    |    КомплектацияНоменклатурыПереченьНоменклатуры.Номенклатура,
    |    КомплектацияНоменклатурыПереченьНоменклатуры.Количество,
    |    КомплектацияНоменклатурыПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    |    ОстаткиТоваровОстатки.КоличествоОстаток
    |ИЗ
    |    Документ.КомплектацияНоменклатуры.ПереченьНоменклатуры КАК КомплектацияНоменклатурыПереченьНоменклатуры
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки
    |        ПО КомплектацияНоменклатурыПереченьНоменклатуры.Номенклатура = ОстаткиТоваровОстатки.Номенклатура
    |
    |ДЛЯ ИЗМЕНЕНИЯ
    |    РегистрНакопления.ОстаткиТоваров.Остатки"
    КонецЕсли;
    Запрос.УстановитьПараметр("СкладВДокументе", Склад);
    Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
    Запрос.УстановитьПараметр("СписокНоменклатурыДокумента", ПереченьНоменклатуры.ВыгрузитьКолонку("Номенклатура"));
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    
    ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
    
    Пока ВыборкаРезультатаЗапроса.Следующий() Цикл
    // Проверить остаток при оперативном проведении.
    Если Режим = РежимПроведенияДокумента.Оперативный Тогда
    Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Номенклатура Тогда
    Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null, 0, ВыборкаРезультатаЗапроса.КоличествоОстаток);
    Если Остаток < ВыборкаРезультатаЗапроса.Количество или Остаток = 0 Тогда
    Сообщить("Недостаточное количество на склдаде "+Склад+" :"+СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура) + ", в наличии только " + Остаток);
    Отказ = Истина;
    Возврат;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Номенклатура Тогда
    
    Движение = Движения.ОстаткиТоваров.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура;
    Движение.Склад = Склад;
    Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
    
    КонецЕсли;
    
    КонецЦикла;
    Движения.ОстаткиТоваров.Записать();
    КонецЕсли;
    КонецПроцедуры
    
    
    
    ВыборкаРезульата это номенклатура из Табличной Части, а как реквизит сюда добавить Комплект
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    комплект - виртуальная единица, все движения по комплектующим делаются.
  5. TopicStarter Overlay
    MevMix
    Offline

    MevMix Опытный в 1С

    Регистрация:
    21 фев 2011
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    можно примером это показать
    Спасибо!!!
  6. TopicStarter Overlay
    MevMix
    Offline

    MevMix Опытный в 1С

    Регистрация:
    21 фев 2011
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Как все просто оказалось
    Код:
    Движение = Движения.ОстаткиТоваров.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Номенклатура = Комплект;
    Движение.Склад = Склад;
    Движение.Количество = Количество;
    
    
    Хотелось бы еще один вопросик задать
    Как то что находиться в табличной части
    Вся номенклатура собрать в одну строчку


    Типа -> Болт(2), Гайка(2)

    соответственно первое номенклатура, второе количество ее из таб.части
  7. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    У таблицы значений есть метод "Свернуть()". Не помню, есть ли он у таб части. Посмотрите в синтакс-помощнике...
    Код:
    Таблица.Свернуть("Номенклатура", "Колчество");
    
    
    По первому параметру будет группироваться (Номенклатура), по второму (Количество) - суммироваться.

    Или я не так понял???
  8. TopicStarter Overlay
    MevMix
    Offline

    MevMix Опытный в 1С

    Регистрация:
    21 фев 2011
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26

    вообщем в Табличную часть я добавляю номенклатуру, и хочу
    чтоб все что находиться в табличной части, было написано в текстовом поле или
    в надписи, через запятую = Номенклатура(Количество), Номенклатура1(Количество)
  9. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    Что-то вроде этого:
    Код:
    Надпись = "";
    Для Каждого Строка из ТЧ Цикл
    Надпись = Надпись + " "+ Строка(Строка.Номенклатура)+ "(" + Строка.Количество+ "), ";
    КонецЦикла;
    Сообщить(Надпись);
    
    

Поделиться этой страницей