Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 ноя 2024, 07:32

Списать комплектующие

Автор proofet, 13 апр 2011, 20:46

0 Пользователей и 1 гость просматривают эту тему.

proofet

Задача следующая :

--В справочнике Номенклатура созданно две группы Установки и комплектующие.
-- Документ "КомплектующиеНоменклатуры" (реквизит "Установка", ТЧ "комплектующие" с реквизитами Деталь и Количество) создает записи в регистре сведений "СоставУстановок" Где измерения : "Установки" и "Комплектующие" типа Справочник.Номенклатура.... тем самым осуществляю уникальность комплектующих у установок.
--Далее в документе Расходная накладная, если указанна в колонке  номенклатура "Установка 1" нужно ссылаясь на регистр сведений списывать все Комплектующие этой установки.

p.s. такой же механизм в УТ, но никак не могу разобраться  что там  к чему...слишком много лишнего
(я учебник))

вот код расходной накладной:


Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   Для Каждого ТекСтрокаТовары Из Товары Цикл
      // регистр ОстаткиНоменклатуры Расход
            
      Запрос = Новый Запрос;
      Запрос.Текст =   
      "ВЫБРАТЬ
      |   РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура,
      |   РасходнаяНакладнаяТовары.ТипНоменклатуры,
      |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоНаСкладе,
      |   СУММА(РасходнаяНакладнаяТовары.Количество) КАК КоличествоВДокументе,
      |   СоставУстановок.Установки КАК Установка,
      |   СоставУстановок.Комплектующие КАК Деталь
      |ИЗ
      |   Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
      |      ПО РасходнаяНакладнаяТовары.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставУстановок КАК СоставУстановок
      |      ПО РасходнаяНакладнаяТовары.Номенклатура = СоставУстановок.Комплектующие
      |         И РасходнаяНакладнаяТовары.Номенклатура = СоставУстановок.Установки
      |ГДЕ
      |   РасходнаяНакладнаяТовары.Ссылка = &Ссылка
      |
      |СГРУППИРОВАТЬ ПО
      |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0),
      |   РасходнаяНакладнаяТовары.Номенклатура,
      |   РасходнаяНакладнаяТовары.ТипНоменклатуры,
      |   СоставУстановок.Установки,
      |   СоставУстановок.Комплектующие";
      
      Запрос.УстановитьПараметр("Ссылка",Ссылка);
      Результат = Запрос.Выполнить();
      Выборка = Запрос.Выполнить().Выбрать();
      Пока Выборка.Следующий() Цикл
         Если Выборка.КоличествоВДокументе > Выборка.КоличествоНаСкладе Тогда
            Сообщить("На складе не хватает " + (Выборка.КоличествоВДокументе - Выборка.КоличествоНаСкладе)+" единиц "+Выборка.Номенклатура);
           Отказ=Истина;
        КонецЕсли;
        Если Выборка.Номенклатура = Выборка.Установка Тогда   

???????????????????????????????????????????????????????????
           КонецЕсли    
//////         // обход нужно выполнить регистра сведений с определенными условиями но никак это в коде реализовать не могу
      КонецЦикла; 
      
      Движение = Движения.ОстаткиНоменклатуры.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.Номенклатура = Выборка.Номенклатура;
      Движение.Количество = Выборка.КоличествоВДокументе;

      
      
   КонецЦикла;
   
   
   
   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры




Помогите пожалуйста ! :trhregerhg:

proofet


proofet

Ммм...можно поподробнее пожалуйста про эту вторую ТЧ...немного не понял вас

A_l_e_x_777

Цитата: proofet от 13 апр 2011, 20:46
Задача следующая :

--В справочнике Номенклатура созданно две группы Установки и комплектующие.
-- Документ "КомплектующиеНоменклатуры" (реквизит "Установка", ТЧ "комплектующие" с реквизитами Деталь и Количество) создает записи в регистре сведений "СоставУстановок" Где измерения : "Установки" и "Комплектующие" типа Справочник.Номенклатура.... тем самым осуществляю уникальность комплектующих у установок.
--Далее в документе Расходная накладная, если указанна в колонке  номенклатура "Установка 1" нужно ссылаясь на регистр сведений списывать все Комплектующие этой установки.

p.s. такой же механизм в УТ, но никак не могу разобраться  что там  к чему...слишком много лишнего
(я учебник))

вот код расходной накладной:


Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   Для Каждого ТекСтрокаТовары Из Товары Цикл
      // регистр ОстаткиНоменклатуры Расход
            
      Запрос = Новый Запрос;
      Запрос.Текст =   
      "ВЫБРАТЬ
      |   РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура,
      |   РасходнаяНакладнаяТовары.ТипНоменклатуры,
      |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоНаСкладе,
      |   СУММА(РасходнаяНакладнаяТовары.Количество) КАК КоличествоВДокументе,
      |   СоставУстановок.Установки КАК Установка,
      |   СоставУстановок.Комплектующие КАК Деталь
      |ИЗ
      |   Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
      |      ПО РасходнаяНакладнаяТовары.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставУстановок КАК СоставУстановок
      |      ПО РасходнаяНакладнаяТовары.Номенклатура = СоставУстановок.Комплектующие
      |         И РасходнаяНакладнаяТовары.Номенклатура = СоставУстановок.Установки
      |ГДЕ
      |   РасходнаяНакладнаяТовары.Ссылка = &Ссылка
      |
      |СГРУППИРОВАТЬ ПО
      |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0),
      |   РасходнаяНакладнаяТовары.Номенклатура,
      |   РасходнаяНакладнаяТовары.ТипНоменклатуры,
      |   СоставУстановок.Установки,
      |   СоставУстановок.Комплектующие";
      
      Запрос.УстановитьПараметр("Ссылка",Ссылка);
      Результат = Запрос.Выполнить();
      Выборка = Запрос.Выполнить().Выбрать();
      Пока Выборка.Следующий() Цикл
         Если Выборка.КоличествоВДокументе > Выборка.КоличествоНаСкладе Тогда
            Сообщить("На складе не хватает " + (Выборка.КоличествоВДокументе - Выборка.КоличествоНаСкладе)+" единиц "+Выборка.Номенклатура);
           Отказ=Истина;
        КонецЕсли;
        Если Выборка.Номенклатура = Выборка.Установка Тогда   

???????????????????????????????????????????????????????????
           КонецЕсли    
//////         // обход нужно выполнить регистра сведений с определенными условиями но никак это в коде реализовать не могу
      КонецЦикла; 
      
      Движение = Движения.ОстаткиНоменклатуры.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.Номенклатура = Выборка.Номенклатура;
      Движение.Количество = Выборка.КоличествоВДокументе;

      
      
   КонецЦикла;
   
   
   
   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры




Помогите пожалуйста ! :trhregerhg:

Смог разобраться ?... стою сейчас перед такой делемой.....

Теги:

Похожие темы (2)

Рейтинг@Mail.ru

Поиск