1с обработчик Ут 11.4 для измения вида номенклатуры
1С:Управление торговлей 11
Россия
1С
Языки программирования
Внешняя обработка (ert,epf)
Инструменты и обработки
Добрый день, делаю обработчик, что бы поменять вид номенклатуры у номенклатур на общий, в базе у каждого свой вид. стр. Номенклатуру беру из excel файла
Не понимаю, где ошибка. Он под каждую номенклатуру делает свой вид ДД8.
Типовой вариант измения. Не работает.
&НаСервере
Процедура ИзменитьНоменклатуру(ТЧ)
МассивНом = Новый Массив;
Для Каждого стр Из ТЧ Цикл
ТекНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("НаименованиеПолное", стр.Номенклатура);
Если ТекНоменклатура.Наименование = стр.Номенклатура ТОГда
НовыйАртикул = ТекНоменклатура.ПолучитьОбъект();
//НовыйАртикул.Артикул = стр.Артикул;
//НовыйАртикул.Записать();
НовыйВид = НовыйАртикул.ВидНоменклатуры.ПолучитьОбъект();
НовыйВид.Наименование = "ДД8";
НовыйВид.Записать();
НовыйАртикул.ВидНоменклатуры = НовыйВид.Ссылка;
Иначе
ТекНоменклатура.Пустая();
//
//СправочСсылка = Справочники.Номенклатура(
//ФормаЭ = СправочСсылка.ПолучитьОбъект();
//ФормаОбъекта = ФормаЭ.ПолучитьФорму();.
//Для Каждого Элемент Из ФормаОбъекта.ЭлементыФормы Цикл
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьНе понимаю, где ошибка. Он под каждую номенклатуру делает свой вид ДД8.
Типовой вариант измения. Не работает.
По теме из базы знаний
- 1С Характеристики номенклатуры. Переход на учёт по характеристикам для УТ, УНФ, Розница, КА
- Подключение онлайн касс (ФЗ-54) к старой 1С конфигурации УТ 10.2. Описание и реализация проекта
- Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4
- Система интерактивных ролей и обработчиков с возможностью интерактивной настройки и не только (платформа 8.3.17+, расширение) для УТ 11 (все), КА 2, ERP 2, Розница 2, УНФ 1.6/3.0, БП 3, ЗУП 3.1, ААА 6
- Оповещение об изменении цен в РМК. Расширение для 1С: Управление торговлей 11.4
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Например, что вы этим хотели сказать?
А вот этим в просто переписываете наименование у ВСЕХ видов номенклатуры.
Не понимаю, где ошибка. Он под каждую номенклатуру делает свой вид ДД8.
Потому что именно так и написано. И вообще ваш код не меняет вид номенклатуры у самой номенклатуры от слова СОВСЕМ,
НовыйВид = НовыйАртикул.ВидНоменклатуры.ПолучитьОбъект();
НовыйАртикул.ВидНоменклатуры = НовыйВид.Ссылка;
НовыйВид = НовыйАртикул.ВидНоменклатуры.ПолучитьОбъект();
НовыйВид.Наименование = "ДД8";
НовыйВид.Записать();
(1)
Вот этой строкой вы не создаете новый вид номенклатуры, а получаете тот вид номенклатуры, который назначен текущей номенклатуре. Ну а потом и вовсе этому виду присваиваете наименование "ДД8". В итоге, как писали уже, у вас все виды номенклатуры переименовываются в "ДД8". Вам бы сначала Радченко почитать, по книжке создать конфигурацию, а потом уже писать код. Вы пишите с абсолютным непониманием того, что будет происходить при выполнении вашего кода
НовыйВид = НовыйАртикул.ВидНоменклатуры.ПолучитьОбъект();
Вот этой строкой вы не создаете новый вид номенклатуры, а получаете тот вид номенклатуры, который назначен текущей номенклатуре. Ну а потом и вовсе этому виду присваиваете наименование "ДД8". В итоге, как писали уже, у вас все виды номенклатуры переименовываются в "ДД8". Вам бы сначала Радченко почитать, по книжке создать конфигурацию, а потом уже писать код. Вы пишите с абсолютным непониманием того, что будет происходить при выполнении вашего кода
(19) Ну например так
Если заменяете у всех на один вид, то лучше его вынести на форму обработки и подставлять его. Но, как ранее вам писали, необходимо следить за тем, какие параметры у текущего и нового видов номенклатуры: если у нового, например, ведется учет по характеристикам, а у текущего - нет, то с остатками у вас будет "беда". Аналогично может получиться с учетом по сериям и т.д.
ВидДляПодстановки = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Наименование вида");
Если ЗначениеЗаполнено(ВидДляПодстановки) Тогда
НовыйАртикул.ВидНоменклатуры = ВидДляПодстановки;
КонецЕсли;
Если заменяете у всех на один вид, то лучше его вынести на форму обработки и подставлять его. Но, как ранее вам писали, необходимо следить за тем, какие параметры у текущего и нового видов номенклатуры: если у нового, например, ведется учет по характеристикам, а у текущего - нет, то с остатками у вас будет "беда". Аналогично может получиться с учетом по сериям и т.д.
(20) да он блокирует, что так нельзя. Сработало только, если я обработчиком всё поменяю и потом типовом.
Вообще код у меня рабочий.
Проблема в том, если у товаров разные виды, то он делает такую хрень. А если у товаров одинаковые виды. Он все делает как надо, он создаёт или берёт существующий вид и записывает, на те товары, которые я назначил
Вообще код у меня рабочий.
Проблема в том, если у товаров разные виды, то он делает такую хрень. А если у товаров одинаковые виды. Он все делает как надо, он создаёт или берёт существующий вид и записывает, на те товары, которые я назначил
(5)
понимаете, есть таблица товар
есть таблица клиент
если они сами по себе, то - удаляйте, добавляйте, изменяйте - все, что только вздумается
но если таблица товар имеет связь по клиенту,
то так просто не получится - нужно учитывать,
есть ли связь конкретного клиента и товара, с которым вы хотите делать действие
в вашем случае связей на порядок больше и вы сами своими руками хотите сломать базу данных
ничего не имею против, поскольку это ваше желание
но не говорите потом, что вы не знали......
вот и весь совет :)
я уже не говорил ,какие бывают связи : один к одному, один ко многим, многие ко многим...
и да , в базе данных они очень прочные :)
понимаете, есть таблица товар
есть таблица клиент
если они сами по себе, то - удаляйте, добавляйте, изменяйте - все, что только вздумается
но если таблица товар имеет связь по клиенту,
то так просто не получится - нужно учитывать,
есть ли связь конкретного клиента и товара, с которым вы хотите делать действие
в вашем случае связей на порядок больше и вы сами своими руками хотите сломать базу данных
ничего не имею против, поскольку это ваше желание
но не говорите потом, что вы не знали......
вот и весь совет :)
я уже не говорил ,какие бывают связи : один к одному, один ко многим, многие ко многим...
и да , в базе данных они очень прочные :)
в пункте (4) вам сказали правильно. Вы изменяете вид номенклатуры, у товара который уже лежит на складе, а потом попытаетесь его списать и не получится. в некоторых конфигурациях, при вводе номенклатуры, вид выбирается один раз, а потом этот реквизит становится не активен
(8) Вы путаете виды номенклатуры и номенклатурные группы. Идите учите матчасть - нельзя перенести номенклатуру из вида с характеристиками в вид без характеристик. А там еще и упаковки, и правила учета серий по видам номенклатуры...
Научитесь для начала программно создавать новый объект в базе, прежде чем спорить со спецами.
Научитесь для начала программно создавать новый объект в базе, прежде чем спорить со спецами.
тут много конечно можно сказать по поводу приведенного кода.
Но. Попробуй для начала принять простое правило: название переменной содержит информацию о ее природе.
здесь в стр не номенклатура, а наименование, значит, должно быть так
здесь никакой не артикул и не новый, а существующий объект номенклатуры, значит, надо вот так
и так далее. Часть ошибок станет видно сразу.
Но. Попробуй для начала принять простое правило: название переменной содержит информацию о ее природе.
НайтиПоРеквизиту("НаименованиеПолное", стр.Номенклатура
здесь в стр не номенклатура, а наименование, значит, должно быть так
НайтиПоРеквизиту("НаименованиеПолное", стр.НаименованиеНоменклатуры
НовыйАртикул = ТекНоменклатура.ПолучитьОбъект();
здесь никакой не артикул и не новый, а существующий объект номенклатуры, значит, надо вот так
ОбъектНоменклатура = ТекНоменклатура.ПолучитьОбъект();
и так далее. Часть ошибок станет видно сразу.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот