7.7 1С 7.7 Бух.учет, ред.4.5 ЗАПИСЬ нового элемента в Справочник.Номенклатура

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем Sergio2002, 17 апр 2013.

  1. TopicStarter Overlay
    Sergio2002
    Offline

    Sergio2002 Опытный в 1С

    Регистрация:
    5 мар 2013
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Получаю txt файл.
    Раскладываю его строки и пытаюсь создать новый товар в Справочник.Номенклатура в того Родителя,
    который получаю первым значением реквизита товара в текстовом файле - КодГруппы
    При работе в Отладчике выдает ошибку:
    Товарчик.Родитель=ГРТ;
    Глобальный модуль (12121) Не выбран элемент!

    Не могу понять в чем дело. Помогите


    Код:
    // Сообщить("---------------"+стр);
    НомРазд=Найти(стр," ; ");
    КодГруппы=Сред(стр,1,НомРазд-1);
    //  Сообщить("Группы"+КодГруппы);   
    ВрСтр=Сред(стр,НомРазд+3 );
    стр=ВрСтр;
    //  Сообщить("стр"+стр);
    
    НомРазд=Найти(стр," ; ");
    Код8=Сред(стр,1,НомРазд-1);
    //  Сообщить("Код8"+Код8);   
    ВрСтр=Сред(стр,НомРазд+3 );
    стр=ВрСтр;
    //  Сообщить("стр"+стр);   
    НомРазд=Найти(стр," ; ");
    Наим=Сред(стр,1,НомРазд-1);
    //  Сообщить("Наим"+Наим);   
    ВрСтр=Сред(стр,НомРазд+3);
    стр=ВрСтр;
    //  Сообщить("ВрСтр"+стр);   
    НомРазд=Найти(стр," ; ");
    КолВо=Число(Сред(стр,1,НомРазд-1));
    //  Сообщить("НомРазд"+НомРазд);   
    //  Сообщить("КолВо"+КолВо);   
    ВрСтр=Сред(стр,НомРазд+3);
    Цена=Число(ВрСтр);
    //  Сообщить("Цена"+Цена);   
    Товарчик= СоздатьОбъект("Справочник.Номенклатура");
    Товарчик.ВыбратьЭлементы();
    Если  Товарчик.НайтиПоРеквизиту("Код8",Код8,1)=0 Тогда	 
    Товарчик.новый();
    ГРТ= СоздатьОбъект("Справочник.Номенклатура");
    ГРТ.ВыбратьЭлементы();
    ГРТ.НайтиПоКоду(КодГруппы);
    Товарчик.Родитель=ГРТ;
    Товарчик.ТипТовара=Перечисление.ТипыТоваров.Собственный;
    Товарчик.ТипНоменклатуры=Перечисление.ТипыНоменклатуры.Товар;
    Товарчик.Наименование=Наим;
    Товарчик.ПолнНаименование="";
    Товарчик.Цена=Цена;
    Товарчик.Код8=Код8;
    Товарчик.СкладУчета=Константа.СкладРДля8;
    Справ = СоздатьОбъект("Справочник.ВидыНоменклатуры");
    Справ.НайтиПоНаименованию("Товар"); 
    Товарчик.ВидНоменклатуры=Справ.ТекущийЭлемент();
    Справ = СоздатьОбъект("Справочник.ЕдиницыИзмерений");
    Справ.НайтиПоНаименованию("шт"); 
    Товарчик.ЕдиницаИзмерения=Справ.ТекущийЭлемент();
    Товарчик.ПорядокХраненияОтпускнойЦены=2; //без НП (1-без налогов, 3-включая НП)
    Товарчик.РазделительУчета=Константа.РазделительУчетаДля8;
    
    Товарчик.Записать();
    Товарчик.СтавкаНДС.Установить(РабочаяДата(),Константа.ОсновнаяСтавкаНДС);
    Товарчик.Записать();
    Иначе
    Если не (Цена = Товарчик.Цена) Тогда 
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
      
    ...
    КодГруппы=СокрЛП(Сред(стр,1,НомРазд-1));//на всякий случай
    .....
    Товарчик= СоздатьОбъект("Справочник.Номенклатура");
    Товарчик.ВыбратьЭлементы();
    Если  Товарчик.НайтиПоРеквизиту("Код8",Код8,1)=0 Тогда  
    Товарчик.новый();
    ГРТ= СоздатьОбъект("Справочник.Номенклатура");
    ГРТ.ВыбратьЭлементы();
    Если ГРТ.НайтиПоКоду(КодГруппы,0)=0 Тогда  //а там случае не лидирующие нули? проверьте
    Сообщить("Не найдена группа с кодом "+КодГруппы);
    продолжить;
    КонецЕсли;
    Товарчик.Родитель=ГРТ;
  3. TopicStarter Overlay
    Sergio2002
    Offline

    Sergio2002 Опытный в 1С

    Регистрация:
    5 мар 2013
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Все в норме, Спасибо.
    Думаю проблема была в СокрЛП.

    Аааа, вопрос по поводу лидирующих нулей.
    Если я добавлю, предложенное Вами Если... с сообщением .............
    конечно же в номере кода (8-значный) присутствуют нули, пример, 00000246.

    Ведь добавленное "если...." по идее не должно повлиять на корректность работы процедуры????.
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если код элемента 00000023, а вы ищите 0023 - не найдет
  5. Vlan
    Offline

    Vlan Гость Гость

    Формат(КодГруппы,"Ч(0)8") должен помочь в этом деле.
  6. TopicStarter Overlay
    Sergio2002
    Offline

    Sergio2002 Опытный в 1С

    Регистрация:
    5 мар 2013
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Понял, спасибо.
    Маленький вопрос, в принципе не очень важный.
    Передаю в файл DBF дату накладной (наравне с другими данными), - вопрос, как передать
    вместе с датой еще и время проведения (в наст. момент передаются нули).
    Пробовал писать:
    ДБФ.DataRNK=РазобратьПозициюДокумента(Запрос.ТекущийДокумент); // изначально была просто дата ДБФ.DataRNK=Запрос.ТекущийДокумент.ДатаДок;
    что то не разбирает
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    попробуйте так
    Код:
    РазобратьПозициюДокумента(Запрос.ТекущийДокумент.ПолучитьПозицию())
  8. TopicStarter Overlay
    Sergio2002
    Offline

    Sergio2002 Опытный в 1С

    Регистрация:
    5 мар 2013
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    все ок - с .....ПолучитьПозицию() все прошло. Но не сразу. Поле ДБФ нужно было конечно же поставить в строковый формат (стоял в D).
    Можно вопросик не по этой теме:
    в 1С Предприятие 8.2 - сделал в роде все правильно:
    Код:
    &НаКлиенте
    Процедура ВыполнитьЗагрузкуРНК()
    ЗагрузкаРНК();
    КонецПроцедуры
    &НаСервере
    Процедура ЗагрузкаРНК()
    //лялялялял выполнение получения
    КонецПроцедуры
    ПодключитьОбработчикОжидания("ВыполнитьЗагрузкуРНК",60);
    
    делал и ПодключитьОбработчикОжидания("ВыполнитьЗагрузкуРНК",60, Истина);

    выдает ошибку при открытии формы :
    {Обработка.ПриемРНК_ДБФ.Форма.Форма.Форма(116)}: Ошибка при вызове метода контекста (ПодключитьОбработчикОжидания)
    ПодключитьОбработчикОжидания("ВыполнитьЗагрузкуРНК",60, Истина);
    по причине:
    Метод недоступен на сервере
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А где ваш код расположен?
  10. TopicStarter Overlay
    Sergio2002
    Offline

    Sergio2002 Опытный в 1С

    Регистрация:
    5 мар 2013
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Изначально, это была форма в ОБРАБОТКЕ - дает эту ошибку, которую описал.
    Потом я перенес процедуру в ОБЩИЙ МОДУЛЬ ПриемРНК - процедуру сделал &НаСервере, а &НаКлиенте - процедуру ВыполнитьЗагрузкуРНК(), которая
    обращается к первой.
    Т.к. в общем модуле могут быть только функции и процедуры, то я попробовал вставить
    ПодключитьОбработчикОжидания("ВыполнитьЗагрузкуРНК",60, Истина); в тело процедуры
    Общего Модуля - ПриНачалеРаботыСистемы() непосредственно перед КонцомПроцедуры
    в этом случае ошибку выдает следующую:

    {ОбщийМодуль.ОткрытиеФормПриНачалеРаботыСистемыКлиент.Модуль(23)}: Ошибка при вызове метода контекста (ПодключитьОбработчикОжидания)
    ПодключитьОбработчикОжидания("ВыполнитьЗагрузкуРНК", 60, Истина);
    по причине:
    Недопустимое значение параметра (параметр номер '1')
  11. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    "Экспорт" поставили?
  12. TopicStarter Overlay
    Sergio2002
    Offline

    Sergio2002 Опытный в 1С

    Регистрация:
    5 мар 2013
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    ДА, КОНЕЧНО, А ИНАЧЕ НЕ БУДЕТ ВИДЕТЬСЯ
  13. TopicStarter Overlay
    Sergio2002
    Offline

    Sergio2002 Опытный в 1С

    Регистрация:
    5 мар 2013
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Я попробовал поставить команду

    ПодключитьОбработчикОжидания("ВыполнитьЗагрузкуРНК", 60, Истина);

    в общий модуль "ОткрытиеФормПриНачалеРаботыСистемыВызовСервера" (последняя строчка перед КонецФункции)
    в этом случае при сохранении конфигурации дает ошибку, что
    "Процедура или функция с указанным именем не определан(ПодключитьОбработчкиОжидания).....(Проверка: Сервер)

    Естественно, обращение ОбработчикаОжидания к Процедуре "ВыполнитьЗагрузкуРНК" осуществляется в ОбщийМодуль
    "ПриемРНК", где у данной процедуры стоит "Экспорт"
  14. TopicStarter Overlay
    Sergio2002
    Offline

    Sergio2002 Опытный в 1С

    Регистрация:
    5 мар 2013
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    У меня кое-что получилось с небольшим затыком:
    - в общем модуле "ОткрытиеФормПриНачалеРаботыСистемыКлиент" прописал в конец "ВыполнитьЗагрузкуРНК();
    - далее это обращается в экспортную процедуру, созданного промежуточного модуля "ОбработкаОжидания" (свойства Клиент(упр.прил., Сервер, Вызов сервера), см.ниже:
    Код:
    &НаКлиенте[/size]
    Процедура ВыполнитьЗагрузкуРНК()   Экспорт
    ПодключитьОбработчикОжидания("УсловиеЗагрузкиРНК",10);
    КонецПроцедуры
    &НаКлиенте
    Процедура УсловиеЗагрузкиРНК()   Экспорт
    перем Запуск;
    Запуск=0;
    Если Запуск=0 Тогда
    Запуск=1;
    Считалочка();
    ПриемРНК.ЗагрузкаРНК();
    Запуск=0;
    КонецЕсли;
    КонецПроцедуры
    &НаКлиенте
    Процедура Считалочка()   Экспорт
    Сообщить("Считалочка");
    КонецПроцедуры
    - далее - обращается к общему модулю ПриемРНК.ЗагрузкаРНК() (без экспорта) (свойства модуля: Клиент (упр.прил.), Сервер,)
    - все вроде бы нормально
    запускаю программу
    через 10 секунд вижу сообщение "считалочка" и далее ругается:
    "Метод объекта не обнаружен (ЗагрузкаРНК)...... ПриемРНК.ЗагрузкаРНК(). ).
    О чем идет речь - не дохожу.....

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