8.х После обновления на 1.2.16.1

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем [GIGA]DEDUSHKA, 16 июн 2008.

  1. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Хм, код "1111111"? Случаем не исключение из за наличия в базе номенклатуры с таким кодом? Попробуй заменить код
    Код:
    НовыйОбъект.Код = Код 
    
    
    На
    Код:
    НовыйОбъект.УстановитьНовыйКод()
    
    
  2. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Ручками ведь этот код дает завести. А с другими объектами тоже код? которым я его не присваиваю, предоставляя эту возможность 1С
  3. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    У тебя обработка исправленная пошла?
  4. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Нет, пишет то же самое. Замена конфигуратора на раннее рабочее состояние - тоже не помогла, значит он не причем
  5. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Хм. Чего то я не догоняю
    1) А если строку
    Код:
    Set НовыйОбъект = Справочники.Номенклатура.НовыйЭлемент()
    
    заменить на
    Код:
    Set НовыйОбъект = New Справочники.Номенклатура.НовыйЭлемент()
    
    2) Строку
    Код:
    Call НовыйОбъект.Записать()
    
    заменить на просто
    Код:
    НовыйОбъект.Записать()
    
    (возможно так
    Код:
    НовыйОбъект.Записать
    
    )
  6. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Вы что подозревайте что исходник неверный, который работал целый год?
    Хорошо, раз так тогда попорядку:
    1. Set НовыйОбъект = New Справочники.Номенклатура.НовыйЭлемент() - скобок не надо
    2. НовыйОбъект.Записать() - скобок не надо
    Посмотреть вложение 971 3. не работает

    Вложения:

  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Или: Вызовите ОписаниеОшибки в попытке.
    Или: полностью перепишите ваш код на 1с
    Или: Прогоните вручную заполнение

    На 99% уверен, что не заполняется обязательный реквизит или проблема в коде товара.



    Да, и проверьте права доступа для пользователя, под которым запись идет.
  8. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    На 99% уверен что проблема не в обязательном реквизите. Может вам прислать пример заполнения элементарного справочника, например "единицы измерения"? Там тоже самое. Код на 1С (внешней обработкой) - работает, руками - тоже работает. Через Access - работает но на позавчерашнем buckupe. А сейчас ругается и ВСЕх выкидывает


    P.S. Да и сомневаюсь я, что из-за одного реквизита надо ВСЕх выкинуть
  9. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Код:
    Option Compare Database
    
    Public OneC As V81.COMConnector
    Public V8
    
    Function СокрЛП(str)
    СокрЛП = Trim(str)
    'СокрЛП = str
    End Function
    
    Function СтрЗаменить(str, a, b)
    СтрЗаменить = Replace(str, a, b)
    End Function
    
    Private Sub TestSubsAndFuns()
    Код = "1111112"
    If Not Connect1CDemoLocal() Then
    Exit Sub
    End If
    Call ДобавлениеНоменклатуры(Код, "шт", "Тест", "Тест")
    End Sub
    
    Sub ДобавлениеНоменклатуры(КодН, ЕдИзм, Name, Обозначение)
    ' Прошла проверку
    ' Добавляет номенклатуру и номенклатурную группу с указанными кодом, единицей измерения, наименованием, обозначением
    Код = СтрЗаменить(КодН, Chr(160), "")
    Set Справочники = V8.Справочники
    Set НовыйОбъект = Справочники.Номенклатура.СоздатьЭлемент()
    НовыйОбъект.Код = Код
    If СокрЛП(Обозначение) <> "" Then
    НовыйОбъект.Наименование = Обозначение + " " + Name
    НовыйОбъект.НаименованиеПолное = Обозначение + " " + Name
    Else
    НовыйОбъект.Наименование = Name
    НовыйОбъект.НаименованиеПолное = Name
    End If
    НовыйОбъект.Артикул = Обозначение
    НовыйОбъект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000002")
    НовыйОбъект.Родитель = Справочники.Номенклатура.НайтиПоКоду("00000000001")
    If Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм).Пустая() Then
    НовыйОбъект.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796", 0)
    Else
    НовыйОбъект.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм, 0)
    End If
    Set ОбъектЕдиницаХранения = Справочники.ЕдиницыИзмерения.СоздатьЭлемент()
    ОбъектЕдиницаХранения.Коэффициент = 1
    ОбъектЕдиницаХранения.ЕдиницаПоКлассификатору = НовыйОбъект.БазоваяЕдиницаИзмерения
    ОбъектЕдиницаХранения.Наименование = НовыйОбъект.БазоваяЕдиницаИзмерения.Наименование
    Call НовыйОбъект.Записать
    ОбъектЕдиницаХранения.Владелец = НовыйОбъект.Ссылка
    Call ОбъектЕдиницаХранения.Записать
    Call НовыйОбъект.Прочитать
    НовыйОбъект.ЕдиницаХраненияОстатков = ОбъектЕдиницаХранения.Ссылка
    НовыйОбъект.СтавкаНДС = V8.Перечисления.СтавкиНДС.НДС18
    'If Справочники.НоменклатурныеГруппы.НайтиПоКоду(Код).Пустая() Then
    '    Call ДобавлениеНоменклатурнойГруппы(Код, ЕдИзм, Name, Обозначение)
    'End If
    'НовыйОбъект.НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоКоду(Код)
    Call НовыйОбъект.Записать
    'pbStr = ShowProgressBarNote(pbStr, "Добавлена номенклатура - " + V8.СокрЛП(Обозначение) + " " + V8.СокрЛП(Name))
    End Sub
    
    Function Connect1CDemoLocal() 'Соединиться с 1С локально
    Dim ResConnection: ResConnection = True
    Set OneC = CreateObject("V81.COMConnector")
    On Error Resume Next
    Set V8 = OneC.Connect("File='D:Белоусов Станислав (Работа)1сТренировачная';Usr='Белоусов С.В.';Pwd='не скажу';")
    If Err.Description <> "" Then
    Call TCSApp.ShowErrorMessage(Err.Description)
    Err.Clear
    ResConnection = False
    End If
    On Error GoTo 0
    Connect1CDemoLocal = ResConnection
    End Function
    
    

    Вот весь исходник, может еще где косяк найдете
  10. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    ДобавлениеНоменклатуры("1111113", "шт", "Тест", "Тест");	
    КонецПроцедуры
    Процедура ДобавлениеНоменклатуры(Код, ЕдИзм, Name, Обозначение)
    НовыйОбъект=Справочники.Номенклатура.СоздатьЭлемент();
    НовыйОбъект.Код=Код;
    Если СокрЛП(Обозначение) <> "" Тогда
    НовыйОбъект.Наименование=СокрЛП(Обозначение) + " " + СокрЛП(Name);
    НовыйОбъект.НаименованиеПолное=СокрЛП(Обозначение) + " " + СокрЛП(Name);
    Иначе
    НовыйОбъект.Наименование=СокрЛП(Name);
    НовыйОбъект.НаименованиеПолное=СокрЛП(Name);
    КонецЕсли;
    НовыйОбъект.Артикул=Обозначение;
    НовыйОбъект.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоКоду("000000002");
    НовыйОбъект.Родитель=Справочники.Номенклатура.НайтиПоКоду("00000000001");
    ЕдИзмер=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм, 0);
    Если ЕдИзмер=Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
    НовыйОбъект.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796", 0);
    Иначе
    НовыйОбъект.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм, 0);
    КонецЕсли;
    ОбъектЕдиницаХранения = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
    ОбъектЕдиницаХранения.Коэффициент = 1;
    ОбъектЕдиницаХранения.ЕдиницаПоКлассификатору = НовыйОбъект.БазоваяЕдиницаИзмерения;
    ОбъектЕдиницаХранения.Наименование = НовыйОбъект.БазоваяЕдиницаИзмерения.Наименование;
    НовыйОбъект.Записать();
    ОбъектЕдиницаХранения.Владелец = НовыйОбъект.Ссылка;
    ОбъектЕдиницаХранения.Записать();
    НовыйОбъект.Прочитать();
    НовыйОбъект.ЕдиницаХраненияОстатков = ОбъектЕдиницаХранения.Ссылка;
    НовыйОбъект.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
    //  Чтобы НМК группы не добавлялись
    //	НГР = Справочники.НоменклатурныеГруппы.НайтиПоКоду(Код);
    //	Если НГР = Справочники.НоменклатурныеГруппы.ПустаяСсылка() Тогда
    //		ДобавлениеНоменклатурнойГруппы(Код, ЕдИзм, Name, Обозначение);
    //		НовыйОбъект.НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоКоду(Код);
    //	Иначе
    //		НовыйОбъект.НоменклатурнаяГруппа = НГР;
    //	КонецЕсли;
    НовыйОбъект.Записать();
    Сообщить ("Добавлена номенклатура - " + СокрЛП(Обозначение) + " " + СокрЛП(Name));
    КонецПроцедуры
    
    А вот рабочая внешняя обработка
  11. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Ну что врачи, симптомов достаточно? Я же сказал, что знаю к чему приведут подробности - НИ К ЧЕМУ. А вы сразу дразниться! И не стыдно? А разработчиков на этом форуме не сидит ни кто? Может они подскажут?
  12. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Абсолютно не стыдно. Мир таков, каким мы делаем его своим намерением. Если изначально больной настроен на то, что он безнадежен - лечить его бесполезно :) По симптомам судя - ковыряй эту обработку на VB - в частности попробуй упростить до минимума процедуру по созданию объекта в своей обработке. Если работает код обработки на 1Ске, попробуй на VB писать аналогично.

    Упрости задачу до минимума - создай отдельную обработку на VB попробуй создать ею объект в 1Ске. Если успешно пройдет - усложняй ее, добавляя код заполнения из своей обработки. Возможно наткнешься на инструкции в которых косяк. Возможно, так же, что проблема не с 1Ской, а с Аксесом, или чем ты там все это дело грузишь.

    Попробуй выдать пользователю от имени которого загружаешь полные права.
  13. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Полные права есть, задача итак упрощена до минимума. Придумайте что еще сделать, чтобы было еще минимальнее. В Accesse, если что
  14. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Плюнуть на акцесс - переписать все в 1С, сеанс обработки сосбтно "стартовать" из 1С. Это раз.

    Обложиться пряниками, печенюшками, кофием, пивом - и сесть за отладку. Ибо отлаживать программу с Ваших слов - это выше человеческий способностей. Написать программку пример - да не вопрос. Только чем оно Вам поможет (у Вас, с ваших слов, и Ваша программка работала), Брать Вашу конфигурацию, Ваши базы и Вашу программу (а еще и Вашу машину - ибо условия эксперимента должны максимально близко воспроизводить условия эксплуотации) и уже копать конкретно - это уже $ерьезная кон$ультация выходит.
  15. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Уважаемый, в обработке 1С указан код "1111113", а через access в конце пробелы.

    Далее: вы уверены, что Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796", 0) точно работает? Или вот это Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм, 0), а вот это Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм, 0);

    Вратце - косяк не в базе, а коде.
  16. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Нашел ссылку с тем же кодом ошибки (если делать через MSSQL):
    http://forum.freesoft.ru/lofiversion/index.php/t4051.html
    только как связаны сокеты с файловой версией?
    В общем проблема пока не решена
  17. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Если бы реквизит не был заполнен, под отладчиком его бы не было видно, на рис. как можно наблюдать - видно. Если обязательный реквизит не заполнить, будет ошибка с другим текстом
  18. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Кстати, а ТиИ делали?

    ЗЫ. Не всмартивался, но вот это меня смущает:

    ОбъектЕдиницаХранения.Коэффициент = 1
    ОбъектЕдиницаХранения.ЕдиницаПоКлассификатору = НовыйОбъект.БазоваяЕдиницаИзмерения
    ОбъектЕдиницаХранения.Наименование = НовыйОбъект.БазоваяЕдиницаИзмерения.Наименование
    Call НовыйОбъект.Записать
    ОбъектЕдиницаХранения.Владелец = НовыйОбъект.Ссылка
    Call ОбъектЕдиницаХранения.Записать

    Посмотрите код в типовой - как там записывается с владельцем единица хранения.
    У вас ед. неопределена в момент записи.
  19. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Делали.
    На счет кода - не смущайтесь. В конфигурации наверное также. Еще раз повторюсь эта же операция через внешнюю обработку прокатывает
  20. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    УРА!!! Нашел ошибку. Ошибка не в коде. Ошибка РАЗРАБОТЧИКОВ!!! Короче в чем конкретно она заключается я не знаю. Знаю как ее решить. В общем когда я ставлю в настройках прав пользователю все галочки (роли). Тогда - эта ошибка вылетает. А если поставлю только "Полные права" - эта ошибка не вылетает и все работает.!!!
    Так что тема форума не случайна. Это действительно пришло с обновлением

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