7.7 Простая обработка

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

  1. TopicStarter Overlay
    xm1
    Offline

    xm1

    Регистрация:
    15 фев 2007
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Сразу скажу, что в 1С не программировал, но ситкаксис понимаю. Вродебы ничего сложного :)
    Есть товарный справочник (многоуровневый). В нём номенклатура, в одном разделе нужно поменять единицу измерения с погонных метров на кв. метры. Т.е. чтобы просто при вбивании номенклатуры в заявку (на продажу) на место основной единицы измерения вместо пог. метров автоматом ставилась единица - кв. метры. Код товарных позиций, у которых надо это сменить с 4.0.420 по 4.0.700
    Может есть подобный пример, чтобы хоть понять как это реализовывается?

    ps: вообще я админ, а тут менеджеры попросили, говорят - "..ты умный, сделай нам пожайлуста". Вот и приходиться :)
  2. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29

    Если тебе надо раз и навсегда поменять единицу измерения (или любой другой реквизит) у группы товаров, то это можно сделать с помощью Универсальной обработки подбора объектов (поставляется на диске ИТС, взять можно у партнеров 1с, да и наверное в любой компьютерной фирме, занимающеся 1с). Делается все быстро и просто.
  3. Максимка
    Offline

    Максимка

    Регистрация:
    17 фев 2007
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Кстати это можно даже не в ИТС найти. В интернете полно таких штук. Усердие в поиске и все. Это внешние обработки, и они даже в написании легки. Если что-то срочно, то пиши мне на ящик. Помогу.
  4. TopicStarter Overlay
    xm1
    Offline

    xm1

    Регистрация:
    15 фев 2007
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Хм, а обработка как называется?

    Может кому понадобиться, я вот так сделал обработку:
    Код:
    Процедура Выполнить()    
    
    СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");    
    
    // 
    
    Для Номер = 400 По 412 Цикл     // коды позиций номенклатуры для выборки
    
    СпрНоменклатура.НайтиПоКоду(Строка(Номер));
    Товары = СпрНоменклатура.ТекущийЭлемент();
    
    СпрНоменклатура.ИспользоватьРодителя(Товары);
    
    Режим = 1; //выбирать без учета иерархии, 1 - с учетом (по умолч.) 
    СпрНоменклатура.ВыбратьЭлементы(Режим);
    
    Пока СпрНоменклатура.ПолучитьЭлемент()=1 Цикл                                 
    // здесь условие для выборки. Каждый может своё условие подставить
    Если (СпрНоменклатура.ЭтоГруппа()=0) и (((Найти(СпрНоменклатура.Наименование," ОЦ")=0) и (Найти(СпрНоменклатура.Наименование," ОЦ ")<>0)) или (Найти(СпрНоменклатура.Наименование,"мл12")<>0) или (Найти(СпрНоменклатура.Наименование,"мл133")<>0) или (Найти(СпрНоменклатура.Наименование,"эп0200")<>0) или (Найти(СпрНоменклатура.Наименование,"сорт")<>0))   Тогда
    Сообщить(" Товар - "+СпрНоменклатура.Код+" "+СпрНоменклатура.Наименование);
    СпрНоменклатура.Удалить(0); 
    Иначе               
    // у тех, которые не удаляем, я пытаюсь поменять единицу измерения. !Но неполучается!
    СпрНоменклатура.СнятьПометкуУдаления();            
    Значение = "м2";                
    СпрНоменклатура.УстановитьАтрибут("ЕдИзм",Значение);
    СпрНоменклатура.Записать();                    
    Сообщить(" Товар (изменена единица измерения) - "+СпрНоменклатура.Код+" "+СпрНоменклатура.Наименование);
    КонецЕсли;        
    КонецЦикла;                                         
    
    КонецЦикла;
    
    КонецПроцедуры
    
    Она помечает ненужные позиции на удаление (в которых встречается слова "мл12", "мл133" и тд). У остальных позиций снимает пометку на удаление (возможно это лишнее для вас) и пытается менять Единицу измерения, но это не получается. Как я понял, надо через ссылку делать. Подскажите как..
  5. TAHk
    Offline

    TAHk Опытный в 1С

    Регистрация:
    31 авг 2006
    Сообщения:
    100
    Симпатии:
    0
    Баллы:
    26
    насколько я помню (давно в 7.7 не работал) ".УстановитьАтрибут" действует для "периодических" реквизитов....
    короче, пробовал делать проще:
    СпрНоменклатура.ЕдИзм = Значение;

    может быть реквизит ЕдИзм имеет тип справочника, тогда нужно переменной "Значение" присвоить элемент из соответствующего справочника. Справочник единиц измерения может быть и подчиненным справочнику номенклатуры, это тоже необходимо проверить.
    Вобщем, пробуй....
  6. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
  7. Ирина-С
    Offline

    Ирина-С

    Регистрация:
    18 июн 2007
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте, xm?!_(mo3roBa9_akTuBHocTb) !
    У меня возникла примерно такая же проблема, как у Вас. Изменению в номенклатуре поддаются все реквизиты, кроме тех, которые имеют тип справочника. Как Вы справились с этим? Заранее благодарна.
  8. landay
    Offline

    landay Опытный в 1С

    Регистрация:
    23 янв 2007
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    Вам нужная обработка SetAttrs.ert
  9. ruscom
    Offline

    ruscom

    Регистрация:
    1 мар 2007
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    А как присвоить элемент из соответствующего справочника ? Подскажите пожайлуста новичку небольшим примером. Заранее спасибо.
  10. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Код:
    Спр=СоздатьОбъект("Справочник.Нужный_Справочник");
    Спр.НайтиЭлемент(Нужный_Элемент); //или НайтиПоНаименованию, см Синтаксис помощник
    Чему_присваиваем=Спр.ТекущийЭлемент();
    
    //соответственно Чему_присваиваем должно иметь тип Справочник.Нужный_Справочник или просто Справочник
    

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