| 
    
        
     
     | 
    
  | 
В тупике... Чтение CSV с разделителями и всяким мусором | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Maniac    
     07.02.19 
            ✎
    18:58 
 | 
         
        Короче решил я 1Сным методом (у меня был до этого не 1С)
 
        сделать чтение CSV и попался такой кривой файл насколько возможен. Во первых разделителем в нем является кавычки с ; - тоесть вот так - ";" А во вторых есть подстрока в которое клиент впихнул html описание в котором тоже идут переводы строк! Причем эксель открывает этот файл четко! А в 1С уже все перепробовал - все способы чтения текста, потоки и прочее.... Фиг с ним с разделителем ";", проблема просто тупо в количестве строк которое видит 1С. Вместо 50 строк - тым тысячи выходят из за того что есть подстрока в которое ПС. Я уже чо только не пробовал. Менял разделитель строк и тп. - не помогает. С клиентом ругаюсь, говорю меняйте формат или убирайте описание. Никак 1С не может этот файл читать.  | 
|||
| 
    1
    
        Maniac    
     07.02.19 
            ✎
    19:01 
 | 
         
        Вот на этом коде - все. уже фигня идет.
 
        ФайловыйПотокЧтение = Новый ФайловыйПоток(ИмяВременногоФайла,РежимОткрытияФайла.Открыть); ЧтениеТекста = Новый ЧтениеТекста(ФайловыйПотокЧтение,КодировкаТекста.ANSI); ВыборкаСтрока = ЧтениеТекста.ПрочитатьСтроку(); Пробовал и просто через. Тоже самое. ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ИмяВременногоФайла); Для ТекущаяСтрока = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл  | 
|||
| 
    2
    
        Maniac    
     07.02.19 
            ✎
    19:03 
 | 
         
        В параметр пытался ставить параметр конкретного символа перевода строк. Тоже не помогло.
 
        Всегда бьет на количество строк и реальных и тех кто в подстроке описания. А эксель открывает нормально!  | 
|||
| 
    3
    
        Salimbek    
     07.02.19 
            ✎
    19:07 
 | 
         
        (2) Да нет никаких проблем. Берешь, сначала заменяешь в своем тексте ПереводыСтроки на что-то свое, например "#$&^". Потом заменяешь ; на ПереводСтроки. Потом берешь очередную строку в ней меняешь "#$&^" на Перевод строки и полученное без изменений вставляешь в очередное поле.     
         | 
|||
| 
    4
    
        Maniac    
     07.02.19 
            ✎
    19:11 
 | 
         
        И как ты предлагаешь поменять если чтение идет построчно и больше никак     
         | 
|||
| 
    5
    
        Maniac    
     07.02.19 
            ✎
    19:12 
 | 
         
        а построчно уже хня     
         | 
|||
| 
    6
    
        Salimbek    
     07.02.19 
            ✎
    19:15 
 | 
         
        (4) Чуть сложнее, но тоже можно, тут главное - понять - перевод строки - это многострочный текст ячейки, или начало новой строки - для этого посмотри - если В конце строки идет "(кавычка) и только потом Перевод строки, то решаемо.     
         | 
|||
| 
    7
    
        Maniac    
     07.02.19 
            ✎
    19:18 
 | 
         
        Дело в том что тут как раз невозможно узнать где конец реальной строки.
 
        Реально их видно в экселе. А в 1С всего три метода. А то и вовсем один Прочитать. и он неуправляемый. там есть параметр символы. он но не помогает. Короче это баг платформы. а клиенту нужно менять файл. Хоть и ругаемся. Но это из за того что я раньше читал его без 1С.  | 
|||
| 
    8
    
        sieben    
     07.02.19 
            ✎
    19:18 
 | 
         
        (4) Эх, Маня-маня... 
 
        Ексель, он вообще читает посимвольно. Отслеживает кавычки и отличает перевод строки внутри кавычек от перевода строки вне. Один из них - часть данных, второй - конец порции данных. Похоже, тебе тоже пора обращаться на https://www.forum.mista.ru/pro/  | 
|||
| 
    9
    
        Web00001    
     07.02.19 
            ✎
    19:20 
 | 
         
        (4)>>И как ты предлагаешь поменять если чтение идет построчно и больше никак
 
        Очень большой файл?  | 
|||
| 
    10
    
        Maniac    
     07.02.19 
            ✎
    19:21 
 | 
         
        (8) давай так. кидаю. файл. ты делаешь методами 1С плачу пятерку.
 
        Не делаешь ты мне десятку.  | 
|||
| 
    11
    
        Maniac    
     07.02.19 
            ✎
    19:21 
 | 
         
        кавычки тут пофигу. никакого значения не имеют.     
         | 
|||
| 
    12
    
        Salimbek    
     07.02.19 
            ✎
    19:22 
 | 
         
        Хотя и без этого можно, у тебя, видимо, выгрузка из Экселя, с форматированием, типа Текст заключен в кавычки.
 
        Схема такая: 1) Берем очередную строку, заменяем в ней ; на Перевод строки 2) Перебираем все строки, этого многострочного текста и вставляем их в нужные ячейки, кроме последней. У последней строки смотри - если она началась с ", и последним символом НЕ " - значит у нас многострочный текст и начинаем к этой строке добирать следующие, пока не найдем следующую " 3) Оставшийся текст опять заменяем ; на ПС и разбираем строки дальше  | 
|||
| 
    13
    
        Salimbek    
     07.02.19 
            ✎
    19:22 
 | 
         
        (10) Да нет проблем - кидай     
         | 
|||
| 
    14
    
        sieben    
     07.02.19 
            ✎
    19:22 
 | 
         
        (10) А нахрен ты мне сдался?     
         | 
|||
| 
    15
    
        Maniac    
     07.02.19 
            ✎
    19:22 
 | 
         
        что реальная строка на кавычки заканчивается что подстрока.
 
        Если при открытии экселя я вообще убираю разделители. то все равно он делит строки как нада.  | 
|||
| 
    16
    
        Salimbek    
     07.02.19 
            ✎
    19:23 
 | 
         
        (15) Скинь кусок файла, я покручу, у меня часок времени есть свободного.     
         | 
|||
| 
    17
    
        Maniac    
     07.02.19 
            ✎
    19:25 
 | 
         
        (14) проверка твоего посыла к экспертам по 1С если я уверен что тут 1С ничего не сделает.     
         | 
|||
| 
    18
    
        mikecool    
     07.02.19 
            ✎
    19:26 
 | 
         
        html описание всегда имеет начало и конец     
         | 
|||
| 
    19
    
        mikecool    
     07.02.19 
            ✎
    19:26 
 | 
         
        (0) а чего отказался от импорта не 1с?     
         | 
|||
| 
    20
    
        sieben    
     07.02.19 
            ✎
    19:26 
 | 
         
        (17) Вот и молодец. Расскажи теперь об этом всем - это очень важно! И на сайте у себя напиши.     
         | 
|||
| 
    21
    
        Maniac    
     07.02.19 
            ✎
    19:28 
 | 
         
        (18) там не совсем  html...
 
        там тупо тоже текст просто в нем временами есть некоторые теги (типа списка, br) и т.п... те тоже не совсем html А вот ПС там точно есть потому что строки тупо переводятся и никаких тегов нет в тексте  | 
|||
| 
    22
    
        Maniac    
     07.02.19 
            ✎
    19:29 
 | 
         
        (19) да просто чуваки начали приходить с 100-200-300к строк
 
        даже 15 миллионов было. Решил не грузить ими. а напрямую через 1С  | 
|||
| 
    23
    
        ДенисЧ    
     07.02.19 
            ✎
    19:34 
 | 
         
        Про ODBC-драйвер уже говорили?     
         | 
|||
| 
    24
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    19:34 
 | 
         
        (0) Маня ты мануалы читать не пробовал?
 
        Хотя бы вики https://ru.wikipedia.org/wiki/CSV "Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными кавычками ("). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд." Часто не парясь все строковые значения обрамляют в "", вот и получается нечто ...","вроде","подобного","... Иногда бывают и нарушения формата CSV когда числа неправильно как строки (особенно если разделитель разрядов неправильный) и тоже в ""  | 
|||
| 
    25
    
        mikecool    
     07.02.19 
            ✎
    19:36 
 | 
         
        (23) он же вроде как эксель должен читать или ошибаюсь?     
         | 
|||
| 
    26
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    19:37 
 | 
         
        (0) >С клиентом ругаюсь, говорю меняйте формат или убирайте описание. Никак 1С не может этот файл читать.
 
        Ты заблуждаешься, 1С прекрасно умеет читать любые файлы. Даже бинарные.  | 
|||
| 
    27
    
        Maniac    
     07.02.19 
            ✎
    19:51 
 | 
         
        Короче вернул чтение без 1С) в топку стока времени долбаться     
         | 
|||
| 
    28
    
        Maniac    
     07.02.19 
            ✎
    19:56 
 | 
         
        (26) читать то читает!!  ОШИБОК НЕ ВЫДАЕТ
 
        но как читает и что выводит - ее уже не колышит))))  | 
|||
| 
    29
    
        Maniac    
     07.02.19 
            ✎
    19:57 
 | 
         
        Я грешу что виноват файл сто процентов.
 
        Ибо в текстовую строку была кинута подстрока которая содержит также переводы строк... При открытии эксель куча параметров есть. В 1С у методов чтения текстов - наифга нет. есть указание разделителя и он имеет ограниченное количество возможностей. У данных методов можно выбрать всего несколько вариантов. Вот и ВСЕ!  | 
|||
| 
    30
    
        ДенисЧ    
     07.02.19 
            ✎
    20:09 
 | 
||||
| 
    31
    
        Мимохожий Однако    
     07.02.19 
            ✎
    20:13 
 | 
         
        (29) Ты разве не знал? 
 
        -Восьмёрка еще сырая. Переходи на 7  | 
|||
| 
    32
    
        trad    
     07.02.19 
            ✎
    20:18 
 | 
         
        (27) слабак!     
         | 
