7.7 Почему путем синхронизирования не переносится Артикул?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем miracla, 13 дек 2011.

  1. TopicStarter Overlay
    miracla
    Offline

    miracla

    Регистрация:
    10 дек 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток, всем)))
    Возникла вот такая проблема!!!
    В моей программе через ОЛЕклиент путем синхронизирования переносятся все данные из номенклатуры Торговля и Склад.
    Так вот, там в программе в Справочнике Номенклатура есть поля:
    Артикул
    Наименование
    Полное наименование
    Единица измерения

    Когда стала проверять правильно ли перенеслись данные то заметила, что поле Артикул осталось пустым, благо что перенеслись единицы измерения, но ито не все...
    Как быть?? Подскажите пожалуйста!!!!))))
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А алгоритм переноса предусматривает этот реквизит?
  3. TopicStarter Overlay
    miracla
    Offline

    miracla

    Регистрация:
    10 дек 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Вроде бы должен!!! Не я писала, но должно было перекидываться все, т.к. это важный момент, чтобы у товара вместе с названием перекидывался и Арикул, по нему происходит поиск товара!!)))
    А тгде можно это посомтреть?? Я вчера лазила лазила, программный код по этой части так и не нашла, куда то его спрятали видать))))
  4. alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    90 % что артикул не прописан в коде.

    1) Если это внешняя обработка и не использует не какие правила обмена, то попробуйте воспользоваться поиском и найти слово "наименование" , здесь по идеи должно найтись кусок кода , где и присваиваются данные.
    2) Пройдите отладчиком , и сразу поймете где ваша проблема.
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    М.б. не "наименование" (оно-то как раз переносится), а "артикул" стоит поискать?
  6. TopicStarter Overlay
    miracla
    Offline

    miracla

    Регистрация:
    10 дек 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Отладчиком увы пользоваться тут не умею...(((
    Я зашла в глобальный модуль путем поиска ничего по Артиклу не нашла, а вот нашла по Номенклатуре! ВОт что там прописано:
    Код:
    Если	флНоменклатура		=	1	Тогда
    
    спрНом		=	СоздатьОбъект("Справочник.Номенклатура");
    спрЕдИзм	=	СоздатьОбъект("Справочник.ЕдиницыИзмерения");
    
    олеНом		=	БазаОЛЕ.CreateObject("Справочник.Номенклатура");
    
    НачатьТранзакцию();
    
    олеНом.ВыбратьЭлементы();
    
    Пока олеНом.ПолучитьЭлемент() = 1 Цикл
    
    Если спрНом.НайтиПоКоду(олеНом.Код) = 0	Тогда
    
    Если	олеНом.ЭтоГруппа() =	1	Тогда
    
    флЕстьРодитель	=	0;
    
    Если	ПустоеЗначение(олеНом.Родитель)	=	0	Тогда
    
    Если спрНом.НайтиПоКоду(олеНом.Родитель.Код)	=	1	Тогда
    
    флЕстьРодитель	=	1;
    ТекРодитель	=	спрНом.ТекущийЭлемент();
    
    КонецЕсли;	
    
    КонецЕсли;
    
    спрНом.НоваяГруппа();
    
    Если	флЕстьРодитель	=	1	Тогда
    
    спрНом.Родитель			=	ТекРодитель;
    
    КонецЕсли;	
    
    спрНом.Код				=	олеНом.Код; 
    спрНом.Наименование		=	олеНом.Наименование;
    
    спрНом.Записать();
    
    Иначе
    
    флЕстьРодитель	=	0;
    
    Если	ПустоеЗначение(олеНом.Родитель)	=	0	Тогда
    
    Если спрНом.НайтиПоКоду(олеНом.Родитель.Код)	=	1	Тогда
    
    флЕстьРодитель	=	1;
    ТекРодитель	=	спрНом.ТекущийЭлемент();
    
    КонецЕсли;	
    
    КонецЕсли;
    
    спрНом.Новый();
    
    Если	флЕстьРодитель	=	1	Тогда
    
    спрНом.Родитель			=	ТекРодитель;
    
    КонецЕсли;	
    
    спрНом.Код				=	олеНом.Код; 
    спрНом.Наименование		=	олеНом.Наименование;
    спрНом.ПолнНаименование	=	олеНом.ПолнНаименование;
    
    Если спрЕдИзм.НайтиПоКоду(олеНом.БазоваяЕдиница.ОКЕИ.Код) = 1 Тогда
    
    спрНом.ЕдиницаИзмерения	=	спрЕдИзм.ТекущийЭлемент();
    
    КонецЕсли;
    
    спрНом.Записать();
    
    КонецЕсли;	
    
    
    КонецЕсли;	
    
    КонецЦикла; 
    
    ЗафиксироватьТранзакцию();
    
    КонецЕсли;	
    
    
    И что там куда дальше я не знаю... где то еще нужно же поискать, ведь так?? или все это по синхронизированию только в глобальном модуле присутствует???))) Заранее спасибо за помощь)))
  7. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    После строк:
    Код:
    спрНом.Код = олеНом.Код; 
    спрНом.Наименование = олеНом.Наименование;
    спрНом.ПолнНаименование = олеНом.ПолнНаименование;
    
    добавьте:
    Код:
    спрНом.Артикул = олеНом.Артикул;
    
  8. TopicStarter Overlay
    miracla
    Offline

    miracla

    Регистрация:
    10 дек 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    да я до этого доперла давно уже=)))))!!! пробовала, вставляла, аж в двух местах, проверяла но чтото не помогло.... вот и написала сюды код, может кто знает, что еще куда надо вставить это добро?????????)))))
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вся "беда" в том что справочники-то уже перенеслись... Она добавляет только в случае отсутствия...
    Т.е. не пускает условие
    Код:
    Если спрНом.НайтиПоКоду(олеНом.Код) = 0    Тогда
    
    
    надо так.... (см. снизу ваш код)
    Код:
       
    КонецЕсли; 
    
    Если    олеНом.ЭтоГруппа() =    0    Тогда
    спрНом.Артикул = олеНом.Артикул;
    спрНом.Записать();
    КонецЕсли;
    
    
    КонецЕсли;    
    
    КонецЦикла; 
    
    ЗафиксироватьТранзакцию();
    
    КонецЕсли;    
    
    
    
  10. TopicStarter Overlay
    miracla
    Offline

    miracla

    Регистрация:
    10 дек 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Если я все правильно поняла, и все правильно сделала, то должно быть так:
    Код:
    Если	флНоменклатура		=	1	Тогда
    
    спрНом		=	СоздатьОбъект("Справочник.Номенклатура");
    спрЕдИзм	=	СоздатьОбъект("Справочник.ЕдиницыИзмерения");
    
    олеНом		=	БазаОЛЕ.CreateObject("Справочник.Номенклатура");
    
    НачатьТранзакцию();
    
    олеНом.ВыбратьЭлементы();
    
    Пока олеНом.ПолучитьЭлемент() = 1 Цикл
    
    Если спрНом.НайтиПоКоду(олеНом.Код) = 0	Тогда
    
    Если	олеНом.ЭтоГруппа() =	1	Тогда
    
    флЕстьРодитель	=	0;
    
    Если	ПустоеЗначение(олеНом.Родитель)	=	0	Тогда
    
    Если спрНом.НайтиПоКоду(олеНом.Родитель.Код)	=	1	Тогда
    
    флЕстьРодитель	=	1;
    ТекРодитель	=	спрНом.ТекущийЭлемент();
    
    КонецЕсли;	
    
    КонецЕсли;
    
    спрНом.НоваяГруппа();
    
    Если	флЕстьРодитель	=	1	Тогда
    
    спрНом.Родитель			=	ТекРодитель;
    
    КонецЕсли;	
    
    спрНом.Код				=	олеНом.Код;    
    спрНом.Артикул          =   олеНом.Артикул;
    спрНом.Наименование		=	олеНом.Наименование;
    
    спрНом.Записать();
    
    Иначе
    
    флЕстьРодитель	=	0;
    
    Если	ПустоеЗначение(олеНом.Родитель)	=	0	Тогда
    
    Если спрНом.НайтиПоКоду(олеНом.Родитель.Код)	=	1	Тогда
    
    флЕстьРодитель	=	1;
    ТекРодитель	=	спрНом.ТекущийЭлемент();
    
    КонецЕсли;	
    
    КонецЕсли;
    
    спрНом.Новый();
    
    Если	флЕстьРодитель	=	1	Тогда
    
    спрНом.Родитель			=	ТекРодитель;
    
    КонецЕсли;	
    
    спрНом.Код				=	олеНом.Код;
    спрНом.Артикул          =   олеНом.Артикул;
    спрНом.Наименование		=	олеНом.Наименование;
    спрНом.ПолнНаименование	=	олеНом.ПолнНаименование;
    
    Если спрЕдИзм.НайтиПоКоду(олеНом.БазоваяЕдиница.ОКЕИ.Код) = 1 Тогда
    
    спрНом.ЕдиницаИзмерения	=	спрЕдИзм.ТекущийЭлемент();
    
    КонецЕсли;
    
    спрНом.Записать();
    
    КонецЕсли;	
    Если    олеНом.ЭтоГруппа() =    0    Тогда
    спрНом.Артикул = олеНом.Артикул;
    спрНом.Записать();
    КонецЕсли;
    
    КонецЕсли;	
    
    КонецЦикла; 
    
    ЗафиксироватьТранзакцию();
    
    КонецЕсли;
    
    Проверять я там вашими методами не умею, но в общем программу запускаю, она мне ошибок не выдает, но все по прежнему, переносить не хочет(((... такое ощущение что гдето еще его нужно прописать, либюо я допустила ошибку!!((( Вы мне скажите, может какой еще код скинуть, я скину)))))
  11. TopicStarter Overlay
    miracla
    Offline

    miracla

    Регистрация:
    10 дек 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Бухгалтерский Угодник, спасибо большое!!! Я разобралась!!! :D
    В общем сделала так, он же не перекидывал, Вы написали что изза того что там уже есть данные! В общем я просто взяла и заново файлы проги скинула в новый каталог и заново с нови запустила, чтоб база была пустая!! И он все перекинул!!!!! :angry: :D :aua:
    Надеюсь что в будущем он дальше будет все перекидывать!!! Ведь программа еще работает по тому принципу, что если Торговля и склад заполняется новыми данными, то я захожу в программу и синхронизирую номенклатуру, чтобы он мне все обновил=)))))))
  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Для того чтобы отновлян (синхронизировал) постоянно текущий код нужно немного модернизировать.

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