Простое Условие Чтобы Не Редактировать Поля Уже Существующей Записи

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 26 янв 2012.

  1. Гость

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

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Допишите в код загрузки, что перед тем как добавить новую номенклатуру сначала попытаться ее найти по коду. Нашлась, пропустить, не нашлась тогда добавить.
     
  3. Гость

    Спасибо что ответили, но код мне нужен. Я в синтаксисе языка ни бум-бум.
     
  4. WildAnther

    WildAnther Гость

    Ну Вы бы хоть для приличия какие то попытки предприняли.=) А вообще все туманно как в далеком космосе.
    А вообще насколько я понял, надо добавить где то в тело цикла проверку на имеющиеся номера. =) Синтакс-Помощник или Справка=)
     
  5. Гость

    Так:) Я предупреждал.
    У меня прайс, который необходимо загрузить в 1С.
    Лишнее из прайса удалено, остались поля Артикул, Полное наименование и Родитель. С помощью стандартного загрузчика "ЗагрузкаДанныхИзТабличногоДокумента" я загружаю эту номенклотуру в свою базу.
    Далее заполняю поля «Единица для отчетов» и «Единица хранения остатков». Код для этого взят из приведенной в моем первом сообщении ссылки. Вот он:

    СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ТекущиеДанные["Артикул"]);

    БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796);

    ТекСпр=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",БазоваяЕдиницаИзмерения,,СсылкаНоменклатуры);

    Если ТекСпр.Пустая() Тогда
    НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();

    НайденнаяЕдиницаОбъект.Наименование = СокрЛП(БазоваяЕдиницаИзмерения);

    НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения;

    НайденнаяЕдиницаОбъект.Коэффициент = 1;

    НайденнаяЕдиницаОбъект.Владелец = СсылкаНоменклатуры;

    Попытка
    НайденнаяЕдиницаОбъект.Записать();

    Результат = НайденнаяЕдиницаОбъект.Ссылка;

    Исключение Сообщить("Не удалось записать");

    КонецПопытки;
    Иначе
    Результат =ТекСпр.Ссылка;
    КонецЕсли;


    Смысл его мне понятен не совсем, но в целом он означает, что мы получаем БазоваяЕдиницаИзмерения из Справочники.КлассификаторЕдиницИзмерения. Она там идет под кодом 796. Поля «Единица для отчетов» и «Единица хранения остатков» какие-то не текстовые, поэтому просто поставить там "шт" не получится. Надо заполнять их полностью, со всякими данными, которые мы формируем из екселевского документа и справочников 1С.
    Код этот навел меня на мысль, что можно как-то просто отменить изменения в "Полном наименовании" при обновлении номенклотуры. Расписываю зачем мне это надо: Мы продаем запчасти, у которых довольно значительные списки совместимостей с разными моделями устройств. Этот список совместимости мы постоянно редактируем и дополняем. Данные такого редактирования мне хотелось бы сохранить, но если не запретить редактирование существующего "Полного наименования" при автоматической загрузке номенклотуры, то изменения будут утеряны. Вот этот код мне и нужен.
     
  6. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Так если Вы не 1С-ник, то Вы и не сделаете ничего. Зачем пыжится?
     
  7. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Алексей1975, Дайнеко прав. Мы при всем желании вам не сможем объяснить как правильно сделать. Даже если очень постараемся, можем получить совершенно обратный эффект. Вы разочаруетесь и решите, что тут собрались одни чайники и ничего не умеют.
     
  8. Гость

    Я в 10-летнем прошлом программист. Будущая работа будет тесно связана с 1С. Думаю чтобы задавать сложные вопросы и разобраться со сложными ответами этого достаточно.
    Ребят, ну скажите же код. Ну не рационально мне изучать язык программирования чтобы 3 строчки написать.

    А насчет данного сообщения:
    "Алексей1975, Дайнеко прав. Мы при всем желании вам не сможем объяснить как правильно сделать. Даже если очень постараемся, можем получить совершенно обратный эффект. Вы разочаруетесь и решите, что тут собрались одни чайники и ничего не умеют."
    Я буду благодарен за любую помощь. И я не разочаруюсь.

    Добавлено: Кстати знакомый предприниматель решил эту проблему на уровне екселя. Он из 1С формирует прайс в екселе, потом во втором листе вставляет прайс поставщиков с обновленной(дополненной) номенклотурой, и средствами екселя сравнивает, присутствует-ли артикул в старом прайсе или он новый. Если присутствует, то в дополнительном поле рисуется какая-нибудь фигня. Далее по этой фигне делается сортировка. Тем самым вычленяются новые позиции. И эти новые позиции стандартным загрузчиком вгоняются в базу 1С
     
  9. Гость

  10. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Да, да. Жизнь штука сложная.
     
  11. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Там надо отказаться от загрузки строки. Т.е. тут еще зависит от того, как обработка сделана.
    Можно попробовать оператор "Продолжить".

    Спр= Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул);
    Если Спр.Пустая() Тогда
    Продолжить;
    КонецЕсли;
     
  12. Гость

    Спасибо большое! Попробую - отпишусь!
     
Загрузка...
Похожие Темы - Простое Условие Чтобы
  1. Atamanochka
    Ответов:
    1
    Просмотров:
    4.385
  2. Dimm
    Ответов:
    11
    Просмотров:
    229
  3. shilovec5377
    Ответов:
    0
    Просмотров:
    1.036
  4. zdrastes
    Ответов:
    0
    Просмотров:
    1.123
  5. era1fgg
    Ответов:
    1
    Просмотров:
    1.301

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