Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 янв 2026, 08:26

соответствие перед загрузкой в excel

Автор sali, Вчера в 14:09

sali и 1 гость просматривают эту тему.

sali

загрузка данных из excel на турецком либо английском языке. чтобы переводить и отображать на русском нужен справочник аля Сопоставления, где будет слово и в тч его значения , к примеру:
слово "DERİ" с турецкого это кожа. в момент загрузки, программа проходит по ячейкам, и появляется слово оно должно найти его в спр и подставить, а если не нашел то создать или выбрать.
слово на русском это будет наименование, а турецкие или англ слова в тч .потому что у них например черный цвет может быть записан в excel как Black 20, Black floter или brawn croco у них тоже может быть черным цветом

вопрос: как эффективнее читать, сопоставлять, искать (добавлять новый/выбирать), заполнять таблицу?

sali

прописывается такая логика
процедура заполнения тч
Для сч = 2 по КоличествоСтрок Цикл
Если НЕ СокрЛП(Excel.Cells(сч, 1).Text) = ""   Тогда  
         НоваяСтрока = Объект.ДанныеФайла.Добавить(); 
         НоваяСтрока.цвет = СопоставлениеСлов(СокрЛП(Excel.Cells(сч, 18).Text)); 
идем в процедуру сопоставления
&НаСервеРЕ
ПРоцедурА СопоставлениеСлов(ИщемСлово)

КэшСлов = Новый Соответствие;

ПоискСлово = ИщемСлово;
Если ЗначениеЗаполнено(КэшСлов.Получить(ПоискСлово)) Тогда
// Продолжить;
КонецЕсли;

Слово =  Справочники.Сопоставление.НайтиПоРеквизиту("НаименованиеПолное", ПоискСлово);

Если НЕ ЗначениеЗаполнено(слово) Тогда
        // открыть форму выбора и выбрать или создается и туда (уже в тч) передается  слово , а в наименовании пишется перевод                 
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Слово", ИщемСлово);

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


КонецЕсли;

КэшСлов.Вставить(ПоискСлово, Слово);

КонецПРоцедуры 

но открыть форму на сервере не могу

antoneus

Ага, и при каждом вызове КэшСлов = Новый Соответствие, круто.

Нет, кэш слов заводится в процедуре чтения и передается в процедуру поиска.

sali

Цитата: antoneus от Вчера в 14:30при каждом вызове КэшСлов = Новый Соответствие, круто.
нее не при каждом, это черновой вариант, набросок
Цитата: antoneus от Вчера в 14:30заводится в процедуре чтения
ПриЧтенииСозданииНаСервере() или чтении файла?

sali

а нееее, только щас дошло что такое не пойдет. в файле есть ссылки изображений, цифры, буквы - и по моей логике в кэш соответствий тоже должно записаться, но и говорить выборку по конкретным колонкам тоже абсурдно. тогда нужно при заполнении строки (где, НоваяСтрока.Сезон = СокрЛП(Excel.Cells(сч, 11).Text); такое) отсылать в процедуру, сопоставлять и либо выбирать либо вставлять , создавать

sali

как там можно было на сервере открыть форму с отбором?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск