Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/90: Рейтинг темы: голосов - 90, средняя оценка - 4.93
1

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

25.01.2012, 10:55. Показов 16531. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток всем. Сразу извиняюсь за, возможно, ламерские вопросы, знакомство с 1С у меня только началось.
Необходимо загрузить номенклотуру в справочник 1С. Первичную загрузку я сделаю, это не проблема. Не совсем устраивает этот способ, если необходимо обновить эти данные. Вот, скажем, расширили поставщики свой номенклотурный список. Действуя средствами, рекомендованными здесь: http://www.online-ufa.ru/conte... el_part_2/ я буду каждый раз редактировать уже существующие данные и добавлять новые. Но мне не нужно редактирование. Мне нужно только добавление записей, по которым не найден существующий артикул. Я хочу иметь возможность изменять вручную, например, Наименование товара и сохранить эти изменения в дальнейшем при очередном обновлении справочника номенклотуры. Насколько я понял, необходимо в обработчике -> вкладка "Настройка" в столбце "Выражение" ввести код, который запретит редактирование данного поля если артикул найден. Короче мне нужен этот код.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2012, 10:55
Ответы с готовыми решениями:

Простое условие чтобы не редактировать поля уже существующей записи
Доброго времени суток всем. Сразу извиняюсь за, возможно, ламерские вопросы, знакомство с 1С у меня...

Обновление в базе уже существующей записи
Здравствуйте, мне необходимо в базе данных обновить уже существующую запись, код набрала,но...

Ограничение на ввод дублера (уже существующей) записи в ПОЛЕ
Форумчане! Помогите создать процедуру, которая проверяет было ли такое (текстовое) значение уже...

Добавление почты скриптом к уже существующей учетной записи в AD
Всем привет. Надо добавить более 100 адресов электронной почты пользователям в AD чьи учетки уже...

11
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
25.01.2012, 13:36 2
Допишите в код загрузки, что перед тем как добавить новую номенклатуру сначала попытаться ее найти по коду. Нашлась, пропустить, не нашлась тогда добавить.
0
25.01.2012, 17:58 3
Спасибо что ответили, но код мне нужен. Я в синтаксисе языка ни бум-бум.
0 / 0 / 0
Регистрация: 03.06.2009
Сообщений: 116
26.01.2012, 05:28 4
Ну Вы бы хоть для приличия какие то попытки предприняли.=) А вообще все туманно как в далеком космосе.
А вообще насколько я понял, надо добавить где то в тело цикла проверку на имеющиеся номера. =) Синтакс-Помощник или Справка=)
0
26.01.2012, 11:21 5
Так Я предупреждал.
У меня прайс, который необходимо загрузить в 1С.
Лишнее из прайса удалено, остались поля Артикул, Полное наименование и Родитель. С помощью стандартного загрузчика "ЗагрузкаДанныхИзТабличногоДокумента" я загружаю эту номенклотуру в свою базу.
Далее заполняю поля «Единица для отчетов» и «Единица хранения остатков». Код для этого взят из приведенной в моем первом сообщении ссылки. Вот он:

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

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

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

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

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

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

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

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

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

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

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

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

Смысл его мне понятен не совсем, но в целом он означает, что мы получаем БазоваяЕдиницаИзмерения из Справочники.КлассификаторЕдиницИзмерения. Она там идет под кодом 796. Поля «Единица для отчетов» и «Единица хранения остатков» какие-то не текстовые, поэтому просто поставить там "шт" не получится. Надо заполнять их полностью, со всякими данными, которые мы формируем из екселевского документа и справочников 1С.
Код этот навел меня на мысль, что можно как-то просто отменить изменения в "Полном наименовании" при обновлении номенклотуры. Расписываю зачем мне это надо: Мы продаем запчасти, у которых довольно значительные списки совместимостей с разными моделями устройств. Этот список совместимости мы постоянно редактируем и дополняем. Данные такого редактирования мне хотелось бы сохранить, но если не запретить редактирование существующего "Полного наименования" при автоматической загрузке номенклотуры, то изменения будут утеряны. Вот этот код мне и нужен.
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
26.01.2012, 11:57 6
Цитата Сообщение от Алексей1975
Я в синтаксисе языка ни бум-бум.
Так если Вы не 1С-ник, то Вы и не сделаете ничего. Зачем пыжится?
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
26.01.2012, 12:32 7
Алексей1975, Дайнеко прав. Мы при всем желании вам не сможем объяснить как правильно сделать. Даже если очень постараемся, можем получить совершенно обратный эффект. Вы разочаруетесь и решите, что тут собрались одни чайники и ничего не умеют.
0
26.01.2012, 12:38 8
Я в 10-летнем прошлом программист. Будущая работа будет тесно связана с 1С. Думаю чтобы задавать сложные вопросы и разобраться со сложными ответами этого достаточно.
Ребят, ну скажите же код. Ну не рационально мне изучать язык программирования чтобы 3 строчки написать.

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

Добавлено: Кстати знакомый предприниматель решил эту проблему на уровне екселя. Он из 1С формирует прайс в екселе, потом во втором листе вставляет прайс поставщиков с обновленной(дополненной) номенклотурой, и средствами екселя сравнивает, присутствует-ли артикул в старом прайсе или он новый. Если присутствует, то в дополнительном поле рисуется какая-нибудь фигня. Далее по этой фигне делается сортировка. Тем самым вычленяются новые позиции. И эти новые позиции стандартным загрузчиком вгоняются в базу 1С
29.01.2012, 09:09 9
;)
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
29.01.2012, 15:27 10
Да, да. Жизнь штука сложная.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
29.01.2012, 15:34 11
Там надо отказаться от загрузки строки. Т.е. тут еще зависит от того, как обработка сделана.
Можно попробовать оператор "Продолжить".

Спр= Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул);
Если Спр.Пустая() Тогда
Продолжить;
КонецЕсли;
0
29.01.2012, 16:27 12
Спасибо большое! Попробую - отпишусь!
29.01.2012, 16:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2012, 16:27
Помогаю со студенческими работами здесь

Запрет дублирования уже существующей записи в таблице по "поле1" вводимым из формы?
Уважаемые форумчане? Подскажите, как запретить создание новой записи в форме при условии уже...

Организовать проверку на наличие уже существующей записи в таблице по "поле1", "поле2" вводимым из формы
Всем привет! Подскажите! Как организовать проверку на наличие уже существующей записи в таблице по...

Доступ к уже существующей сети
Здравствуйте, возможно вопрос такой вопрос не стоит выкладывать на форум, но что-то гугл мне не...

Сетевое использование уже существующей БД
Такая ситуация, есть обычные таблицы сделанные в датабэйсдесктопе, есть программа, с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru