7.7 АвтоЗаполнение

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем sashadeo, 9 фев 2011.

  1. TopicStarter Overlay
    sashadeo
    Offline

    sashadeo Опытный в 1С

    Регистрация:
    29 дек 2010
    Сообщения:
    379
    Симпатии:
    0
    Баллы:
    26
    Добрый день Ппопытался реализовать авто заполнение Документа(заполняет поле товар в документе из справочника номенклатура)

    Код:
    Процедура АвтЗап() 
    СпрНом = СоздатьОбъект('Справочник.Номенклатура');
    ДокПлан = СоздатьОбъект('Документ.План');
    Пока  СпрНом.ПолучитьЭлимент(1)=1     Цикл
    ДокПлан.НоваяСтрока(); 
    ДокПлан.Товар=СпрНом; 
    ДокПлан.Записать();
    КонецЦикла;
    
    КонецПроцедуры
    
    
    Пишет что СпрНом = СоздатьОбъект('Справочники.Номенклатура');
    {Документ.План.Форма.Модуль(2)}: Неудачная попытка создания объекта ( . . )
  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    В коде у вас как написано?
  3. TopicStarter Overlay
    sashadeo
    Offline

    sashadeo Опытный в 1С

    Регистрация:
    29 дек 2010
    Сообщения:
    379
    Симпатии:
    0
    Баллы:
    26
    Там и там написано справочник, просто нечайно и дописал..
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Семен Семеныч (с)

    Кавычки зачем одинарные?
    Код:
    СпрНом = СоздатьОбъект("Справочник.Номенклатура");
    
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Записать вынести из цикла надо)))
  6. TopicStarter Overlay
    sashadeo
    Offline

    sashadeo Опытный в 1С

    Регистрация:
    29 дек 2010
    Сообщения:
    379
    Симпатии:
    0
    Баллы:
    26
    Заменил на одинарные...
    Ошибка такая же....
    СпрНом = СоздатьОбъект("Справочники.Номенклатура");
    {Документ.План.Форма.Модуль(2)}: Неудачная попытка создания объекта (Справочники.Номенклатура)
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    СпрНом = СоздатьОбъект("Справочник.Номенклатура");
    
    
    Справочник - в единственном числе а не в множественном
  8. Hawk Eye
    Offline

    Hawk Eye Гость Гость


    если ты заполняешь документ из его собственной формы, а судя по всему ты именно так и заполняешь, создавать объект - не надо, и обращаться к реквизитам текущего документа надо непосредственно.
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не думаю... Нет позиционирования на конкретный доркумент
  10. Hawk Eye
    Offline

    Hawk Eye Гость Гость


    в (1) "Документ.План.Форма.Модуль(2)"
    вряд-ли он заполняет документ из другого документа, но даже если он делает так, то у него вообще ничего не отработает потому что нет создания нового документа....
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вопрос был про неудачную попытку создать объект. Человек учится. Но по поводу нового документа - тут вы правы
  12. TopicStarter Overlay
    sashadeo
    Offline

    sashadeo Опытный в 1С

    Регистрация:
    29 дек 2010
    Сообщения:
    379
    Симпатии:
    0
    Баллы:
    26
    Я немножко не полно объяснил....
    Т.е я создал ЖурналПлна(В конфигураторе)
    Затем Создал документ План(В конфигураторе и привязал Документ к журналу)
    Далее Захожу в Журнал План Нажитмаю Инсерт Добовляется новый документ(в нем три колонки Товар(Ссылка на спрНоменкл), кол,сумма)
    Я в ручную заполняю каждый товар, для облегчения сделал кнопку авто заполнение при нажатии которой идет авто заполнение столбца товар Код:
    Код:
    
    Процедура АвтЗап() 
    СпрНом = СоздатьОбъект("Справочник.Номенклатура");
    ДокПлан = СоздатьОбъект("Документ.План"); 
    СпрНом.ВыбратьЭлементы();
    Пока  СпрНом.ПолучитьЭлемент()=1     Цикл 
    Сообщить(СпрНом.ТекущийЭлемент());
    ДокПлан.ВыбратьДокументы();
    ДокПлан.ПолучитьДокумент();
    Если  (ДокПлан.Выбран()=1) Тогда  
    Сообщить("Документ Получен");
    ДокПлан.НоваяСтрока();
    ДокПлан.Товар=СпрНом.ТекущийЭлемент();  
    Иначе
    Сообщить("Не Получен");
    КонецЕсли;  	
    КонецЦикла;
    
    ДокПлан.Записать();
    КонецПроцедуры
    
    
    
    после исполнения данного кода Внизу в сообщении отображается весь список продукции, и пишет Документ получен....
    А в документе не одной записи...

    Подскожите начинающему программисту что не так...
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Так АвтоЗап() вызывается из журнала или документа?
  14. TopicStarter Overlay
    sashadeo
    Offline

    sashadeo Опытный в 1С

    Регистрация:
    29 дек 2010
    Сообщения:
    379
    Симпатии:
    0
    Баллы:
    26
    АвтоЗап() Вызывается при нажатии на кнопку.
    Открываю журнал План, Создаю документ в нем, захожу в него, и в нем кнопка автозаполнения(При нажатии вызывает процедуру(АвтоЗап() ))
  15. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если я правильно понял вы хотите в документ ПЛАН добавить товар из других документов ПЛАН за определенный период. Как бы сделать общий.. Правильно?
  16. TopicStarter Overlay
    sashadeo
    Offline

    sashadeo Опытный в 1С

    Регистрация:
    29 дек 2010
    Сообщения:
    379
    Симпатии:
    0
    Баллы:
    26
    Немножко не так.
    Я создаю документ План на каждый месяц, и мне надо что бы в этом документе я мог добавлять в многосточную часть товар, из справочника Номенклатура,
    Или при необходимости нажать на кнопку автозаполнение и в документе многострочная часть автоматически заполнялась путем перебора элементов в справочнике Номенклатура.
  17. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Т.е. Все элементы попали в т.ч. документа а вы бы потом удалили лишнее?
  18. TopicStarter Overlay
    sashadeo
    Offline

    sashadeo Опытный в 1С

    Регистрация:
    29 дек 2010
    Сообщения:
    379
    Симпатии:
    0
    Баллы:
    26
    Т.е в документе у меня 2-а варианта событий, либо я в табличную часть забиваю вручную каждую единицу товара(т.е при необходимости занесения только некоторых товаров), либо нажимаю на кнопку и табличная часть заполняется автоматически.
  19. Hawk Eye
    Offline

    Hawk Eye Гость Гость


    о чём я и говорю, тебе с утра )))
    Код:
    Процедура АвтЗап() 
    СпрНом = СоздатьОбъект("Справочник.Номенклатура");
    СпрНом.ВыбратьЭлементы();
    Пока  СпрНом.ПолучитьЭлемент()=1     Цикл 
    Сообщить(СпрНом.ТекущийЭлемент());
    НОваяСтрока();
    ТОвар = СпрНом.ТекущийЭлемент();
    КонецЦикла;
    
    Записать();
    КонецПроцедуры
    
    
    
    если находишься в самом документе, объект создавать не нужно.
    [warn="Просьба"]
    не забываем пользоваться тегами!
    [/warn]
  20. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ага... И помеченные на удаление и группы - все валим в одну кучу
    Код:
    Процедура АвтЗап()        
    СпрНом = СоздатьОбъект("Справочник.Номенклатура");       
    СпрНом.ВыбратьЭлементы(); 
    Пока  СпрНом.ПолучитьЭлемент()=1     Цикл        
    //Сообщить(СпрНом.ТекущийЭлемент()); так быстрее
    Если (СпрНом.ЭтоГруппа()=1)ИЛИ(СпрНом.ПометкаУдаления()=1) Тогда
    Продолжить;
    КонецЕсли;
    НОваяСтрока();
    ТОвар = СпрНом.ТекущийЭлемент();
    КонецЦикла;
    //Записать(); - здесь не нужно т.к. запишем при выходе из документа
    //да и чревато... вдруг случайно нажали в уже готовом документе - придется чистить
    КонецПроцедуры
    
    
    
    
    

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