|   |   | 
| 
 | Загрузка дублей номенклатуры | ☑ | ||
|---|---|---|---|---|
| 0
    
        falselight 21.03.19✎ 13:06 | 
        При загрузке номенклатуры, выявил что грузятся дубли.
 Каким образом вот этот код может допускать загрузку дублей? Подскажите пожалуйста. // // 2. НАИМЕНОВАНИЕ Если НомерНаименование <> 0 Тогда НомерСтроки_Стр = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0"); АдресОбластиНаименования = "R" + НомерСтроки_Стр + "C" + НомерНаименование + ":R" + НомерСтроки_Стр + "C" + НомерНаименование; Наименование = ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст; КонецЕсли; // ИмеющеесяНаименование = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, 1); Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда СпрНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); СпрНоменклатура.Наименование = СокрЛП(Наименование); //СпрНоменклатура.НаименованиеПолное = СокрЛП(Наименование); Иначе Сообщить("Номенклатура с наименованием " + СокрЛП(Наименование) + " уже существует!", СтатусСообщения.Информация); Возврат; КонецЕсли; // | |||
| 1
    
        falselight 21.03.19✎ 13:31 | 
        Никто не подскажет?     | |||
| 2
    
        Гипервизор 21.03.19✎ 13:34 | 
        Отладка точно подскажет.     | |||
| 3
    
        falselight 21.03.19✎ 13:36 | 
        Загрузка происходит в процедуре
 Процедура ДанныеЛистаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) | |||
| 4
    
        kuzyara 21.03.19✎ 13:37 | 
        СокрЛП перед поиском?     | |||
| 5
    
        falselight 21.03.19✎ 13:49 | 
        (4) наименования в справочнике стоят одинаковые     | |||
| 6
    
        Гипервизор 21.03.19✎ 13:53 | 
        (5) А при чем тут справочник, Наименование из ТабДок же. В ТабДоке тоже одинаковые?     | |||
| 7
    
        falselight 21.03.19✎ 14:00 | 
        Сейчас почему то зависает при открытии файла, и установке курсора на файле, висит и все.     | |||
| 8
    
        falselight 21.03.19✎ 14:11 | 
        Сделал СокрЛП(), но все равно не находит (
 // 2. НАИМЕНОВАНИЕ Если НомерНаименование <> 0 Тогда НомерСтроки_Стр = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0"); АдресОбластиНаименования = "R" + НомерСтроки_Стр + "C" + НомерНаименование + ":R" + НомерСтроки_Стр + "C" + НомерНаименование; Наименование = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст); КонецЕсли; // ИмеющеесяНаименование = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, 1); Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда | |||
| 9
    
        hhhh 21.03.19✎ 14:12 | 
        (5) вот тут склеротики какие- то
 Наименование = ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст; а надо Наименование = СокрЛП(ТабДок.ПолучитьОбласть(АдресОбластиНаименования).ТекущаяОбласть.Текст); | |||
| 10
    
        falselight 21.03.19✎ 14:14 | 
        (9) Я поправил в (8), проверил, дубли грузятся.
 Смотрел отладчиком по коду. Не находит элемент (((( А он уже есть!!! | |||
| 11
    
        falselight 21.03.19✎ 14:15 | 
        Что то не понятно ((((( Как быть то!?!     | |||
| 12
    
        1Сергей 21.03.19✎ 14:15 | 
        (10) значит не совпадает Наименование     | |||
| 13
    
        sqr4 21.03.19✎ 14:16 | 
        и какое наименование пропускает?     | |||
| 14
    
        falselight 21.03.19✎ 14:17 | 
        (12) Я смотрю в справочнике, они идентичны!!!!!
 (13) Сортирую в справочнике по наименованию, дубли идут один за одним. Номера разные. Например первые, с номером 2 и 38, и так далее. Они в разноброс грузятся. Но если отсортировать по наименованию видно. | |||
| 15
    
        falselight 21.03.19✎ 14:18 | 
        (13) Их много задваивается.     | |||
| 16
    
        sqr4 21.03.19✎ 14:18 | 
        (14) Наименование какое бл*ть пример дай сложно чтоли     | |||
| 17
    
        Гипервизор 21.03.19✎ 14:19 | 
        В чем проблема посмотреть отладчиком пошагово процесс дублирования конкретного наименования, которое дублироваться не должно?     | |||
| 18
    
        falselight 21.03.19✎ 14:21 | 
        Положил наименования в разные файлы. Сравнил файлы, пишет файлы идентичны.
 (17) Первое наименование проходит. Создается элемент справочника. Потом смотрю по артикулу, доходил до второго. Так вот эта строка не находит его, и дубль создается ((( ИмеющеесяНаименование = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, 1); Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда Может запросом выбирать а не функцией? | |||
| 19
    
        frost_x 21.03.19✎ 14:24 | 
        Возвращаемое значение:
 Тип: СправочникСсылка.<Имя справочника>; Неопределено. Ссылка на найденный элемент справочника. Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка. Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено. Т.е. вашем случае указано Точное соответствие и проверка должна быть не "Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда" а "Если ИмеющеесяНаименование = Неопределено Тогда" | |||
| 20
    
        sqr4 21.03.19✎ 14:28 | 
        (19) отладчик пустую ссылку возвращает     | |||
| 21
    
        falselight 21.03.19✎ 14:29 | 
        (19) Возвращается пустая ссылка!!!     | |||
| 22
    
        sqr4 21.03.19✎ 14:31 | 
        (19) Если бы было неопределено дублей бы не блыо     | |||
| 23
    
        Гипервизор 21.03.19✎ 14:36 | 
        (18) Так артикул или наименование? Сравнить Наименование в первой строке и во второй. Внимательно. Или даже программно.     | |||
| 24
    
        1Сергей 21.03.19✎ 14:37 | 
        НомерНаименование чему равно?     | |||
| 25
    
        falselight 21.03.19✎ 14:43 | 
        (24) Столбец 4, там наименование номенклатуры     | |||
| 26
    
        1Сергей 21.03.19✎ 14:43 | 
        Выполняется ли условие?
 Если НомерНаименование <> 0 Тогда | |||
| 27
    
        falselight 21.03.19✎ 14:44 | 
        (23) Там артикул отдельно и он же есть в наименовании
 Сравнил же говорю в разные файлы поместил и сравнил, пишет файлы идентичны. | |||
| 28
    
        falselight 21.03.19✎ 14:44 | 
        (26) Да, дам 4 в НомерНоменклатуры, 4-й столбец     | |||
| 29
    
        falselight 21.03.19✎ 14:48 | 
        (22) Оно не будет равно неопределено     | |||
| 30
    
        skafandr 21.03.19✎ 14:54 | 
        (29) а не лениво столько писать здесь чем один раз написать как люди советуют и тупо проверить?     | |||
| 31
    
        skafandr 21.03.19✎ 14:57 | 
        или напиши 
 Если ИмеющеесяНаименование.Пустая() Тогда | |||
| 32
    
        falselight 21.03.19✎ 15:06 | 
        (31) Видимо какие то заморочки что загрузка происходит вот в этой функции
 ДанныеЛистаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) возможно. Я тестирую. Ищу причину. | |||
| 33
    
        skafandr 21.03.19✎ 15:07 | 
        (32)какая разница из какой функции ищет ... справочник один на всех     | |||
| 34
    
        falselight 21.03.19✎ 15:30 | 
        всего строк нужно обработать 43, но почему то после 30, ДанныеСтроки.НомерСтроки становится снова 4
 То есть та строка с которой началось считывание! Это пока не понятно! | |||
| 35
    
        Злопчинский 21.03.19✎ 15:57 | 
        (34) да хрен тебя знает почему. ты же секретный физик. код с циклом привести страшно, посадят...     | |||
| 36
    
        falselight 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; КонецЕсли; // ТабДок = ""; КонецПроцедуры // | |||
| 37
    
        sqr4 21.03.19✎ 16:17 | 
        ДанныеЛистаПриВыводеСтроки а сколько строк в данныеЛИста?     | |||
| 38
    
        Гипервизор 21.03.19✎ 16:19 | 
        (36) Это к делу не относится, конечно, но забыли ставку НДС 20%.     | |||
| 39
    
        sqr4 21.03.19✎ 16:19 | 
        ХОтя по сути как это влияет.     | |||
| 40
    
        СтарПом 21.03.19✎ 16:24 | 
        НайтиПоНаименованию(Наименование, 1)?
 не НайтиПоНаименованию(Наименование, Истина)? | |||
| 41
    
        skafandr 21.03.19✎ 16:24 | 
        (36)Вы вообще читаете что Вам пишут?
 Если в (0) написано про дубли в справочнике Номенклатуры, то они могут возникать ровно в одном месте где создается элемент напишите вместо Если ИмеющеесяНаименование = Справочники.Номенклатура.ПустаяСсылка() Тогда строчку Если ИмеющеесяНаименование.Пустая() Тогда и результат сообщи | |||
| 42
    
        falselight 21.03.19✎ 16:26 | 
        (40) (41) Ок, сейчас попробую.
 Пока вижу такую коллизию. Загрузить нужно 43 строки. Но после загруженной 28 строки, данные строки становятся снова 4. Это от куда начинается загрузка. Это как понять? | |||
| 43
    
        sqr4 21.03.19✎ 16:27 | 
        (40) я пробовал одинаково у меня (41) и тут тоже одинаково, но ТС проверь     | |||
| 44
    
        falselight 21.03.19✎ 16:28 | 
        (42+) То есть проблема такая. В тз для загрузке куда прочитаны данные дублей нет.
 Но после 28 строки, начинается снова читать данные с 4-й строки, от куда пошла загрузка. И они двоятся, хотя уже загружены ((((( Почему так отрабатывает процедура не понятно! | |||
| 45
    
        falselight 21.03.19✎ 16:37 | 
        Проблема в том что почему то в процедуре ДанныеЛистаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
 ДанныеСтроки.НомерСтроки, прыгает хаотично, и сваливается на начало в процессе, и то что читается снова идет дублями это не понятно совсем ( | |||
| 46
    
        sqr4 21.03.19✎ 16:38 | 
        (45) я всегда думал что номенклатура создается по кнопке, а не при выводе строки)     | |||
| 47
    
        falselight 21.03.19✎ 16:39 | 
        Что получается в список заносить обработанные строки?
 И в нем искать, если уже были пропускать. Но почему так прыгает ДанныеСтроки.НомерСтроки? | |||
| 48
    
        falselight 21.03.19✎ 16:39 | 
        (46) Там нужно грузить картинки с листа, по этому сделано при выводе строки.
 Так как такой метод. | |||
| 49
    
        falselight 21.03.19✎ 16:40 | 
        (40) 1 это же и есть Истина     | |||
| 50
    
        falselight 21.03.19✎ 16:41 | 
        Может нужно как то свойства табличного поля поправить?
 Из за этого прыгают может данные строки????? | |||
| 51
    
        sqr4 21.03.19✎ 16:49 | 
        ДанныеЛиста - это что?     | |||
| 52
    
        sqr4 21.03.19✎ 16:50 | 
        (48) с какого листа?     | |||
| 53
    
        falselight 21.03.19✎ 16:53 | ||||
| 54
    
        falselight 21.03.19✎ 16:54 | 
        (52) Загрузка идет с листов эксель файла.
 Там есть картинки, я делал их загрузку в номенклатуру. | |||
| 55
    
        sqr4 21.03.19✎ 16:55 | 
        а почему циклом не перебрать значения ТЧ?     | |||
| 56
    
        falselight 21.03.19✎ 16:58 | 
        (55) Наверное из за картинки, -
 // 4. КАРТИНКА Если НомерКартинка <> 0 Тогда НужныеДанныеКартинки = "<Pic>"; НомерСтроки_Стр = Формат(ДанныеСтроки.НомерСтроки, "ЧН=0; ЧГ=0"); АдресОбластиРисунка = "R" + НомерСтроки_Стр + "C" + НомерКартинка + ":R" + НомерСтроки_Стр + "C" + НомерКартинка; Для Каждого РисунокТД ИЗ ТабДок.ПолучитьОбласть(АдресОбластиРисунка).Рисунки Цикл НужныеДанныеКартинки = РисунокТД.Картинка; // ДанныеЛиста[ДанныеСтроки.НомерСтроки-1][3] = НужныеДанныеКартинки; // ОформлениеСтроки.Ячейки.К3.Картинка = НужныеДанныеКартинки; // ---- //ХранилищеДополнительнойИнформацииСервер.ПолучитьСетевойКаталог(СетевойКаталог); //ВыбранноеИзображение = Новый Картинка(НужныеДанныеКартинки, Ложь); // НовыйОбъект = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент(); НовыйОбъект.Наименование = Наименование; НовыйОбъект.Хранилище = Новый ХранилищеЗначения(НужныеДанныеКартинки, Новый СжатиеДанных); НовыйОбъект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение; НовыйОбъект.Объект = СпрНоменклатура.Ссылка; //НовыйОбъект.ИмяФайла = ПроцедурыОбменаДанными.ПолучитьИмяФайлаИзПолногоПути(ДиалогОткрытияФайла.ПолноеИмяФайла); //Если НЕ ЗначениеЗаполнено(СетевойКаталог) Тогда //НовыйОбъект.Хранилище = Новый ХранилищеЗначения(НужныеДанныеКартинки, Новый СжатиеДанных); //КонецЕсли; НовыйОбъект.Записать(); СпрНоменклатура.ОсновноеИзображение = НовыйОбъект.Ссылка; // ---- ОформлениеСтроки.Ячейки.К3.АвтовысотаЯчейки = Истина; ОформлениеСтроки.Ячейки.К3.ВысотаЯчейки = 10; ОформлениеСтроки.Ячейки.К3.ОтображатьКартинку = Истина; // Прервать; КонецЦикла; КонецЕсли; // | |||
| 57
    
        falselight 21.03.19✎ 17:00 | 
        Свойства табличного поля нужно править что бы не скакало????
 ДанныеСтроки? | |||
| 58
    
        falselight 21.03.19✎ 17:12 | 
        Проблема следующая, данные строки при обработке, дойди до номера 40 ДанныеСтроки.НомерСтроки = 40
 становятся ДанныеСтроки.Номер = 1 ПОЧЕМУ? Они должны идти до 46 | |||
| 59
    
        hhhh 21.03.19✎ 17:13 | 
        (57) ПриВыводеСтроки нельзя делать, потому что она запускается при каждом перечитывании строки. То есть строка 4 может у вас 500 раз выводиться. А может и 600 раз. Ну или 700. Строка 5 тоже 600 раз.     | |||
| 60
    
        falselight 21.03.19✎ 17:19 | 
        (59) Нужно было считать картинку!!!!!
 Я это обрабатываю!!!!! Если ОбрЗавершена = 1 Тогда Возврат; КонецЕсли; // Я хотел обработать это табличное поле. И поставить флаг ОбрЗавершена = 1. Что бы более не выполнялся код. Так же можно? Почему ПриВыводеСтроки ДанныеСтроки.НомерСтроки, после 40 перелетают на 4, а не на 41? | |||
| 61
    
        falselight 21.03.19✎ 17:19 | 
        И почему не находятся уже созданные элементы справочника номенклатура, тоже не понятно!!!!!     | |||
| 62
    
        falselight 21.03.19✎ 17:28 | 
        Вот что я засек!!!!!
 После 40 строки, отрабатывает вот эта процедура. Обновляя список. И строка снова переносится в начало. Но почему она отрабатывает? // Процедура ЗагрузитьВ1С(Элемент) ФлагЗагрузки = Истина; // ЭлементыФормы.ДанныеЛиста.ОбновитьСтроки(); // КонецПроцедуры // | |||
| 63
    
        falselight 21.03.19✎ 17:29 | 
        (62+)  Это же процедура нажатия на кнопку и загрузки табличного документа.
 Почему она запустилась второй раз? Она же запускается при нажатии на кнопку??!!!!! | |||
| 64
    
        sqr4 21.03.19✎ 17:31 | 
        (62) это ты в оформление строк сохраняешь картинку, а потом грузишь в номенклатуру?     | |||
| 65
    
        falselight 21.03.19✎ 18:01 | 
        (64) видимо.     | |||
| 66
    
        falselight 21.03.19✎ 18:15 | 
        Почему после 40 строки вылетает в (62) Где это задано?     | |||
| 67
    
        falselight 21.03.19✎ 18:19 | 
        После 40-й строки, через точку останова установленной в этой процедуре (62)
 вылетает сразу на строку ЭлементыФормы.ДанныеЛиста.ОбновитьСтроки(); Как это происходит? | |||
| 68
    
        hhhh 21.03.19✎ 19:12 | 
        (67) наверно на экране 40 строк помещаются. Перечитывает экран. Попробуй изменить разрешение экрана.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |