7.7 Обрезалось наименование номенклатуры

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем daab, 28 мар 2012.

  1. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    Доброго дня всем

    Конфа Бух 4.5

    При обновлении конфы по незнанию обновил справочник номенклатуры (точнее элемент ПолНаименование)
    После чего в базе полетели(обрезались) все наименования товаров
    Архив не сделал!Но есть архив за прошлую неделю
    Возможно ли как то восстановить наименования не откатываясь на неделю назад?

    Спасибо!
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Я стандартных обработок не знаю.
    Но написать такую не сложно: первый проход - сохраняешь в файл (или таблицу) код и наименование, второй проход - читаешь код и наименование, находишь номенклатуру по коду, обновляешь наименование.
  3. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    а каков метод обновления наименования?
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Присвоение значения и запись элемента
  5. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    а он мне выдает код неуникален(
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    выкладывайте код обработки
  7. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура Загрузить()
    DB=СоздатьОбъект("XBASE");
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    Если ФС.СуществуетФайл(ФормИмяФайла)=1 Тогда  
    DB.ОткрытьФайл(ФормИмяФайла);
    Иначе
    Предупреждение ("Указанный файл не существует",5);
    КонецЕсли;
    DB.Первая();	
    Пока DB.Вконце()=0 Цикл
    Спр.Новый();
    Спр.Код=DB.CoDE;
    Спр.Наименование=DB.Name;
    Спр.ПолнНаименование=DB.Name;
    Спр.Записать();
    DB.Следующая();
    КонецЦикла;			
    DB.ЗакрытьФайл();	
    КонецПроцедуры
    
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Не верный подход....
    Элементы с таким кодом уже есть в справочнике...
    Нужно не СОЗДАВАТЬ, а НАХОДИТЬ элемент....
    Смотрите метод НайтиПоКоду

    Убедительная просьба пользоваться тегами... Буду наказывать
  9. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    Код:
     Если Спр.НайтиПоКоду(1)=DB.CoDE Тогда
    Спр.Наименование=DB.Name;
    Спр.ПолнНаименование=DB.Name;
    Спр.Записать();
    DB.Следующая();
    так вроде, но что долго выполняется, жму отмену проверяю ничего вроде не поменялось
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    По коду верно.. используйте транзакцию если большой справочник
  11. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    намертво зависает
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    выложите полный код... похоже на зацикливание
  13. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура Загрузить()
    DB=СоздатьОбъект("XBASE");
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    НачатьТранзакцию();
    Если ФС.СуществуетФайл(ФормИмяФайла)=1 Тогда 
    DB.ОткрытьФайл(ФормИмяФайла);
    Иначе
    Предупреждение ("Указанный файл не существует",5);
    КонецЕсли;
    DB.Первая();   
    Пока DB.Вконце()=0 Цикл
    Если Спр.НайтиПоКоду(1)=DB.CoDE Тогда
    Спр.Наименование=DB.Name;
    Спр.ПолнНаименование=DB.Name;
    Спр.Записать();
    DB.Следующая();
    КонецЕсли;	
    КонецЦикла;	 
    ЗафиксироватьТранзакцию();
    DB.ЗакрытьФайл();   
    КонецПроцедуры    
  14. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Код:
    Процедура Загрузить()
    DB=СоздатьОбъект("XBASE");
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    НачатьТранзакцию();
    Если ФС.СуществуетФайл(ФормИмяФайла)=1 Тогда
    DB.ОткрытьФайл(ФормИмяФайла);
    Иначе
    Предупреждение ("Указанный файл не существует",5);
    КонецЕсли;
    DB.Первая();  
    Пока DB.Вконце()=0 Цикл
    Если Спр.НайтиПоКоду(1)=DB.CoDE Тогда
    Спр.Наименование=DB.Name;
    Спр.ПолнНаименование=DB.Name;
    Спр.Записать();
    //DB.Следующая();   //в этом месте переход будет, только если выполнилось условие, а в остальном - зацикливание
    КонецЕсли;
    DB.Следующая();  //вот тут надо переходить к следующей записи
    КонецЦикла;
    ЗафиксироватьТранзакцию();
    DB.ЗакрытьФайл();  
    КонецПроцедуры 
  15. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    хм странно, теперь вообще никакой реакции (( ни ошибок ничего
  16. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а вы уверены, что в условие заходит?

    Код:
    Процедура Загрузить()
    DB=СоздатьОбъект("XBASE");
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    НачатьТранзакцию();
    Если ФС.СуществуетФайл(ФормИмяФайла)=1 Тогда
    DB.ОткрытьФайл(ФормИмяФайла);
    Иначе
    Предупреждение ("Указанный файл не существует",5);
    КонецЕсли;
    DB.Первая();
    Пока DB.Вконце()=0 Цикл
    Если Спр.НайтиПоКоду(DB.CoDE) = 1 Тогда  //может вот такая конструкция должна быть?
    Спр.Наименование=DB.Name;
    Спр.ПолнНаименование=DB.Name;
    Спр.Записать();
    //DB.Следующая();   //в этом месте переход будет, только если выполнилось условие, а в остальном - зацикливание
    КонецЕсли;
    DB.Следующая();  //вот тут надо переходить к следующей записи
    КонецЦикла;
    ЗафиксироватьТранзакцию();
    DB.ЗакрытьФайл();
    КонецПроцедуры 
    по вашему коду, вы всегда искали элемент с кодом 1
  17. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    есть
    Код:
    Спр.НайтиПоКоду(DB.CoDE) = 1 //правильно
    Спр.НайтиПоКоду(1)=DB.CoDE  // неправильно


    спасибо друзья!

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