8.х Док Установка цен номенклатуры

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Dmitrij, 31 окт 2008.

  1. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Я заполняю табличную часть данными из ДБФ файла, подскажите как можно сделать чтоб одинаковые наименования не попадали туда, а переименовывались, а после добавлялись в ТЧ. :unsure:
  2. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Создать новый элемент и подставлять его. Вопрос четче задавайте.
  3. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Я хочу сделать проверку в дбф файле перед загрузкой в ут если есть одинаковые наименование номенклатуры тогда должно изменится например "_"+наименование в файле
  4. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Подскажите что можно сделать? Мне из дбф файла нужно загрузить данные в ут 10.3.5.1 в документ установка цен номенклатуры. Проблема в следующем в файле есть одинаковые наименование, но цены разные.
  5. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Покажите код, как там заполняется.... А то нефига не понятно
  6. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    // Вставить содержимое обработчика.
    ФайлДБФ = Новый XBase;
    ФайлДБФ.ОткрытьФайл(ФайлЗагрузки,,Истина);
    
    //Заполняем справочник номенклатуры
    Пока Не ФайлДБФ.ВКонце() Цикл
    //Создаем новый элемент в справочнике номенклатура
    Если Справочники.Номенклатура.НайтиПоНаименованию(ФайлДБФ.Hto,Истина)=Справочники.Номенклатура.ПустаяСсылка() Тогда
    НовЭлемСправНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
    Если Справочники.Номенклатура.НайтиПоНаименованию(ФайлДБФ.Hgr,Истина)=Справочники.Номенклатура.ПустаяСсылка() Тогда
    НовЭлемСправНоменклатураГр = Справочники.Номенклатура.СоздатьГруппу();
    НовЭлемСправНоменклатураГр.Наименование = ФайлДБФ.Hgr;
    НовЭлемСправНоменклатураГр.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар");
    НовЭлемСправНоменклатураГр.Записать();
    КонецЕсли;
    НовЭлемСправНоменклатура.Родитель=Справочники.Номенклатура.НайтиПоНаименованию(ФайлДБФ.Hgr);
    НовЭлемСправНоменклатура.Наименование=ФайлДБФ.Hto;
    НовЭлемСправНоменклатура.НаименованиеПолное=НовЭлемСправНоменклатура.Наименование;
    НовЭлемСправНоменклатура.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
    НовЭлемСправНоменклатура.ЕдиницаХраненияОстатков = НовЭлемСправНоменклатура.БазоваяЕдиницаИзмерения.Ссылка;
    НовЭлемСправНоменклатура.ЕдиницаДляОтчетов = НовЭлемСправНоменклатура.БазоваяЕдиницаИзмерения.Ссылка;
    НовЭлемСправНоменклатура.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоКоду("000000001");
    НовЭлемСправНоменклатура.Артикул = ФайлДБФ.Art;
    НовЭлемСправНоменклатура.Записать();
    КонецЕсли;
    Если НЕ ФайлДБФ.ВКонце() Тогда
    ФайлДБФ.Следующая();//перебираем табличную часть
    Иначе Прервать; 
    КонецЕсли;
    КонецЦикла;
    Сообщить ("Справочник номенклатуры заполнен");
    ФайлДБФ.ЗакрытьФайл();
    ФайлДБФ.ОткрытьФайл(ФайлЗагрузки,,Истина);
    //Создаем документ Установка цен номенклатуры
    //Заполняем шапку
    НовыйДок1=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    НовыйДок1.НеПроводитьНулевыеЗначения=Истина;
    НовыйДок1.Дата = ТекущаяДата();
    НовыйДок1.НеПроводитьНулевыеЗначения=Истина;
    НовыйДок1.Комментарий = "загружено из файла "+ФайлЗагрузки+" автоматически";
    //Заполняем табличную часть
    Пока Не ФайлДБФ.ВКонце() Цикл
    ТаблТЦ=НовыйДок1.ТипыЦен.Добавить();
    ТаблТЦ.ТипЦен=Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001");
    ТаблТовары=НовыйДок1.Товары.Добавить();
    ТаблТовары.Валюта=Справочники.Валюты.НайтиПоКоду("643");
    ТаблТовары.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(ФайлДБФ.Hto);
    Если Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(ФайлДБФ.Cei,Истина)=Справочники.ЕдиницыИзмерения.ПустаяСсылка() Тогда
    НовЭлемСправЕИ =Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
    НовЭлемСправЕИ.Владелец=ТаблТовары.Номенклатура;
    НовЭлемСправЕИ.Наименование=ФайлДБФ.Cei;
    НовЭлемСправЕИ.ЕдиницаПоКлассификатору=ФайлДБФ.Cei;
    НовЭлемСправЕИ.Коэффициент=1;
    НовЭлемСправЕИ.Записать();
    КонецЕсли;
    ТаблТовары.ЕдиницаИзмерения=Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(ФайлДБФ.Cei);
    //ТаблТовары.ТипЦен=Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001");
    ТаблТовары.Цена=ФайлДБФ.Cenp;
    ТаблТовары.ПроцентСкидкиНаценки=10;
    Если НЕ ФайлДБФ.ВКонце() Тогда
    ФайлДБФ.Следующая();//перебираем табличную часть
    
    Иначе
    Прервать;
    КонецЕсли;
    КонецЦикла;
    
    //Проводим документ
    НовыйДок1.Записать(РежимЗаписиДокумента.Проведение);
    //При проведении документа выходит сообщение что такая позиция уже существует
    ФайлДБФ.ЗакрытьФайл();
    КонецПроцедуры
    
    
  7. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ага, понял.
    1. Тогда вот объясните, почему у одой номенклатуры разные цены?
    2. Решение очень простое - добавьте поиск по ТЧ и смотрите, есть ли там уже такая номенклатура - если есть - меняйте наименование.
  8. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Мне удобней было бы изменять в файле имя,а потом загружать это реально? Просто мне несколько документов нужно создавать.
  9. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    сразу не обратил внимание, как сделать чтоб в справочник номенклатура добавлялись позиции с одинаковыми наименованиями, но разные артикула и соответственно затем также в документ
  10. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Через обработку документ создается и проводится пытаюсь открыть этот документ система выдает ошибку:
    {Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента(1130)}: Ошибка при вызове метода контекста (Добавить): Не уникальное имя!
    Кнопки.Добавить("Кнопка_" + НомерСоответствияТекущейКолонки, ТипКнопкиКоманднойПанели.Действие,
    по причине:
    Не уникальное имя!
    В чем проблема подскажите? Все ранее заданные вопросы отпадают!
  11. LordKim
    Offline

    LordKim Опытный в 1С

    Регистрация:
    11 мар 2008
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Вероятно кнопки создаются программно и кнопка с таким идентификатором уже существует.

    Посмотри в отладчике какие кнопки есть и какую пытается добавить метод
    "Кнопки.Добавить("Кнопка_" + НомерСоответствияТекущейКолонки, ТипКнопкиКоманднойПанели.Действие,"
  12. bartonio
    Offline

    bartonio

    Регистрация:
    18 ноя 2008
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Вот это надо перед циклом ставить
    ТаблТЦ=НовыйДок1.ТипыЦен.Добавить();ТаблТЦ.ТипЦен=Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001");

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