|||
| 
    33
    
        trad    
     07.02.19 
            ✎
    20:21 
 | 
         
        (29) обратись к программистам, они умеют программировать     
         | 
|||
| 
    34
    
        Salimbek    
     07.02.19 
            ✎
    20:22 
 | 
         
        (29) Там не только с этим проблема, как оказалось
 
        1) Надо отслеживать использование Двойных кавычек ("") 2) Символ ; может быть не только в качестве разделителя ячеек, но и встречаться внутри блока текста, и тогда разбиение по этому символу дробит строку неправильно, так что надо отслеживать - мы сейчас в блоке текста, или нет 3) Надо правильно из всего этого собрать ячейки. Алгоритм рисуется, но сложновато. (посмотрел, бегло, через RegExp - тоже сходу сложное форматирование оно не берет)  | 
|||
| 
    35
    
        Мимохожий Однако    
     07.02.19 
            ✎
    20:36 
 | 
         
        Реализация влоб. Открывать программно через Эксель и читать     
         | 
|||
| 
    36
    
        Salimbek    
     07.02.19 
            ✎
    20:39 
 | 
         
        (35) Да мне уже просто интересно стало :-)     
         | 
|||
| 
    37
    
        Maniac    
     07.02.19 
            ✎
    20:41 
 | 
         
        Вернул клиенту как было. Теперь он точно никуда не уйдет.     
         | 
|||
| 
    38
    
        RomanYS    
     07.02.19 
            ✎
    21:28 
 | 
         
        (4) 
 
        1)ЧтениеТекста умеет читать любыми порциями, не только построчно 2) ничто не мешает собрать из нескольких строк одну Условие банальное: если содержимое ячейки началось кавычкой - должно закончиться кавычкой. Такие задачи для тестирования можно давать  | 
|||
| 
    39
    
        Maniac    
     07.02.19 
            ✎
    21:33 
 | 
         
        (38) не угадал. строго читает по разделителю. и он в 1С только перевод строки.     
         | 
|||
| 
    40
    
        Maniac    
     07.02.19 
            ✎
    21:35 
 | 
         
        а кавычек вообще нет такого.
 
        Кавычки можно применять для строк в 1С стрЗаменить и прочее. Но это уже никакого отношения к чтению конкретно файла не имеет.  | 
|||
| 
    41
    
        RomanYS    
     07.02.19 
            ✎
    21:36 
 | 
         
        (39) Женя, гадаешь ты. Куда пропали продавцы СП?     
         | 
|||
| 
    42
    
        Maniac    
     07.02.19 
            ✎
    21:37 
 | 
         
        так в СП зайди сам) и глянь.
 
        Мало того я на живом коде там все что было перещелка. в комбинациях. некоторые ваще не читает никак.  | 
|||
| 
    43
    
        ДенисЧ    
     07.02.19 
            ✎
    21:38 
 | 
         
        (41) У него денег не хватит     
         | 
|||
| 
    44
    
        Maniac    
     07.02.19 
            ✎
    21:39 
 | 
         
        Вы как Фома неверующий)
 
        Говоришь вам в 1С нет, все равно лепите что 1С все может все умеет)  | 
|||
| 
    45
    
        Salimbek    
     07.02.19 
            ✎
    21:41 
 | 
         
        (44) Лови     
         | 
|||
| 
    46
    
        RomanYS    
     07.02.19 
            ✎
    21:43 
 | 
         
        (42) 
 
        ЧтениеТекста (TextReader) Прочитать(<РазмерСтроки>) Параметры: <РазмерСтроки> (необязательный) Тип: Число. Размер возвращаемой строки. Если параметр не указан, текстовый файл читается до конца.  | 
|||
| 
    47
    
        RomanYS    
     07.02.19 
            ✎
    21:43 
 | 
         
        (42) 
 
        ПрочитатьСтроку(<Разделитель>) Параметры: <Разделитель> (необязательный) Тип: Строка. Разделитель строк. Если не указан, то совпадает с указанным при открытии файла. Значение по умолчанию: ПС.  | 
|||
| 
    48
    
        Maniac    
     07.02.19 
            ✎
    21:45 
 | 
         
        (45) не ну это не катит. код заточенный под файл с вагоном перебора и прочего.
 
        Я такие клиентам не даю.  | 
|||
| 
    49
    
        RomanYS    
     07.02.19 
            ✎
    21:46 
 | 
         
        (48) есть стандарт, если твой файл читается Excel, то худо-бедно он стандарту удовлетворяет     
         | 
|||
| 
    50
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    21:47 
 | 
         
        (38) >Такие задачи для тестирования можно давать
 
        Угу и выяснится что 90% "программистов" не знают что такое https://ru.wikipedia.org/wiki/Конечный_автомат  | 
|||
| 
    51
    
        Salimbek    
     07.02.19 
            ✎
    21:48 
 | 
         
        (49) Ага, именно так.
 
        (50) Ты телепат? Я сделал именно Конечным автоматом, правда аффтару, судя по (48) не понравилось :-)  | 
|||
| 
    52
    
        RomanYS    
     07.02.19 
            ✎
    21:49 
 | 
         
        (44) csv - это текст, никакой магии там нет. "Плохой" файл экселем не прочитается     
         | 
|||
| 
    53
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    21:50 
 | 
         
        (51) >Ты телепат?
 
        Разбор(парсер) CSV - это классическая задача посимвольной обработки  | 
|||
| 
    54
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    21:53 
 | 
||||
| 
    55
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    21:54 
 | 
         
        (54) + "Дополнение2: 
 
        функция, которая правильно считывает многострочные поля:"  | 
|||
| 
    56
    
        Maniac    
     07.02.19 
            ✎
    21:56 
 | 
         
        (51) ну мне то оно понятно почему не понравилось.
 
        но 1Сники от такого тащаться. Так что мож опубликовать на ИС может еще залайкают. И да - учитесь в своих программах ставить какое авторство. В текст кода, в заголовок, в комент обработки  | 
|||
| 
    57
    
        Maniac    
     07.02.19 
            ✎
    21:59 
 | 
         
        (54) пистец необыкновенный. 19 год на дворе.
 
        1С должна с одного метода читать как нада.... а 1С ники километры кода строчат для решения примитивной задачи, у которой вообще не должно быть проблемы.  | 
|||
| 
    58
    
        Maniac    
     07.02.19 
            ✎
    22:00 
 | 
         
        Самое прикольное в этом то.
 
        Что код наверстан на одном файле, как только попадется какой то в котом другая байда - то придется новый код писать. третий - третий код.  | 
|||
| 
    59
    
        Salimbek    
     07.02.19 
            ✎
    22:01 
 | 
         
        (53) Ну не посимвольной уж, зачем так грубо то ))
 
        (55) Прикольно (56) Дело не в том, тащатся ли 1С-ники, а в том, что данная задача именно такая... замороченная.  | 
|||
| 
    60
    
        Salimbek    
     07.02.19 
            ✎
    22:04 
 | 
         
        (58) Разумеется, так и будет, если тебе файл будет генерироваться по стандарту НЕ CSV, то и придется писать парсер для разбора НЕ CSV. Логично же.     
         | 
|||
| 
    61
    
        RomanYS    
     07.02.19 
            ✎
    22:06 
 | 
         
        (58) пока файл читается экселем - он не байда (и читатется 1с), не читается экселем - шлёшь поставщика файла лесом     
         | 
|||
| 
    62
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:07 
 | 
         
        1. Открыть экселем или либреофисом
 
        2. Сохранить как DBF 3. Прочитать в 1С 4. Профит?  | 
|||
| 
    63
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:08 
 | 
         
        (62)+ Хотя лучше в XLS(X) сохранять, потому что в DBF ограничения на длину полей     
         | 
|||
| 
    64
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:10 
 | 
         
        Если же подобные файлы надо постоянно автоматически загружать то я бы нашел/наваял ВК для 1С.
 
        Или поднял некий сервис предварительной обработки этих (или любых) файлов, с которым бы работал из 1С по http.  | 
|||
| 
    65
    
        Maniac    
     07.02.19 
            ✎
    22:10 
 | 
         
        (60) а вот это золотые слова.
 
        Так как по сути почти постоянно приходится писать уникальные обработки XML Вот уж что что а тут постоянно что ни файл, то чудотворство.  | 
|||
| 
    66
    
        Maniac    
     07.02.19 
            ✎
    22:13 
 | 
         
        Итого вывод - никогда не будет ни одного единства. пока тысячи людей генерят что попало как попало.
 
        ни о каком едином формате обмена данных и речи быть не может. Что в экселе, что в тексте, что в xml... чудят что хотят. Несмотря даже на дикую распространенность 1С.... казалось бы в которой есть встроенные прайс листы, люди присылают такую фигню... одна не похожая на другую. И при этом и близко не видно даже что это тупо 1Сный прайс (без разницы из какой типовой, уж что что а прайс из 1С можно почти сразу угадать)  | 
|||
| 
    67
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:14 
 | 
||||
| 
    68
    
        Salimbek    
     07.02.19 
            ✎
    22:16 
 | 
         
        (66) У тебя обычный файл CSV - сгенерированный именно по стандарту. И именно поэтому парсер этого файла обработает как такой файл, так и любой другой CSV-шник. Если тебе присылали ранее другие файлы - то можешь и их прогнать через эту обработку и проверить - правильно ли их разберет, или нет.     
         | 
|||
| 
    69
    
        Maniac    
     07.02.19 
            ✎
    22:16 
 | 
         
        (61) могу прислать файл из 87 листов. на которых почти каждый уникальное авно.
 
        Которое конечно можно прочитать но проще пристрелить того что делал , и заплатить денег за то чтобы оттуда откуда этот прайс выгружался какой нибудь CSV  | 
|||
| 
    70
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:23 
 | 
         
        (69) Все намного проще.
 
        Делается онлайн сервис в который просто можно загружать файлы и получать на выходе их в 1С. А что там внутри клиентам пофиг, они просто платят сервису. А внутри там сотрудники чем хотят тем и колбасят на лету файлы клиентов. Причем оплата идет как помесячная так и за каждый обработанный файл.  | 
|||
| 
    71
    
        Maniac    
     07.02.19 
            ✎
    22:24 
 | 
         
        Человек готов был потратится в 60 тысяч чтобы этот его прайс можно было грузить. Можно было б конечно застрять чтобы каждый лист в нем буквально по ячейке разложить.
 
        Но я не рискнул. И отказал. Это работа которую ни за какие деньги не хочется зависнуть.  | 
|||
| 
    72
    
        Maniac    
     07.02.19 
            ✎
    22:27 
 | 
         
        (70) уже есть и онлайн сервис, и компоненты и подключаемые обработки. все это уже есть.
 
        Да и проблемы с файлом в сабже то и не было. Решил что по легкому на 1С сейчас перекину.. и все.. ага... Только все равно конца и края нет каким то корявостям, в чем бы то ни было. так что никакого уникального и делающего все не будет.  | 
|||
| 
    73
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:29 
 | 
         
        (71) Ты просто зажрался.
 
        Отправь этого клиента с его 60к ко мне.  | 
|||
| 
    74
    
        Maniac    
     07.02.19 
            ✎
    22:29 
 | 
         
        (73) давай сначала прайс вышлю.
 
        И ты скажешь зажрался я или нет  | 
|||
| 
    75
    
        Maniac    
     07.02.19 
            ✎
    22:33 
 | 
         
        Выслал.     
         | 
|||
| 
    76
    
        Maniac    
     07.02.19 
            ✎
    22:34 
 | 
         
        прайс 87 листов. практичеки все равно что 87 прайсов.
 
        Да еще 90 процентов все КРИВЫЕ и косые. Везде характеристики во все стороны. И по разному. Есть там где на одном листе сразу несколько разных таблиц.  | 
|||
| 
    77
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:40 
 | 
         
        (74) (75) (76) Ты спрашивал как часто ассортимент меняется?
 
        Если только цены то даже этот пи*ц вполне можно автоматизировать довольно легко.  | 
|||
| 
    78
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:42 
 | 
         
        (77)+ По сути есть список номенклатуры (с характеристиками и/или опциями).
 
        И задача отыскать какая ячейка в файле соответствует какой номенклатуре с правильной характеристикой или доп.опцией.  | 
|||
| 
    79
    
        Maniac    
     07.02.19 
            ✎
    22:43 
 | 
         
        (77) не верю. ты сейчас преувеличиваешь свои возможности.
 
        За пять минут. Я думаю через еще 10-15 ты изменишь свое мнение. При правильной оценке своих трудозатрат, времени, нервов и всего всего остального.  | 
|||
| 
    80
    
        Maniac    
     07.02.19 
            ✎
    22:44 
 | 
         
        (78) то что там товары и цены - это не является открытием.     
         | 
|||
| 
    81
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:45 
 | 
         
        (79) Ты немного не понял, я бы это возложил на юзера.
 
        По сути показываем в 1С формочки и слева список номенклатуры (полученный отдельно). А юзер пусть для каждой номенклатуры выбирает нужный лист и тыкает в ячейку. Далее банально.  | 
|||
| 
    82
    
        hhhh    
     07.02.19 
            ✎
    22:46 
 | 
         
        (72) ну прочитай файл csv не Экселем, а блокнотом. Сразу увидишь чем отличаются строки.     
         | 
|||
| 
    83
    
        Salimbek    
     07.02.19 
            ✎
    22:46 
 | 
         
        (56) Уговорил, будет моя первая публикация (правда за 1 см, бесплатно не дает)
 
        http://catalog.mista.ru/public/999127/ Пока что на модерации и потому недоступно  | 
|||
| 
    84
    
        Maniac    
     07.02.19 
            ✎
    22:46 
 | 
         
        Задача конечно же тоже известна. Она всегда одна.
 
        Проще некуда. Результат очень простой - документ регистрация цен в 1С. Это даже и вопроса не стоит в задаче) она ясна как божий день.  | 
|||
| 
    85
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:47 
 | 
         
        (81)+ Кстати накопив опыт тыкания юзером можно уже задействовать ИИ алгоритмы и оно само будет автоматом тыкать с очень высоким процентом угадывания ))     
         | 
|||
| 
    86
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:48 
 | 
         
        (84) Если ассортимент меняется очень редко (пару раз в год) то задача решаема.
 
        Ты бы видел что творят на Kaggle не говорил бы что низзя.  | 
|||
| 
    87
    
        Maniac    
     07.02.19 
            ✎
    22:49 
 | 
         
        пусть тыкают что хотят и где хотят. это уже не ко мне.     
         | 
|||
| 
    88
    
        Maniac    
     07.02.19 
            ✎
    22:50 
 | 
         
        тыкать придется много! как минимум одновременно четырьмя мышками. а то и шестью. там на кажлом листе 7D кинотеатр     
         | 
|||
| 
    89
    
        Maniac    
     07.02.19 
            ✎
    22:52 
 | 
         
        и это кстати не один прайс. у него 25 поставщиков. 
 
        Есть и другие. Других производителей. Есть прайс на 30 листов - и там тоже все такое но другое 8D Человек на полном серьезе спрашивал сколько миллионов я возьму чтобы все автоматизировать.  | 
|||
| 
    90
    
        Maniac    
     07.02.19 
            ✎
    22:54 
 | 
         
        Я сказал просто - дешевле  пристрелить тех кто делал прайсы.
 
        Прийдут другие которые там отформатируют базы, зведут новые, перейдут на 1С и выкатят нужный прайс.  | 
|||
| 
    91
    
        Maniac    
     07.02.19 
            ✎
    22:57 
 | 
         
        Мебельщики чо богатые люди. У них пара миллионов за автоматизацию - вообще не деньги.
 
        Продать пару кухонь и 1 спальню. делов то... Но тока пока мебель шлепают где то в пригородских цехах городов миллионников, и там компьютера даже толком нет. все в тетрадках. а потом в экселе какая нить тетя Клава печатает чо почем.... это самая неавтоматизированная отрасль будет, в которой никакого даже и близко подобия обмена информацией не будет.  | 
|||
| 
    92
    
        Сияющий в темноте    
     07.02.19 
            ✎
    22:58 
 | 
         
        И чего вам не нравится?
 
        это настоящий csv,просто строки,как и положено в кавычках,а внутри строк все,что угодно. читать такой файл проще простого,но посимвольно через буфер. у меня на сях такое пишется и читается,т.к.Excel это на ура открывает-а другого способа сделать перевод строки внутри ячейки Excel я не знаю.  | 
|||
| 
    93
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    22:59 
 | 
         
        (90) Я уже говорил что нужен единый онлайн сервис прайсов и накладных, с публичными форматами и готовыми обработками для 1С.
 
        Поставщики туда заливают прайсы с накладными а их клиенты получают.  | 
|||
| 
    94
    
        Сияющий в темноте    
     07.02.19 
            ✎
    22:59 
 | 
         
        Сколько там платят за чтение файла?     
         | 
|||
| 
    95
    
        Maniac    
     07.02.19 
            ✎
    22:59 
 | 
         
        (92) конкретно даю ответ на конкретный вопрос.
 
        в 1С нет метода который вот эту элементращину читает сходу без прибегания к тому чтобы писать код на два листа экрана.  | 
|||
| 
    96
    
        Garykom    
     гуру 
    07.02.19 
            ✎
    23:00 
 | 
         
        (91) Зато все работой обеспечены ))     
         | 
|||
| 
    97
    
        Сияющий в темноте    
     07.02.19 
            ✎
    23:00 
 | 
         
        (93) оператор эдо это называется.     
         | 
|||
| 
    98
    
        Maniac    
     07.02.19 
            ✎
    23:01 
 | 
         
        (93) да говорить можно сколько угодно бесконечно.
 
        Только никто никогда не загонит всех поставщиков и клиентов в один сервис. Это уже просто само по себе невозможно в принципе.  | 
|||
| 
    99
    
        Сияющий в темноте    
     07.02.19 
            ✎
    23:01 
 | 
         
        (95)какие два экрана?вы чего,несколько строк,но придется бежать по строке.     
         | 
|||
| 
    100
    
        Maniac    
     07.02.19 
            ✎
    23:02 
 | 
         
        Мало того что никогда не будет такого сервиса, просто потому что ПОТОМУ.
 
        Так еще и кто туда зайдет может быстро выйдет! Потому что все друг другу в этом мире КОНКУРЕНТЫ. А когда ты куда то льешь свои данные - то уже будь готов что их кто то пистит. А именно твои конкуренты.  | 
|||
| 
    101
    
        Сияющий в темноте    
     07.02.19 
            ✎
    23:03 
 | 
         
        (98)если есть поставщик и он хочет тебе поставлять продукцию,то он может и о способе поставки прайса договорится.
 
        просто,поставщики конкуренты друг другу,и если цены сравнить сложно,то у него закажут что то,что дороже,чем у соседа.  | 
|||
| 
    102
    
        Maniac    
     07.02.19 
            ✎
    23:03 
 | 
         
        У меня есть клиенты, которые сказали мы не хотим чтобы нас кто то знал, слышал что вообще мы есть, что мы используем и работаем с тобой.
 
        Человек просто сказал - мне итак ХОРОШО! что никто не знает.  | 
|||
| 
    103
    
        Maniac    
     07.02.19 
            ✎
    23:06 
 | 
         
        (101) поставщикам щаз начхать. у них нет желания. У тех что есть. они выкатывают АПИ и все такое. 
 
        Крупныке логистические центры так называемые. И то у них там своя драка, запреты доступов, баны и все такое. Их парсят во всю и прочее прочее прочее. И все мелкие под них роют, так как каждому хочется места на солнце. Ни никто из них никогда не поломится в какие то сервисы.  | 
|||
| 
    104
    
        Maniac    
     07.02.19 
            ✎
    23:08 
 | 
         
        Причем итак уже были и есть сервисы. И как показала практика как только эти сервисы начинают парсить и все такое. то у них резко пропадает база клиентов которые дают инфо. ахахах     
         | 
|||
| 
    105
    
        Salimbek    
     07.02.19 
            ✎
    23:08 
 | 
         
        (99) Мне было лениво бегать по строке, потому я сделал в два экрана.
 
        Основной код из (83): ФайловыйПотокЧтение = Новый ФайловыйПоток(ИмяВременногоФайла,РежимОткрытияФайла.Открыть); ЧтениеТекста = Новый ЧтениеТекста(ФайловыйПотокЧтение,КодировкаТекста.ANSI); текПоле=""; Макет = ПолучитьПечатнуюФорму(); ннСтр=1; ннКол=1; Состояние = 0; //Читаем следующую строку Пока Состояние<100 Цикл Если Состояние = 0 Тогда ВыборкаСтрока = ЧтениеТекста.ПрочитатьСтроку(); //Сообщить("Начинаем чтение: "+ВыборкаСтрока); Если ВыборкаСтрока=Неопределено Тогда Состояние = 100; //Весь текст прочитан Иначе Состояние = 1; //Парсинг обычной строки КонецЕсли; ИначеЕсли Состояние = 1 Тогда замСтрока = СтрЗаменить(ВыборкаСтрока,"""""","$%*&"); парсСтрока = СтрЗаменить(замСтрока,";",Символы.ПС); колСтрок = СтрЧислоСтрок(парсСтрока); Сч = 1; Состояние = 2; //Перебираем обычную строку ИначеЕсли Состояние = 2 Тогда текСтрока = СтрПолучитьСтроку(парсСтрока,Сч); Сч = Сч+1; Если Лев(текСтрока,1)="""" Тогда текПоле = ""; текСтрока = Прав(текСтрока,СтрДлина(текСтрока)-1); Состояние = 3; //У нас сейчас в ячейке текст - собираем его до следующей кавычки Иначе текПоле = текСтрока; Состояние = 4; //Обычное поле - просто обрабатываем его КонецЕсли; ИначеЕсли Состояние = 3 Тогда Если Прав(текСтрока,1)="""" Тогда текСтрока = Лев(текСтрока,СтрДлина(текСтрока)-1); текПоле = текПоле + текСтрока; Состояние = 4; //Закончили сборку поля - обрабатываем его Иначе Состояние = 5; //Чтение следующего блока данных КонецЕсли; ИначеЕсли Состояние = 4 Тогда очСтрока = СтрЗаменить(текПоле,"$%*&",""""); Макет.Область(ннСтр,ннКол,ннСтр,ннКол).Текст=очСтрока; Если Сч>колСтрок Тогда ннКол=1; ннСтр=ннСтр+1; Состояние = 0; //Читаем следующую строку Иначе ннКол=ннКол+1; Состояние = 2; //Перебираем обычную строку КонецЕсли; ИначеЕсли Состояние = 5 Тогда текПоле = текПоле + текСтрока; Если Сч>колСтрок Тогда Состояние = 6; //Надо считать новую строку из файла для сборки многострочного текста Иначе // Была ошибочная замена ; - исправляем текСтрока = ";"+СтрПолучитьСтроку(парсСтрока,Сч); Сч = Сч + 1; Состояние = 3; //Продолжаем сборку текста КонецЕсли ИначеЕсли Состояние = 6 Тогда //Ранее был многострочный текст, так что считываем очередную строку ВыборкаСтрока = ЧтениеТекста.ПрочитатьСтроку(); //Сообщить("Следующая строка: "+ВыборкаСтрока); Если ВыборкаСтрока=Неопределено Тогда Состояние = 101; //Файл аварийно завершен Иначе Состояние = 7; //Парсинг строки с началом из многострочного текста КонецЕсли; ИначеЕсли Состояние = 7 Тогда замСтрока = СтрЗаменить(ВыборкаСтрока,"""""","$%*&"); парсСтрока = СтрЗаменить(замСтрока,";",Символы.ПС); колСтрок = СтрЧислоСтрок(парсСтрока); Сч = 1; текПоле = текПоле+Символы.ПС; Состояние = 8; //Перебираем сложную строку ИначеЕсли Состояние = 8 Тогда текСтрока = СтрПолучитьСтроку(парсСтрока,Сч); Сч = Сч+1; Если Прав(текСтрока,1)= """" Тогда текСтрока = Лев(текСтрока,СтрДлина(текСтрока)-1); Состояние = 4; //Закончили сборку поля - обрабатываем его Иначе Состояние = 5; //Чтение следующего блока данных КонецЕсли; КонецЕсли; КонецЦикла;  | 
|||
| 
    106
    
        uno-group    
     08.02.19 
            ✎
    10:13 
 | 
         
        Я для таких замороченных прайсов читал 50 строк и выводил юзеру таблицу чтобы он тыкнул где, что запоминал колонки, цвет жирность и прочие атрибуты для ячеек.
 
        После этого читал весь файл Excel. Показывал результат и если юзер соглашался что все ок, запоминал параметры для будущего чтения, нет повторял 1 этап. Настройка загрузки файла занимает 1-2 минуты и в большинстве случаев клиентов вполне устраивает.  | 
|||
| 
    107
    
        uno-group    
     08.02.19 
            ✎
    10:21 
 | 
         
        По сути в базе для каждого поставщика хранится табличка в виде; Товар:
 
        Колонка 2, Шрифт 12, Цвет Шрифта 45213. Цвет фона 5654. Жирность 1, курсив=0, Подчеркнут 0, отступ 3. И галочки использовать эти фильтры при чтение или нет. Цена: Колонка 2, Шрифт 12, Цвет Шрифта 45213. Цвет фона 5654. Жирность 0, курсив=0, Подчеркнут 0, отступ 3. Этого обычно достаточно для того чтобы юзер смог научить 1с читать самые извращенные Excel файлы за минимальное время.  | 
|||
| 
    108
    
        trad    
     08.02.19 
            ✎
    10:41 
 | 
         
        А что в 1с нету такого метода: ТЗ = ЧтениеВсего.ПрочитайтьВсякуюХреньВТаблицуЗначенний() ?
 
        Тупая одинесина, ничего не умеет. ©Maniac  | 
|||
| 
    109
    
        Maniac    
     08.02.19 
            ✎
    10:55 
 | 
         
        (106) каких таких. Я выслал прайс не тебе, а тот о ктором мы говорили в последних постах никакой настройке не подлежит     
         | 
|||
| 
    110
    
        Maniac    
     08.02.19 
            ✎
    10:57 
 | 
         
        (108) в данном конкретном случае мы выяснили конкртено проблему c CSV одним из самых примитивнейших форматов.
 
        Где действительно так и должно быть.  | 
|||
| 
    111
    
        Вафель    
     08.02.19 
            ✎
    10:58 
 | 
         
        (110) проблема была в том, что ты не знал как точка запятой в троках отрабатывается? 
        Кстати 77 умела корректно csv читать  | 
|||
| 
    112
    
        Maniac    
     08.02.19 
            ✎
    11:04 
 | 
         
        (111) пи...ц.
 
        100 постов обсуждали проблему, а в конце люди спрашивают а это про точку с запятой.  | 
|||
| 
    113
    
        Maniac    
     08.02.19 
            ✎
    11:05 
 | 
         
        Все короче я время не хочу тратить. вижу тупняк начинается, с утра неотоспавшиеся зевающие 1сники начинают подтягиваться     
         | 
|||
| 
    114
    
        Garykom    
     гуру 
    08.02.19 
            ✎
    11:15 
 | 
         
        (107) Молодца но чтобы правильно это применять сначала лучше изучить теорию
 
        http://www.machinelearning.ru/wiki/index.php?title=Признаковое_описание https://ru.wikipedia.org/wiki/Признаковое_описание  | 
|||
| 
    115
    
        rsv    
     08.02.19 
            ✎
    11:20 
 | 
         
        (0) ключевая фраза...ексель открывает чётко..т.е. Чтение уже кто то сделал..осталось просто файл аксель загрузить в 1с     
         | 
|||
| 
    116
    
        Лефмихалыч    
     08.02.19 
            ✎
    11:22 
 | 
         
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + путьИмяЦСВ + ";Extended Properties='text;HDR=YES;FMT=Delimited';"
 
        уже предлагали?  | 
|||
| 
    117
    
        Hillsnake    
     08.02.19 
            ✎
    11:30 
 | 
         
        TOBAP это уже находил в Экспортируемом?
 
        вот где засада.  | 
|||
| 
    118
    
        trad    
     08.02.19 
            ✎
    11:42 
 | 
         
        (113) ага Женя - молодец, одинесники - тупые     
         | 
|||
| 
    119
    
        ADirks    
     08.02.19 
            ✎
    11:47 
 | 
         
        (111) неа, не умела     
         | 
|||
| 
    120
    
        Garykom    
     гуру 
    08.02.19 
            ✎
    12:45 
 | 
         
        1C (неважно 77 или 8) умеет из коробки читать (методами высокого уровня) только упрощенные версии форматов.
 
        Это относится и к CSV и к DBF и к XLS.  | 
|||
| 
    121
    
        Maniac    
     08.02.19 
            ✎
    12:52 
 | 
         
        (120) ну и хорошо. Обеспечивают работой тысячи людей. рабочие места и прочее.
 
        Когда в 1С будет все... тогда все пипец... мы никому не нужны будем.  | 
|||
| 
    122
    
        Maniac    
     08.02.19 
            ✎
    12:53 
 | 
         
        Когда есть проблема кто то платит за решение этой проблемы.
 
        Нет проблем - нет программистов.  | 
|||
| 
    123
    
        Web00001    
     09.02.19 
            ✎
    06:49 
 | 
         
        (95)Сколько читаю никак не могу понять, что плохого, в том, что кода на два экрана, что плохого, что бы заюзать доп компоненту? Если задача в итоге решена и вопрос в сумме не стоит?     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |