|
Загрузка прайсов с учетом колонки обозначающей наличие | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
18.11.12
✎
17:15
|
Всем привет!
Давно уже создал обработку заполнения РегСв НоменклатураКонтрагентов. Скачиваю прайс , выставляю соответствия и... Загружаю. Если в прайсе была колонка по наличию со значением + или - , то я прямо в екселе фильтровал по значению "+" и пересохранял док. Сейчас же у поставщиков появились еще 2 склады. То есть таких колонок имеется уже 3 штуки! Строка может быть такой + - + , соответственно простым фильтром в Екселе этого не отфильтровать. Потому в обработке я добавил табличное поле , куда добавляю строки с названием колонки из прайса указывающей на наличие , и значением заполнения которое обозначает наличие. Делаю перебором в цыкле. Посмотрите , и скажите , правильно ли я сделал. Хотя работает ... ;) Запросом думал легче , но как то не знаю как в обработке обратиться к табличному полю на форме. Для Каждого СтрПоля ИЗ ТабПоле Цикл Наличие = Ложь; Если ТаблицаКолонокНаличия.Количество() > 0 Тогда Для Каждого СтрНаличия ИЗ ТаблицаКолонокНаличия Цикл Если СокрЛП(СтрНаличия.Значение) = СокрЛП(СтрПоля[СтрНаличия.ИмяКолонки]) Тогда Наличие = Истина; КонецЕсли; КонецЦикла; КонецЕсли; Если Наличие Тогда Сообщить(СтрПоля.Номер); КонецЕсли; КонецЦикла; А вот скрин обработки , чтобы понятнее было. http://cs416520.userapi.com/v416520065/6a7/YIGK4QdMRS4.jpg |
|||
1
Boudybuilder
18.11.12
✎
18:32
|
Получилось так. Работает нормально. И ,Вроде , быстро...
СписокНоменклатуры.Очистить(); НайденнаяСтрока = СоответствиеКолонок.Найти("Наименование", "ИмяКолонки"); Если НайденнаяСтрока <> Неопределено Тогда кНаименование = НайденнаяСтрока.КолонкаСоответствия; КонецЕсли; НайденнаяСтрока = СоответствиеКолонок.Найти("Код", "ИмяКолонки"); Если НайденнаяСтрока <> Неопределено Тогда кКод = НайденнаяСтрока.КолонкаСоответствия; КонецЕсли; НайденнаяСтрока = СоответствиеКолонок.Найти("Артикул", "ИмяКолонки"); Если НайденнаяСтрока <> Неопределено Тогда кАртикул = НайденнаяСтрока.КолонкаСоответствия; КонецЕсли; НайденнаяСтрока = СоответствиеКолонок.Найти("Штрихкод", "ИмяКолонки"); Если НайденнаяСтрока <> Неопределено Тогда кШтрихкод = НайденнаяСтрока.КолонкаСоответствия; КонецЕсли; Для Каждого СтрПоля ИЗ ТабПоле Цикл Наличие = Ложь; Если ТаблицаКолонокНаличия.Количество() > 0 Тогда Для Каждого СтрНаличия ИЗ ТаблицаКолонокНаличия Цикл Если СокрЛП(СтрНаличия.Значение) = СокрЛП(СтрПоля[СтрНаличия.ИмяКолонки]) Тогда Наличие = Истина; КонецЕсли; КонецЦикла; КонецЕсли; Если ТаблицаКолонокНаличия.Количество() > 0 Тогда Если Наличие Тогда НовСтр = СписокНоменклатуры.Добавить(); Если ЗначениеЗаполнено(кАртикул) Тогда НовСтр.АртикулНоменклатурыКонтрагента = СокрЛП(СтрПоля[кАртикул]); КонецЕсли; Если ЗначениеЗаполнено(кКод) Тогда НовСтр.КодНоменклатурыКонтрагента = СокрЛП(СтрЗаменить(СтрПоля[кКод],Символы.НПП,"")); КонецЕсли; Если ЗначениеЗаполнено(кНаименование) Тогда НовСтр.НаименованиеНоменклатурыКонтрагента = СокрЛП(СтрПоля[кНаименование]); КонецЕсли; Если ЗначениеЗаполнено(кШтрихкод) Тогда НовСтр.ШтрихКодНоменклатурыКонтрагента = СокрЛП(СтрПоля[кШтрихкод]); КонецЕсли; КонецЕсли; Иначе НовСтр = СписокНоменклатуры.Добавить(); Если ЗначениеЗаполнено(кАртикул) Тогда НовСтр.АртикулНоменклатурыКонтрагента = СокрЛП(СтрПоля[кАртикул]); КонецЕсли; Если ЗначениеЗаполнено(кКод) Тогда НовСтр.КодНоменклатурыКонтрагента = СокрЛП(СтрЗаменить(СтрПоля[кКод],Символы.НПП,"")); КонецЕсли; Если ЗначениеЗаполнено(кНаименование) Тогда НовСтр.НаименованиеНоменклатурыКонтрагента = СокрЛП(СтрПоля[кНаименование]); КонецЕсли; Если ЗначениеЗаполнено(кШтрихкод) Тогда НовСтр.ШтрихКодНоменклатурыКонтрагента = СокрЛП(СтрПоля[кШтрихкод]); КонецЕсли; КонецЕсли; КонецЦикла; Если НЕ ЗначениеЗаполнено(ТабПоле) Тогда Сообщить ("Отсутствуют данные для переноса!",СтатусСообщения.Информация); Возврат; КонецЕсли; |
|||
2
Boudybuilder
18.11.12
✎
18:36
|
Тут один вопросик.
Как мне сделать так чтобы значения строк полей наличия и соответсвия сохранялись соответсвенно реквизиту контрагент? Тоесть чтобы я по каждому контрагетку заново не перевыставлял где у него в какой колонке что... А при изменении контрагента все настройки по нему возвращались. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |