Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 07:09

обработка внешней формы после обновления конфигурации

Автор mi-mi, 21 янв 2011, 16:35

0 Пользователей и 1 гость просматривают эту тему.

mi-mi

Господа программисты, помогите страдающему бухгалтеру...
Есть epf форма , через которую в 8.1 двухлетней давности загружали xls-файлы с приходом и реализацией товара.
после недавнего обновления конфигурации, выгрузка не работает в части номенклатуры.
справочник заполнен, и программа вместо того, чтобы выбрать существующий артикул, выдает ошибку- не уникальный код.
т.е. получается каждый раз один и тот же товар для программы как новый.
что делать?  :( :( :(

привожу часть кода:


Функция НайтиНоменклатуру(СтруктураДанных)
   
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   Номенклатура.Ссылка
   |ИЗ
   |   Справочник.Номенклатура КАК Номенклатура
   |ГДЕ
   |   Номенклатура.Код = &Код";
   
   Запрос.УстановитьПараметр("Код", СтруктураДанных.Артикул);
   Выборка = Запрос.Выполнить().Выбрать();
   
   Если Выборка.Следующий() Тогда
      Возврат Выборка.Ссылка;
   КонецЕсли;
   
   // -- Создание нового
   СпрНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
   СпрНоменклатура.Наименование = СтруктураДанных.Наименование;
   СпрНоменклатура.НаименованиеПолное = СтруктураДанных.Наименование;
   СпрНоменклатура.СтавкаНДС = ?(СтруктураДанных.СтавкаНДС = "10",Перечисления.СтавкиНДС.НДС10,?(СтруктураДанных.СтавкаНДС = "20",Перечисления.СтавкиНДС.НДС20,Перечисления.СтавкиНДС.НДС18));
   СпрНоменклатура.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СтруктураДанных.ЕдИзм);
   СпрНоменклатура.Код = СтруктураДанных.Артикул;
   СпрНоменклатура.Родитель = ГруппаНовойНоменклатуры;
   НомГруппа = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Товар");
   Если НомГруппа.Пустая() Тогда
      НомГруппа = Справочники.НоменклатурныеГруппы.СоздатьЭлемент();
      НомГруппа.Наименование = "Товар";
      НомГруппа.УстановитьНовыйКод();
      НомГруппа.Записать();
   КонецЕсли;
   СпрНоменклатура.НоменклатурнаяГруппа = НомГруппа.Ссылка;
   СпрНоменклатура.Записать();
   Сообщить("Создана новая номентлатура " + СпрНоменклатура.Наименование);
   Возврат СпрНоменклатура.Ссылка;
   
КонецФункции

Klyacksa

Нужно проверить, на каком именно элементе ругается база - при создании единицы измерения или самого элемента номенклатуры?
Как вариант, возможно в одном из справочников (Номенклатура, Единицы измерения) просто закончилась (или сбилась) нумерация. Проверьте - нет ли элементов с кодами вида "99999" (количество девяток зависит от длины кода данного конкретного справочника)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

mi-mi

Цитата: Klyacksa от 21 янв 2011, 17:04
Нужно проверить, на каком именно элементе ругается база - при создании единицы измерения или самого элемента номенклатуры?
Как вариант, возможно в одном из справочников (Номенклатура, Единицы измерения) просто закончилась (или сбилась) нумерация. Проверьте - нет ли элементов с кодами вида "99999" (количество девяток зависит от длины кода данного конкретного справочника)

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

а что делать, если действительно есть такой код 99999? как нормализовать нумерацию? если можно, пошагово, иначе заплутаю в конфигураторе навечно  :ehtwrtjryj:

mi-mi

Цитата: Klyacksa от 21 янв 2011, 17:04
Как вариант, возможно в одном из справочников (Номенклатура, Единицы измерения) просто закончилась (или сбилась) нумерация. Проверьте - нет ли элементов с кодами вида "99999" (количество девяток зависит от длины кода данного конкретного справочника)

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

mi-mi

В общем, разобралась.   :zebzdr:
Увеличила количество знаков в коде с 11 до 20 и фсё.
Klyacksa, спасибо за наводку о длине кода.

Klyacksa

Как бороться с нумерацией - либо ручками менять, либо обработку писать, которая перенумерует - будет перебирать элементы, и по какому-то правилу перенумеровывать.
И нужно будет где-то сбросить текущий номер, но это я так с лёту уже не скажу, где. Нужно смотреть.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск