7.7 как установить ШТ (штуки) на весь справочник

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

  1. TopicStarter Overlay
    trioka
    Offline

    trioka Опытный в 1С

    Регистрация:
    21 окт 2009
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    не сработала обработка добавления товара, видимо из за того что пользователь был неопределен. (новая база)
    получился справочник номенклатуры, но ее продать нельзя. пишет, что единицы разные.
    когда ввел пользователя. обработка работает как надо. Но надо в уже существующий справчник добавить ШТ и коэффициент 1
    Код:
        СпрО=СоздатьОбъект("Справочник.ОКЕИ");
    Если СпрО.НайтиПоКоду("796",0)=1 Тогда
    ТекЕд=СпрО.ТекущийЭлемент(); 
    КонецЕсли;
    
    
    Код:
        вхШк=Excel.Cells(Инд, 1).Value;
    вхКол=Excel.Cells(Инд, 2).Value;
    вхНаименование=СокрЛП(Excel.Cells(Инд, 3).Value);
    вхЦена=Excel.Cells(Инд, 4).Value;
    Сообщить(вхНаименование);
    Если ПустоеЗначение(вхШк) = 1 Тогда
    Продолжить;
    КонецЕсли;
    Если СпрН.НайтиПоРеквизиту("Артикул",вхШк,1)=0 Тогда 
    Сообщить("Новый элемент: "+вхШк+"  "+вхНаименование,"!");  
    Кво = Кво + 1;
    СпрН.Новый();
    СпрН.Наименование=вхНаименование;
    СпрН.ПолнНаименование=вхНаименование;
    СпрН.Артикул=вхШк;
    СпрН.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Прочее;
    СпрН.Записать();
    ТекН=СпрН.ТекущийЭлемент();
    //глВернутьЦену(ТекН, ТцРозн, НачГода(РабочаяДата()),вхЦена,,ТекВал);
    СпрЕ.ИспользоватьВладельца(ТекН);
    СпрЕ.Новый();
    СпрЕ.ОКЕИ = ТекЕд;
    СпрЕ.Коэффициент = 1;
    СпрЕ.ШтрихКод = вхШк;
    СпрЕ.Записать();
    
    
    проблема в том что я знаю как сделать поиск по реквизиту. но не знаю как сделать перебор всех и обновление Единиц
  2. 1Cman
    Offline

    1Cman Опытный в 1С

    Регистрация:
    25 июл 2009
    Сообщения:
    308
    Симпатии:
    0
    Баллы:
    26
    ТиС? Что за объекты СпрН? Номенклатура? Где определение объекта?
  3. TopicStarter Overlay
    trioka
    Offline

    trioka Опытный в 1С

    Регистрация:
    21 окт 2009
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    да я код просто для удостоверения что я Единицу определил, мог бы и не вставлять.
    код работает. все вгружает, и Штуки ставит, просто пока пользователя не определил, видимо справочник Единиц был пуст.
    вопрос в том как СЕЙЧАС всем сделать ШТУКИ, после ошибки,
    неохота заново вгружать, я думаю есть простой способ.

    но если вам так надо. то вот.
    Код:
    Процедура Сформировать()        
    СпрН=СоздатьОбъект("Справочник.Номенклатура");
    СпрЦ=СоздатьОбъект("Справочник.Цены");
    СпрЦ.ИспользоватьДату(НачГода(РабочаяДата()));
    СпрЕ=СоздатьОбъект("Справочник.Единицы");
    
    
  4. 1Cman
    Offline

    1Cman Опытный в 1С

    Регистрация:
    25 июл 2009
    Сообщения:
    308
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ЗаполнитьЕдиницы()
    Единицы = СоздатьОбъект("Справочник.Единицы");
    Номенклатура = СоздатьОбъект("Справочник.Номенклатура");
    Номенклатура.ВыбратьЭлементы();
    ОКЕИ = СоздатьОбъект("Справочник.ОКЕИ");
    Штука = ОКЕИ.НайтиПоКоду("796");
    
    Пока Номенклатура.ПолучитьЭлемент() = 1 Цикл
    Если Номенклатура.ЭтоГруппа() = 1 Тогда
    Продолжить;
    КонецЕсли;
    Если ПустоеЗначение(Номенклатура.БазоваяЕдиница) = 1 Тогда
    Единицы.Использоватьвладельца(Номенклатура.ТекущийЭлемент());
    Единицы.Новый();
    Единицы.ОКЕИ = Штука;
    Единицы.Коэффициент = 1;
    Единицы.Записать();
    Номенклатура.БазоваяЕдиница = Единицы.ТекущийЭлемент();
    Номенклатура.Записать();
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
    
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Маленькое уточнение. В ТиС ДВЕ единицы и обе должны быть заполнены! Даже если используете только базовую. Так что код буде выглядеть так:

    Код:
    Единицы.Новый();			
    Единицы.ОКЕИ = Штука;		
    Единицы.Коэффициент = 1;		
    Единицы.Записать();		
    Номенклатура.БазоваяЕдиница = Единицы.ТекущийЭлемент();
    Номенклатура.ОсновнаяЕдиница= Единицы.ТекущийЭлемент();
    Номенклатура.Записать();
    
    
  6. 1Cman
    Offline

    1Cman Опытный в 1С

    Регистрация:
    25 июл 2009
    Сообщения:
    308
    Симпатии:
    0
    Баллы:
    26
    С утра посмотрел, нашел еще одну ошибку, если что:
    Код:
    Если ОКЕИ.НайтиПоКоду("796") = 1 Тогда
    Штука = ОКЕИ.ТекущийЭлемент();
    КонецЕсли;
    
    
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Хм... Тоже проглядел. Но тогда уж так:
    Код:
    Если ОКЕИ.НайтиПоКоду("796") = 1 Тогда    
    Штука = ОКЕИ.ТекущийЭлемент();
    Иначе
    Штука=ПолучитьПустоеЗначение("Справочник.ОКЕИ");
    КонецЕсли;
    
    
    
    иначе если условие не сработает - вылетит в ошибку из-за неопределенности переменной.
  8. TopicStarter Overlay
    trioka
    Offline

    trioka Опытный в 1С

    Регистрация:
    21 окт 2009
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    я прошу прощения, код на самом деле нужен был весь получается. ваши 3 последних дополнения уже были реализованы (Основная и базовая и условие проверки 796)

    я тут посмотрел, что в справочнике Единиц уже есть ШТ и коэф. но он не отображается в продаже при подборе. поэтому видимо обработка просто моргает на секунду и ничего не происходит.
    ибо штуки уже есть.
    я выслал вам в личку полную базу. 8 мег. если "код в студию", я конечно выложу, но он не покажет всей проблемы.
    я думаю мне придётся подправить ПРАЙС ЛИСТ и выгрузить с артикулом и ценами ЗАК и РОЗН.
    и снова вгрузить в чистую базу
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    ТЬФУ блин! Совсем старый стал. У вас просто не указан ВЛАДЕЛЕЦ. Справочник единиц - подчиненный.
    Сделайте так:

    Код:
    Единицы.Новый();
    Единицы.Владелец=Номенклатура.ТекущийЭлемент();
    Единицы.ОКЕИ = Штука;		
    Единицы.Коэффициент = 1;		
    Единицы.Записать();		
    Номенклатура.БазоваяЕдиница = Единицы.ТекущийЭлемент();
    Номенклатура.ОсновнаяЕдиница= Единицы.ТекущийЭлемент();
    Номенклатура.Записать();
    
    
  10. 1Cman
    Offline

    1Cman Опытный в 1С

    Регистрация:
    25 июл 2009
    Сообщения:
    308
    Симпатии:
    0
    Баллы:
    26
    Вот что значит, писать код, не проверяя на практике ))
  11. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ща проверим....
  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    С последним уточнением все работает.... Только вот одно НО
    Код:
    Процедура ПриЗакрытии()
    Если ПустоеЗначение(Excel)=0 Тогда
    Excel.Workbooks.Close();
    Excel.Quit();
    КонецЕсли;	
    КонецПроцедуры     
    
    
    ...иначе если не формировать загрузку (только проставлять единицы) - при закрытии вываливается ошибка

    процедуру загрузки из Excel не проверял))))
  13. TopicStarter Overlay
    trioka
    Offline

    trioka Опытный в 1С

    Регистрация:
    21 окт 2009
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    или я тупой. или всетаки надо будет выгружать. при первом на жатии на заполнение . задумалась на ВЫПОЛНЕНИЕ ОБРАБОТКИ, на 5 сек , потом перестала думать

    Код:
    В подборе выбрана единица другого элемента справочника Номенклатура.
    Проверьте правильность указания базовой и основной единицы для элемента
    "Пластина прерывателя н/о (уп-5)   Лада(2049)", а также правильность указания единиц измерения 
    в справочниках единиц и цен для данной позиции номенклатуры.
    
    
    
    это если из подбора в продажу добавить.

    при Закрытии. знаю про ошибку.
  14. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Я вам выше писал что старые значения необходимо очистить....
    Т.е. очищем ссылки на единицы в номенклатуре, а затем удаляем все единицы. И заново все заполняем.... У вас же раньше не выбирался родитель поэтому то и ерунда
  15. TopicStarter Overlay
    trioka
    Offline

    trioka Опытный в 1С

    Регистрация:
    21 окт 2009
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    я как раз изменял свое сообщение. хотел дописать. что Надо скорее всего Очистить.
    как очистить? :angry:
  16. Бухгалтерский угодник
    Offline

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

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

    trioka Опытный в 1С

    Регистрация:
    21 окт 2009
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Стереть ТИ или Установить Не забыть??
    я не забыл установить, после долгого раздумья 1С сделала мне 2 единицы ШТ. в каждом.
    красота.
    я попытался стереть и единицы. но с владельцем не могу договориться. помогите пожалуйста.
    код для стирания единиц.
  18. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Запускаем обработку по очистке ЕИ в номенклатуре

    2) Затем вот эту:

    Код:
    Спр=СоздатьОбъект("Справочник.Единицы");
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл 
    Спр.Удалить(0);
    КонецЦикла;
    
    
    
    
    3) После обработки в монопольном режиме удалить помеченные объекты....

    4) Снова заполняем номенклатуру ЕИ
  19. TopicStarter Overlay
    trioka
    Offline

    trioka Опытный в 1С

    Регистрация:
    21 окт 2009
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    вот в ней проблема, я не могу сделать, ошибку выдает.
    когда все получиться . выложу полный код. Если понадобиться кому то.
  20. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Какая ошибка?

    Это вряд-ли... Задача узконаправленная.

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