Вход | Регистрация
 

Загрузка дублей номенклатуры

Загрузка дублей номенклатуры
Я
   falselight
 
21.03.19 - 13:06
При загрузке номенклатуры, выявил что грузятся дубли.
Каким образом вот этот код может допускать загрузку дублей?
Подскажите пожалуйста.

        //
        // 2. НАИМЕНОВАНИЕ
        Если НомерНаименование <> 0 Тогда
            НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C" + НомерНаименование + ":R" + НомерСтроки_Стр + "C" + НомерНаименование;
            Наименование                 = ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст;
        КонецЕсли;
        //
        ИмеющеесяНаименование        = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, 1);
        Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда
            СпрНоменклатура                      = Справочники.Номенклатура.СоздатьЭлемент();
            СпрНоменклатура.Наименование         = СокрЛП(Наименование);
            //СпрНоменклатура.НаименованиеПолное = СокрЛП(Наименование);
        Иначе
            Сообщить("Номенклатура с наименованием " + СокрЛП(Наименование) + " уже существует!", СтатусСообщения.Информация);
            Возврат;
        КонецЕсли;
        //
 
 
   falselight
 
1 - 21.03.19 - 13:31
Никто не подскажет?
   Гипервизор
 
2 - 21.03.19 - 13:34
Отладка точно подскажет.
   falselight
 
3 - 21.03.19 - 13:36
Загрузка происходит в процедуре

Процедура ДанныеЛистаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   kuzyara
 
4 - 21.03.19 - 13:37
СокрЛП перед поиском?
   falselight
 
5 - 21.03.19 - 13:49
(4) наименования в справочнике стоят одинаковые
   Гипервизор
 
6 - 21.03.19 - 13:53
(5) А при чем тут справочник, Наименование из ТабДок же. В ТабДоке тоже одинаковые?
   falselight
 
7 - 21.03.19 - 14:00
Сейчас почему то зависает при открытии файла, и установке курсора на файле, висит и все.
   falselight
 
8 - 21.03.19 - 14:11
Сделал СокрЛП(), но все равно не находит (

        // 2. НАИМЕНОВАНИЕ

        Если НомерНаименование <> 0 Тогда
            НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C" + НомерНаименование + ":R" + НомерСтроки_Стр + "C" + НомерНаименование;
            Наименование                 = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
        КонецЕсли;
        //

        ИмеющеесяНаименование = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, 1); 
        Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда
   hhhh
 
9 - 21.03.19 - 14:12
(5) вот тут склеротики какие- то
            Наименование                 = ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст;


а надо 

            Наименование                 = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
   falselight
 
10 - 21.03.19 - 14:14
(9) Я поправил в (8), проверил, дубли грузятся.
Смотрел отладчиком по коду. Не находит элемент (((( А он уже есть!!!
 
 Рекламное место пустует
   falselight
 
11 - 21.03.19 - 14:15
Что то не понятно ((((( Как быть то!?!
   1Сергей
 
12 - 21.03.19 - 14:15
(10) значит не совпадает Наименование
   sqr4
 
13 - 21.03.19 - 14:16
и какое наименование пропускает?
   falselight
 
14 - 21.03.19 - 14:17
(12) Я смотрю в справочнике, они идентичны!!!!!
(13) Сортирую в справочнике по наименованию, дубли идут один за одним.
Номера разные. Например первые, с номером 2 и 38, и так далее.
Они в разноброс грузятся. Но если отсортировать по наименованию видно.
   falselight
 
15 - 21.03.19 - 14:18
(13) Их много задваивается.
   sqr4
 
16 - 21.03.19 - 14:18
(14) Наименование какое бл*ть пример дай сложно чтоли
   Гипервизор
 
17 - 21.03.19 - 14:19
В чем проблема посмотреть отладчиком пошагово процесс дублирования конкретного наименования, которое дублироваться не должно?
   falselight
 
18 - 21.03.19 - 14:21
Положил наименования в разные файлы. Сравнил файлы, пишет файлы идентичны.

(17) Первое наименование проходит. Создается элемент справочника.
Потом смотрю по артикулу, доходил до второго. Так вот эта строка не находит его, и дубль создается (((

ИмеющеесяНаименование = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, 1); 
        Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда


Может запросом выбирать а не функцией?
   frost_x
 
19 - 21.03.19 - 14:24
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>; Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено.
Т.е. вашем случае указано Точное соответствие и проверка должна быть не "Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда" 
а "Если ИмеющеесяНаименование = Неопределено Тогда"
   sqr4
 
20 - 21.03.19 - 14:28
(19) отладчик пустую ссылку возвращает
   falselight
 
21 - 21.03.19 - 14:29
(19) Возвращается пустая ссылка!!!
   sqr4
 
22 - 21.03.19 - 14:31
(19) Если бы было неопределено дублей бы не блыо
   Гипервизор
 
23 - 21.03.19 - 14:36
(18) Так артикул или наименование? Сравнить Наименование в первой строке и во второй. Внимательно. Или даже программно.
   1Сергей
 
24 - 21.03.19 - 14:37
НомерНаименование чему равно?
   falselight
 
25 - 21.03.19 - 14:43
(24) Столбец 4, там наименование номенклатуры
   1Сергей
 
26 - 21.03.19 - 14:43
Выполняется ли условие?
Если НомерНаименование <> 0 Тогда
   falselight
 
27 - 21.03.19 - 14:44
(23) Там артикул отдельно и он же есть в наименовании
Сравнил же говорю в разные файлы поместил и сравнил, пишет файлы идентичны.
   falselight
 
28 - 21.03.19 - 14:44
(26) Да, дам 4 в НомерНоменклатуры, 4-й столбец
   falselight
 
29 - 21.03.19 - 14:48
(22) Оно не будет равно неопределено
   skafandr
 
30 - 21.03.19 - 14:54
(29) а не лениво столько писать здесь чем один раз написать как люди советуют и тупо проверить?
   skafandr
 
31 - 21.03.19 - 14:57
или напиши 
  Если ИмеющеесяНаименование.Пустая() Тогда
   falselight
 
32 - 21.03.19 - 15:06
(31) Видимо какие то заморочки что загрузка происходит вот в этой функции
ДанныеЛистаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

возможно. Я тестирую. Ищу причину.
   skafandr
 
33 - 21.03.19 - 15:07
(32)какая разница из какой функции ищет ... справочник один на всех
 
 
   falselight
 
34 - 21.03.19 - 15:30
всего строк нужно обработать 43, но почему то после 30, ДанныеСтроки.НомерСтроки становится снова 4
То есть та строка с которой началось считывание! Это пока не понятно!
   Злопчинский
 
35 - 21.03.19 - 15:57
(34) да хрен тебя знает почему. ты же секретный физик. код с циклом привести страшно, посадят...
   falselight
 
36 - 21.03.19 - 16:13
(35)

Процедура ДанныеЛистаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    //

    Если ФлагЗагрузки = Ложь Тогда
        Возврат;
    КонецЕсли;
    //

    Если ОбрЗавершена = 1 Тогда
        Возврат;
    КонецЕсли;
    //

    Если НомерПервойСтроки > ДанныеСтроки.НомерСтроки Тогда
        Возврат;
    КонецЕсли;
    //

    // - Загружаемые данные -

    // 1.  Артикул

    // 2.  Наименование

    // 3.  Цена

    // 4.  Картинка

    // 5.  Проба

    // 6.  Ед. Изм.

    // 7.  Группа номенклатуры

    // 8.  Ставка НДС

    // 9.  Тип изделия

    // 10. ПолноеНаименование

    // 11. Размер

    //

    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ЭтотОбъект.ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);    
    Если ЭлементыФормы.ДанныеЛиста.Значение.Количество() > КолВоСтрокТЗ Тогда
        //

        // 2. НАИМЕНОВАНИЕ

        Если НомерНаименование <> 0 Тогда
            НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C" + НомерНаименование + ":R" + НомерСтроки_Стр + "C" + НомерНаименование;
            Наименование                 = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
        КонецЕсли;
        //

        ИмеющеесяНаименование = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, 1); 
        ИмеющеесяНаименование2 = НайтиНоменклатуру(Наименование);        
        Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда
            СпрНоменклатура                      = Справочники.Номенклатура.СоздатьЭлемент();
            СпрНоменклатура.Наименование         = СокрЛП(Наименование);
            //СпрНоменклатура.НаименованиеПолное = СокрЛП(Наименование);

        Иначе
            Сообщить("Номенклатура с наименованием " + СокрЛП(Наименование) + " уже существует!", СтатусСообщения.Информация);
            Возврат;
        КонецЕсли;
        //

        // 1. АРТИКУЛ

        Если НомерАртикул <> 0 Тогда 
            НомерСтроки_Стр         = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиАртикула    = "R" + НомерСтроки_Стр + "C" + НомерАртикул + ":R" + НомерСтроки_Стр + "C" + НомерАртикул;
            Артикул                 = ТабДок.ПолучитьОбласть(АдресОбластиАртикула).ТекущаяОбласть.Текст;
            СпрНоменклатура.Артикул = СокрЛП(Артикул);
        КонецЕсли;
        //

        // 3. ЦЕНА

        Если НомерЦены <> 0 Тогда
            НомерСтроки_Стр  = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиЦены = "R" + НомерСтроки_Стр + "C" + НомерЦены + ":R" + НомерСтроки_Стр + "C" + НомерЦены;
            Цена             = ТабДок.ПолучитьОбласть(АдресОбластиЦены).ТекущаяОбласть.Текст;
        КонецЕсли;
        //

        // 4. КАРТИНКА

        Если НомерКартинка <> 0 Тогда 
            НужныеДанныеКартинки = "<Pic>";
            НомерСтроки_Стр      = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиРисунка  = "R" + НомерСтроки_Стр + "C" + НомерКартинка + ":R" + НомерСтроки_Стр + "C" + НомерКартинка;
            Для Каждого РисунокТД ИЗ ТабДок.ПолучитьОбласть(АдресОбластиРисунка).Рисунки Цикл
                НужныеДанныеКартинки                          = РисунокТД.Картинка;
                //

                ДанныеЛиста[ДанныеСтроки.НомерСтроки-1][3]    = НужныеДанныеКартинки;
                //

                ОформлениеСтроки.Ячейки.К3.Картинка           = НужныеДанныеКартинки; 
                // ----

                //ХранилищеДополнительнойИнформацииСервер.ПолучитьСетевойКаталог(СетевойКаталог);

                //ВыбранноеИзображение    = Новый Картинка(НужныеДанныеКартинки, Ложь);

                //

                НовыйОбъект              = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
                НовыйОбъект.Наименование = Наименование;
                НовыйОбъект.Хранилище    = Новый ХранилищеЗначения(НужныеДанныеКартинки, Новый СжатиеДанных);
                НовыйОбъект.ВидДанных      = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
                НовыйОбъект.Объект          = СпрНоменклатура.Ссылка;
                //НовыйОбъект.ИмяФайла      = ПроцедурыОбменаДанными.ПолучитьИмяФайлаИзПолногоПути(ДиалогОткрытияФайла.ПолноеИмяФайла);

                //Если НЕ ЗначениеЗаполнено(СетевойКаталог) Тогда

                    //НовыйОбъект.Хранилище = Новый ХранилищеЗначения(НужныеДанныеКартинки, Новый СжатиеДанных);

                //КонецЕсли;

                НовыйОбъект.Записать();
                СпрНоменклатура.ОсновноеИзображение           = НовыйОбъект.Ссылка;
                // ----

                ОформлениеСтроки.Ячейки.К3.АвтовысотаЯчейки   = Истина;
                ОформлениеСтроки.Ячейки.К3.ВысотаЯчейки       = 10;
                ОформлениеСтроки.Ячейки.К3.ОтображатьКартинку = Истина; 
                //

                Прервать;
            КонецЦикла;
        КонецЕсли;
        //

        // 5. ПРОБА

        Если НомерПробы <> 0 Тогда 
            НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C" + НомерПробы + ":R" + НомерСтроки_Стр + "C" + НомерПробы;
            Проба                        = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
            НайденнаяПроба               = Справочники.Пробы.НайтиПоНаименованию(Проба, 1);
            Если НайденнаяПроба <> Справочники.Пробы.ПустаяСсылка() Тогда
                СпрНоменклатура.Проба = НайденнаяПроба;
            Иначе
                Сообщить("Проба " + Проба + " не найдена в справочнике пробы!", СтатусСообщения.Важное);
            КонецЕсли;
        КонецЕсли;
        // 6. ЕД. ИЗМ.

        //НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");

        //АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C4:R" + НомерСтроки_Стр + "C" + 4;

        //Наименование                 = ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст;

        //СпрНоменклатура.Наименование = Наименование;

        // БАЗОВАЯ ЕДИНИЦА ИЗМЕРЕНИЯ ПО УМОЛЧАНИЮ

        Если НомерЕдИзм <> 0 Тогда
            НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C" + НомерЕдИзм + ":R" + НомерСтроки_Стр + "C" + НомерЕдИзм;
            ЕдИзм                        = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
            НайденнаяЕдИзм               = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм, 1);
            Если НайденнаяЕдИзм <> Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
                СпрНоменклатура.БазоваяЕдиницаИзмерения = НайденнаяЕдИзм;
            Иначе
                Сообщить("Единица измерения " + ЕдИзм + " не найдена в справочнике классификатор единиц измерения!", СтатусСообщения.Важное);
                СпрНоменклатура.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
                Сообщить("Установлена единица измерения по умолчанию " + ЕдИзм + " шт!", СтатусСообщения.Информация);
            КонецЕсли;
        Иначе
            СпрНоменклатура.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
            Сообщить("Установлена единица измерения по умолчанию " + ЕдИзм + " шт", СтатусСообщения.Информация);
        КонецЕсли;
        //

        // 7. ГРУППА НОМЕНКЛАТУРЫ

        Если НомерГруппыНоменклатуры <> 0 Тогда
            НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C" + НомерГруппыНоменклатуры + ":R" + НомерСтроки_Стр + "C" + НомерГруппыНоменклатуры;
            ГруппаНоменклатуры             = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
            НайденнаяГруппаНоменклатуры  = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(ГруппаНоменклатуры, 1);
            Если НайденнаяГруппаНоменклатуры <> Справочники.НоменклатурныеГруппы.ПустаяСсылка() Тогда
                СпрНоменклатура.НоменклатурнаяГруппа = НайденнаяГруппаНоменклатуры;
            Иначе
                Сообщить("Группа номенклатуры " + ГруппаНоменклатуры + " не найдена в справочнике номенклатурные группы!", СтатусСообщения.Важное);
            КонецЕсли;
        КонецЕсли;
        // 8. СТАВКА НДС

        Если НомерСтавкиНДС <> 0 Тогда
            НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C" + НомерСтавкиНДС + ":R" + НомерСтроки_Стр + "C" + НомерСтавкиНДС;
            СтавкаНДС                    = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
            Если СтавкаНДС = "Без НДС" Тогда
                СпрНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;                
            ИначеЕсли СтавкаНДС = "НДС 18" Тогда
                СпрНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;    
            ИначеЕсли СтавкаНДС = "НДС 10" Тогда
                СпрНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10;
            КонецЕсли;
        КонецЕсли;
        // 9. ТИП ИЗДЕЛИЯ

        Если НомерТипаИзделия <> 0 Тогда  
            НомерСтроки_Стр              = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования     = "R" + НомерСтроки_Стр + "C" + НомерТипаИзделия + ":R" + НомерСтроки_Стр + "C" + НомерТипаИзделия;
            ТипИзделия                   = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
            НайденныйТипИзделия          = Справочники.ТипыИзделий.НайтиПоНаименованию(ТипИзделия, 1);
            Если НайденныйТипИзделия <> Справочники.ТипыИзделий.ПустаяСсылка() Тогда
                СпрНоменклатура.ТипИзделия = НайденныйТипИзделия;
            Иначе
                Сообщить("Тип изделия " + ТипИзделия + " не найден в справочнике типы изделий!", СтатусСообщения.Важное);
            КонецЕсли;
        КонецЕсли;
        //

        // 10. ПОЛНОЕ НАИМЕНОВАНИЕ

        Если НомерПолноеНаименование <> 0 Тогда  
            НомерСтроки_Стр                    = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования           = "R" + НомерСтроки_Стр + "C" + НомерПолноеНаименование + ":R" + НомерСтроки_Стр + "C" + НомерПолноеНаименование;
            ПолноеНаименование                 = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст);
            СпрНоменклатура.НаименованиеПолное = СокрЛП(ПолноеНаименование);
        КонецЕсли;
        //

        // 11. РАЗМЕР

        Если НомерРазмер <> 0 Тогда  
            НомерСтроки_Стр          = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиНаименования = "R" + НомерСтроки_Стр + "C" + НомерРазмер + ":R" + НомерСтроки_Стр + "C" + НомерРазмер;
            Размер                   = ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст;
            СпрНоменклатура.Размер1  = ЧИСЛО(СокрЛП(Размер));
        КонецЕсли;
        //

        ГруппаЭксель = Справочники.Номенклатура.НайтиПоНаименованию("EXCEL2", 1);
        Если ГруппаЭксель <> Справочники.Номенклатура.ПустаяСсылка() Тогда
            СпрНоменклатура.Родитель = ГруппаЭксель;
        Иначе
            ГруппаЭксель = Справочники.Номенклатура.СоздатьГруппу();
            ГруппаЭксель.Наименование = "EXCEL2";
            ГруппаЭксель.Записать();
            СпрНоменклатура.Родитель = ГруппаЭксель.Ссылка;
            Сообщить("Созданна группа " + "EXCEL2", СтатусСообщения.Информация);
        КонецЕсли;
        СпрНоменклатура.Записать();        
        Сообщить(СТРОКА(ДобавленнаяСтрока) + ". Загружен элемент номенклатуры " + СпрНоменклатура.Код + ", "+ СпрНоменклатура.Наименование);
        КолВоСтрокТз      = КолВоСтрокТЗ + 1;
        ДобавленнаяСтрока = ДобавленнаяСтрока + 1;
    Иначе
        Сообщить("Загрузка позиций номенклатуры с выбранного листа excel произведена в каталог <<EXCEL2>>", СтатусСообщения.Информация);
        ОбрЗавершена = 1;
    КонецЕсли;
    //

    ТабДок = "";
КонецПроцедуры
//
   sqr4
 
37 - 21.03.19 - 16:17
ДанныеЛистаПриВыводеСтроки а сколько строк в данныеЛИста?
   Гипервизор
 
38 - 21.03.19 - 16:19
(36) Это к делу не относится, конечно, но забыли ставку НДС 20%.
   sqr4
 
39 - 21.03.19 - 16:19
ХОтя по сути как это влияет.
   СтарПом
 
40 - 21.03.19 - 16:24
НайтиПоНаименованию(Наименование, 1)?
не НайтиПоНаименованию(Наименование, Истина)?
   skafandr
 
41 - 21.03.19 - 16:24
(36)Вы вообще читаете что Вам пишут?

Если в (0) написано про дубли в справочнике Номенклатуры, то они могут возникать ровно в одном месте где создается элемент
напишите вместо 

        Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда

строчку 
       
       Если ИмеющеесяНаименование.Пустая() Тогда


и результат сообщи
   falselight
 
42 - 21.03.19 - 16:26
(40) (41) Ок, сейчас попробую.
Пока вижу такую коллизию. Загрузить нужно 43 строки.
Но после загруженной 28 строки, данные строки становятся снова 4.
Это от куда начинается загрузка. Это как понять?
   sqr4
 
43 - 21.03.19 - 16:27
(40) я пробовал одинаково у меня (41) и тут тоже одинаково, но ТС проверь
   falselight
 
44 - 21.03.19 - 16:28
(42+) То есть проблема такая. В тз для загрузке куда прочитаны данные дублей нет.
Но после 28 строки, начинается снова читать данные с 4-й строки, от куда пошла загрузка. И они двоятся, хотя уже загружены (((((
Почему так отрабатывает процедура не понятно!
   falselight
 
45 - 21.03.19 - 16:37
Проблема в том что почему то в процедуре ДанныеЛистаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

ДанныеСтроки.НомерСтроки, прыгает хаотично, и сваливается на начало в процессе, и то что читается снова идет дублями это не понятно совсем (
   sqr4
 
46 - 21.03.19 - 16:38
(45) я всегда думал что номенклатура создается по кнопке, а не при выводе строки)
   falselight
 
47 - 21.03.19 - 16:39
Что получается в список заносить обработанные строки?
И в нем искать, если уже были пропускать.
Но почему так прыгает ДанныеСтроки.НомерСтроки?
   falselight
 
48 - 21.03.19 - 16:39
(46) Там нужно грузить картинки с листа, по этому сделано при выводе строки.
Так как такой метод.
   falselight
 
49 - 21.03.19 - 16:40
(40) 1 это же и есть Истина
 
 Рекламное место пустует
   falselight
 
50 - 21.03.19 - 16:41
Может нужно как то свойства табличного поля поправить?
Из за этого прыгают может данные строки?????
   sqr4
 
51 - 21.03.19 - 16:49
ДанныеЛиста - это что?
   sqr4
 
52 - 21.03.19 - 16:50
(48) с какого листа?
   falselight
 
53 - 21.03.19 - 16:53
   falselight
 
54 - 21.03.19 - 16:54
(52) Загрузка идет с листов эксель файла.
Там есть картинки, я делал их загрузку в номенклатуру.
   sqr4
 
55 - 21.03.19 - 16:55
а почему циклом не перебрать значения ТЧ?
   falselight
 
56 - 21.03.19 - 16:58
(55) Наверное из за картинки, -

        // 4. КАРТИНКА

        Если НомерКартинка <> 0 Тогда 
            НужныеДанныеКартинки = "<Pic>";
            НомерСтроки_Стр      = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0");
            АдресОбластиРисунка  = "R" + НомерСтроки_Стр + "C" + НомерКартинка + ":R" + НомерСтроки_Стр + "C" + НомерКартинка;
            Для Каждого РисунокТД ИЗ ТабДок.ПолучитьОбласть(АдресОбластиРисунка).Рисунки Цикл
                НужныеДанныеКартинки                          = РисунокТД.Картинка;
                //

                ДанныеЛиста[ДанныеСтроки.НомерСтроки-1][3]    = НужныеДанныеКартинки;
                //

                ОформлениеСтроки.Ячейки.К3.Картинка           = НужныеДанныеКартинки; 
                // ----

                //ХранилищеДополнительнойИнформацииСервер.ПолучитьСетевойКаталог(СетевойКаталог);

                //ВыбранноеИзображение    = Новый Картинка(НужныеДанныеКартинки, Ложь);

                //

                НовыйОбъект              = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
                НовыйОбъект.Наименование = Наименование;
                НовыйОбъект.Хранилище    = Новый ХранилищеЗначения(НужныеДанныеКартинки, Новый СжатиеДанных);
                НовыйОбъект.ВидДанных      = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
                НовыйОбъект.Объект          = СпрНоменклатура.Ссылка;
                //НовыйОбъект.ИмяФайла      = ПроцедурыОбменаДанными.ПолучитьИмяФайлаИзПолногоПути(ДиалогОткрытияФайла.ПолноеИмяФайла);

                //Если НЕ ЗначениеЗаполнено(СетевойКаталог) Тогда

                    //НовыйОбъект.Хранилище = Новый ХранилищеЗначения(НужныеДанныеКартинки, Новый СжатиеДанных);

                //КонецЕсли;

                НовыйОбъект.Записать();
                СпрНоменклатура.ОсновноеИзображение           = НовыйОбъект.Ссылка;
                // ----

                ОформлениеСтроки.Ячейки.К3.АвтовысотаЯчейки   = Истина;
                ОформлениеСтроки.Ячейки.К3.ВысотаЯчейки       = 10;
                ОформлениеСтроки.Ячейки.К3.ОтображатьКартинку = Истина; 
                //

                Прервать;
            КонецЦикла;
        КонецЕсли;
        //
   falselight
 
57 - 21.03.19 - 17:00
Свойства табличного поля нужно править что бы не скакало????
ДанныеСтроки?
   falselight
 
58 - 21.03.19 - 17:12
Проблема следующая, данные строки при обработке, дойди до номера 40 ДанныеСтроки.НомерСтроки = 40
становятся ДанныеСтроки.Номер = 1 ПОЧЕМУ? Они должны идти до 46
   hhhh
 
59 - 21.03.19 - 17:13
(57) ПриВыводеСтроки нельзя делать, потому что она запускается при каждом перечитывании строки. То есть строка 4 может у вас 500 раз выводиться. А может и 600 раз. Ну или 700. Строка 5 тоже 600 раз.
   falselight
 
60 - 21.03.19 - 17:19
(59) Нужно было считать картинку!!!!!

Я это обрабатываю!!!!!
    Если ОбрЗавершена = 1 Тогда
        Возврат;
    КонецЕсли;
    //


Я хотел обработать это табличное поле. И поставить флаг ОбрЗавершена = 1. Что бы более не выполнялся код.
Так же можно?
Почему ПриВыводеСтроки ДанныеСтроки.НомерСтроки, после 40 перелетают на 4, а не на 41?
   falselight
 
61 - 21.03.19 - 17:19
И почему не находятся уже созданные элементы справочника номенклатура, тоже не понятно!!!!!
   falselight
 
62 - 21.03.19 - 17:28
Вот что я засек!!!!!
После 40 строки, отрабатывает вот эта процедура. Обновляя список.
И строка снова переносится в начало. Но почему она отрабатывает?

//

Процедура ЗагрузитьВ1С(Элемент)
    ФлагЗагрузки = Истина;
    //

    ЭлементыФормы.ДанныеЛиста.ОбновитьСтроки();
    //

КонецПроцедуры
//
   falselight
 
63 - 21.03.19 - 17:29
(62+)  Это же процедура нажатия на кнопку и загрузки табличного документа.
Почему она запустилась второй раз? Она же запускается при нажатии на кнопку??!!!!!
   sqr4
 
64 - 21.03.19 - 17:31
(62) это ты в оформление строк сохраняешь картинку, а потом грузишь в номенклатуру?
   falselight
 
65 - 21.03.19 - 18:01
(64) видимо.
   falselight
 
66 - 21.03.19 - 18:15
Почему после 40 строки вылетает в (62) Где это задано?
   falselight
 
67 - 21.03.19 - 18:19
После 40-й строки, через точку останова установленной в этой процедуре (62)
вылетает сразу на строку

  ЭлементыФормы.ДанныеЛиста.ОбновитьСтроки();

Как это происходит?
   hhhh
 
68 - 21.03.19 - 19:12
(67) наверно на экране 40 строк помещаются. Перечитывает экран. Попробуй изменить разрешение экрана.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует