Форум консультаций по прикладным решениям и программам фирмы "1С".
Онлайн консультации, вопросы и ответы, бесплатная регистрация, личная страница, twitter и facebook каналы и многое другое ждут Вас здесь.
Зарегистрироваться ← Ваш выбор →

Простое условие чтобы не редактировать поля уже существующей записи

Тема в разделе 'Управление Торговлей', создана пользователем Алексей1975, 26.01.2012.

  1. Не в сети

    Алексей1975 Новичок

    Доброго времени суток всем. Сразу извиняюсь за, возможно, ламерские вопросы, знакомство с 1С у меня только началось.
    Необходимо загрузить номенклотуру в справочник 1С. Первичную загрузку я сделаю, это не проблема. Не совсем устраивает этот способ, если необходимо обновить эти данные. Вот, скажем, расширили поставщики свой номенклотурный список. Действуя средствами, рекомендованными здесь: http://www.online-ufa.ru/content/art..._excel_part_2/ я буду каждый раз редактировать уже существующие данные и добавлять новые. Но мне не нужно редактирование. Мне нужно только добавление записей, по которым не найден существующий артикул. Я хочу иметь возможность изменять вручную, например, Наименование товара и сохранить эти изменения в дальнейшем при очередном обновлении справочника номенклотуры. Насколько я понял, необходимо в обработчике -> вкладка "Настройка" в столбце "Выражение" ввести код, который запретит редактирование данного поля если артикул найден. Короче мне нужен этот код.
  2. Реклама на форуме

    Чтобы убрать:

  3. Не в сети

    Владимир Владимирович Известная личность

    Ну там же даже пример дан, у меня под рукой нет этой обработки, так что пишу с листа:
    Код:
    СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ТекущиеДанные["Артикул"]); 
    
    Если СсылкаНоменклатуры.Пустая() Тогда
    
     СсылкаНоменклатуры=Справочники.Номенклатура.СоздатьЭлемент();
    
     // записываем необходимые реквизиты
     // из текущихДанных
    
     Попытка 
     СсылкаНоменклатуры.Записать(); 
     Исключение 
     Сообщить("Не удалось записать номенклатуру");
     КонецПопытки; 
    
     БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796); 
     ТекСпр=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",БазоваяЕдиницаИзмерения,,СсылкаНоменклатуры); 
     Если ТекСпр.Пустая() Тогда 
     НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); НайденнаяЕдиницаОбъект.Наименование = СокрЛП(БазоваяЕдиницаИзмерения); 
     НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения; НайденнаяЕдиницаОбъект.Коэффициент = 1; 
     НайденнаяЕдиницаОбъект.Владелец = СсылкаНоменклатуры; 
     Попытка 
     НайденнаяЕдиницаОбъект.Записать(); 
     Исключение 
     Сообщить("Не удалось записать");
     КонецПопытки; 
    КонецЕсли;
    
  4. Не в сети

    Алексей1975 Новичок

    Этот код новые записи создает, а старые переписывает поверх существующих. А мне надо чтобы старые записи не переписывались, по крайней мере на поле "Полное наименование". Это поле будет редактироваться вручную в процессе работы и мне хотелось бы сохранить эти изменения.
  5. Не в сети

    Andrey ВР

    Закажите программисту - он Вам напишет. Стандартная загрузка объектов из внешних файлов удобный механизм, но пользоваться им нужно аккуратно. Баловаться кодом не понимая сути работы обработки черевато потерей данных.
  6. Не в сети

    Алексей1975 Новичок

    Понимаете, здесь вопрос даже не денег. У меня есть небольшой опыт в написании баз на Делфи. Я намерен этим опытом активно пользоваться. Уж если не для написания кода, то для правильной постановки задачи. Сейчас накапливаю знания. Хочу разбираться во всех вопросах, связанных с 1С.
  7. Не в сети

    Владимир Владимирович Известная личность

    Выложите обработку, я гляну.

    Вот вырезанный кусок, который создает и записывает новый элемент номенклатуры:
    Артикул должен быть уникальным во всем справочнике, другие нужные реквизиты в создаваемый элемент думаю допишете сами
    Код:
    СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ТекущиеДанные["Артикул"]);
    Если СсылкаНоменклатуры.Пустая() Тогда  СсылкаНоменклатуры=Справочники.Номенклатура.СоздатьЭлемент();
    // записываем необходимые реквизиты
    // из текущихДанных
    Попытка
    СсылкаНоменклатуры.Записать();
    Исключение
    Сообщить("Не удалось записать номенклатуру");
    КонецПопытки;
    КонецЕсли;
    
  8. Не в сети

    Andrey ВР

    Ему не новый записать нужно, ему нужно что бы уже существующие не изменялись, но при этом не существующие создавались.
  9. Не в сети

    Andrey ВР

    ЗЫ. Обработка есть на ИТС :) ВВ, стыдно не знать.
  10. Реклама на форуме

    Чтобы убрать:

  11. Не в сети

    Владимир Владимирович Известная личность

    Вот еще ИТС искать, лень :)
  12. Не в сети

    Владимир Владимирович Известная личность

    А ну тогда можно так сделать, в обработке поставить "не создавать новые элементы", потом использовать код выше для артикула, откуда брать текущие данные для заполнения вновь создаваемого элемента номенклатуры, а для каждого реквизита справочника номенклатуры вставить код примерно такого типа (пример для наименования):
    Код:
    СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ТекущиеДанные["Артикул"]);
    Если НЕ СсылкаНоменклатуры.Пустая() Тогда
    Результат=СсылкаНоменклатуры.Наименование;
    КонецЕсли;
    
    т.е. по каждому реквизиту из прайса будет искаться элемент в справочнике по артикулу, если такой элемент есть, он считается и вернется в результат.Фактически это будет долго, и элементы справочника будут все равно перезаписываться со старыми реквизитами

Похожие темы

Тема по ключевым словам: простое, условие.
Статистика
Последнее сообщение
  1. Интех
    Ответов:
    0
    Просмотров:
    23
    Интех
    25.08.2023
  2. Интех
    Ответов:
    0
    Просмотров:
    68
    Интех
    30.11.2022
  3. Интех
    Ответов:
    0
    Просмотров:
    104
    Интех
    05.05.2022
  4. Интех
    Ответов:
    0
    Просмотров:
    181
    Интех
    18.06.2021
  5. Интех
    Ответов:
    0
    Просмотров:
    526
    Интех
    15.06.2015
Загрузка...