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

Алексей1975

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

Владимир Владимирович

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

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

Если СсылкаНоменклатуры.Пустая() Тогда

 СсылкаНоменклатуры=Справочники.Номенклатура.СоздатьЭлемент();

 // записываем необходимые реквизиты
 // из текущихДанных

 Попытка 
 СсылкаНоменклатуры.Записать(); 
 Исключение 
 Сообщить("Не удалось записать номенклатуру");
 КонецПопытки; 

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

Алексей1975

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

Andrey

ВР
Команда форума
Этот код новые записи создает, а старые переписывает поверх существующих. А мне надо чтобы старые записи не переписывались, по крайней мере на поле "Полное наименование". Это поле будет редактироваться вручную в процессе работы и мне хотелось бы сохранить эти изменения.
Закажите программисту - он Вам напишет. Стандартная загрузка объектов из внешних файлов удобный механизм, но пользоваться им нужно аккуратно. Баловаться кодом не понимая сути работы обработки черевато потерей данных.
 

Алексей1975

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

Владимир Владимирович

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

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

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

Andrey

ВР
Команда форума
Выложите обработку, я гляну.

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

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

Andrey

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

Владимир Владимирович

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

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

т.е. по каждому реквизиту из прайса будет искаться элемент в справочнике по артикулу, если такой элемент есть, он считается и вернется в результат.Фактически это будет долго, и элементы справочника будут все равно перезаписываться со старыми реквизитами
 
Верх