|
v7: Сваял обработку загрузки справочника. Пришел за пинками. | ☑ | ||
---|---|---|---|---|
0
bizon2008
29.08.11
✎
16:53
|
День добрый народ. Коли не в тягость гляньте обработку. Заранее премного благодарен.
//******************************************* Процедура Сформировать() тзТовар.Очистить(); тзТовар.НоваяКолонка("Код"); тзТовар.НоваяКолонка("Товар"); тзТовар.НоваяКолонка("Ед"); тзТовар.НоваяКолонка("Цена"); тзТовар.НоваяКолонка("ШтрихКод"); тзТовар.НоваяКолонка("Кф"); тзТовар.НоваяКолонка("КодЧП"); тзТовар.УстановитьПараметрыКолонки("Код", , , , ,8); тзТовар.УстановитьПараметрыКолонки("Товар", , , , ,50); тзТовар.УстановитьПараметрыКолонки("Ед", , , , ,5); тзТовар.УстановитьПараметрыКолонки("Цена","Число",10,2, ,15); тзТовар.УстановитьПараметрыКолонки("ШтрихКод", , , , ,15); тзТовар.УстановитьПараметрыКолонки("Кф","Число",10,3, ,10); тзТовар.УстановитьПараметрыКолонки("КодЧП", , , , ,2); Текст = СоздатьОбъект("Текст"); Список = СоздатьОбъект("СписокЗначений"); Текст.Открыть("c:\tmp\spr_tovar.txt"); Для Ном=1 По Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(Ном); Список.ИзСтрокиСРазделителями(Стр); //преобразуем строку в список значений тзТовар.НоваяСтрока(); тзТовар.Код = Список.ПолучитьЗначение(1); тзТовар.Товар = Список.ПолучитьЗначение(2); тзТовар.Ед = Список.ПолучитьЗначение(3); тзТовар.Цена = Список.ПолучитьЗначение(4); тзТовар.ШтрихКод = Список.ПолучитьЗначение(5); тзТовар.Кф = Список.ПолучитьЗначение(6); тзТовар.КодЧП = Список.ПолучитьЗначение(7); КонецЦикла; Сообщить("Закончено"); КонецПроцедуры Процедура СоздатьНовуюКарточкуТовара() СпрТовар = СоздатьОбъект("Справочник.Номенклатура"); СпрЕдиницы = СоздатьОбъект("Справочник.Единицы"); СпрЦены = СоздатьОбъект("Справочник.Цены"); СпрКлассификаторЕдИзм = СоздатьОбъект("Справочник.КлассификаторЕдИзм"); СпрТовар.ИспользоватьДату(ТекущаяДата()); СпрЦены.ИспользоватьДату(ТекущаяДата()); тзТовар.ВыбратьСтроки(); Пока тзТовар.ПолучитьСтроку()=1 Цикл //Если не нашли единицу измерения товар не записывать. Если СпрКлассификаторЕдИзм.НайтиПоНаименованию(тзТовар.Ед) = 0 Тогда Сообщить("Не найдена единица измерения - " + тзТовар.Ед + " для товара - " + тзТовар.Товар); Продолжить; КонецЕсли; ЭтоНовый = 0; //Ищем товар по общему коду, если не найден создаем новый. Если СпрТовар.НайтиПоРеквизиту("КодЧр",тзТовар.Код, 0) = 0 Тогда СпрТовар.Новый(); СпрТовар.КодЧр = тзТовар.Код; ЭтоНовый = 1; КонецЕсли; СпрТовар.Наименование = тзТовар.Товар; СпрТовар.ПолнНаименование = тзТовар.Товар; СпрТовар.ВалютаУчета = Константа.ОсновнаяВалюта; СпрТовар.БазоваяЕдиница = СпрКлассификаторЕдИзм.ТекущийЭлемент(); СпрТовар.СтавкаНДС=Константа.ОсновнаяСтавкаНДС; СпрТовар.ВидТовара=Перечисление.ВидыТоваров.Товар; СпрТовар.ТипТовара=Перечисление.ТипыТоваров.Штучный; СпрТовар.ШтрихКод = тзТовар.ШтрихКод; СпрТовар.Записать(); Сообщить("Товар записан - " + тзТовар.Товар); //Заполнение подчиненых спрвочников Если СпрТовар.НайтиПоРеквизиту("КодЧр",тзТовар.Код, 0) = 1 Тогда //Заполнение починеного справочника единицы СпрЕдиницы.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент()); Если СпрЕдиницы.НайтиПоНаименованию(тзТовар.Ед) = 0 Тогда СпрЕдиницы.Новый(); СпрЕдиницы.Наименование = СпрКлассификаторЕдИзм.ТекущийЭлемент().Наименование; КонецЕсли; СпрЕдиницы.Единица = СпрКлассификаторЕдИзм.ТекущийЭлемент(); СпрЕдиницы.ШтрихКод = тзТовар.ШтрихКод;; СпрЕдиницы.Коэффициент = тзТовар.Кф; СпрЕдиницы.Записать(); //Установка единицы по умолчанию Если ЭтоНовый = 1 Тогда СпрЕдиницы.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент()); Если СпрЕдиницы.НайтиПоНаименованию(тзТовар.Ед) = 1 Тогда СпрТовар.ЕдиницаПоУмолчанию = СпрЕдиницы.ТекущийЭлемент(); СпрТовар.Записать(); Иначе Сообщить("Единица измерения не найдена" + тзТовар.Товар +"не удалось заполнить единицу измерения по умолчанию "); КонецЕсли; КонецЕсли; //Заполнение подчиненого спрвочника цены СпрЦены.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент()); Если СпрЦены.НайтиПоРеквизиту("КатегорияЦены",ВыбТипЦены, 0) = 0 Тогда СпрЦены.Новый(); СпрЦены.Наименование = ВыбТипЦены.Наименование; КонецЕсли; СпрЦены.Валюта = Константа.ОсновнаяВалюта; СпрЦены.КатегорияЦены = ВыбТипЦены; СпрЕдиницы.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент()); Если СпрЕдиницы.НайтиПоНаименованию(тзТовар.Ед)=1 Тогда СпрЦены.Единица = СпрЕдиницы.ТекущийЭлемент(); Иначе Сообщить("Единица измерения не найдена " + тзТовар.Товар +" - " +тзТовар.Ед); Продолжить; КонецЕсли; СпрЦены.Цена = тзТовар.Цена; СпрЦены.Записать(); Иначе Сообщить("Товар не найден" + тзТовар.Товар +"не удалось заполнить подчиненые сравочники"); Продолжить; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
aka AMIGO
29.08.11
✎
16:55
|
конфы бывают разные.. ©
|
|||
2
Eugeneer
29.08.11
✎
16:56
|
Зачем изобретать лесапед? загрузок для семерки в интете преогромнейшее количество и платных и бесплатных.
|
|||
3
aka AMIGO
29.08.11
✎
16:58
|
c:\tmp\spr_tovar.txt - готовишь заранее? чем? и где?
|
|||
4
bizon2008
29.08.11
✎
17:02
|
(1)Конфа ТиС была когда-то.
(2)Такой нет. (3)Да заранее. Это выгрузка из другой программы не 1С. На разных машинах. |
|||
5
пипец
29.08.11
✎
17:04
|
тзТовар.НоваяКолонка("ШтрихКод");
тзТовар.НоваяКолонка("Кф"); тзТовар.НоваяКолонка("КодЧП"); тзТовар.УстановитьПараметрыКолонки("Код", , , , ,8); тзТовар.УстановитьПараметрыКолонки("Товар", , , , ,50); тзТовар.УстановитьПараметрыКолонки("Ед", , , , ,5); избыточно |
|||
6
bizon2008
29.08.11
✎
17:05
|
(5)Согласен. Но так более наглядно.
|
|||
7
Мимохожий Однако
29.08.11
✎
17:06
|
(6) Наглядно для кого? ИМХО, прикалываешься.
|
|||
8
bizon2008
29.08.11
✎
17:06
|
(7)Для меня наглядно.
|
|||
9
Злобный монстр
29.08.11
✎
17:12
|
(0) Сойдет. Только поиск единицы по наименованию не нравится. Вообще поиск по наименованию не люблю....
|
|||
10
Ёпрст
29.08.11
✎
17:15
|
Список.ИзСтрокиСРазделителями(Стр); //преобразуем строку в список значений
колСтрок=0; ......... тзТовар.НоваяСтрока(); колСтрок=КолСтрок+1; // тзТовар.Код = Список.ПолучитьЗначение(1); // тзТовар.Товар = Список.ПолучитьЗначение(2); // тзТовар.Ед = Список.ПолучитьЗначение(3); // тзТовар.Цена = Список.ПолучитьЗначение(4); // тзТовар.ШтрихКод = Список.ПолучитьЗначение(5); // тзТовар.Кф = Список.ПолучитьЗначение(6); // тзТовар.КодЧП = Список.ПолучитьЗначение(7); Для к = 1 По Список.РазмерСписка() Цикл тзТовар.УстановитьЗначение(КолСтрок,к,Список.ПолучитьЗначение(к)); КонецЦикла; |
|||
11
Ёпрст
29.08.11
✎
17:17
|
// тзТовар.УстановитьПараметрыКолонки("Код", , , , ,8);
тзТовар.НоваяКолонка("Код",,,,,8); |
|||
12
Tatitutu
29.08.11
✎
17:23
|
+(11)
//тзТовар.Очистить(); //тзТовар.НоваяКолонка("Код"); //тзТовар.НоваяКолонка("Товар"); //тзТовар.НоваяКолонка("Ед"); //тзТовар.НоваяКолонка("Цена"); //тзТовар.НоваяКолонка("ШтрихКод"); //тзТовар.НоваяКолонка("Кф"); //тзТовар.НоваяКолонка("КодЧП"); //один раз создать правильно таблицу тзТовар.УдалитьСтроки(); |
|||
13
bizon2008
29.08.11
✎
17:28
|
(9)Тоже стараюсь избегать. Но там зацепится больше не за что.
|
|||
14
Попытка1С
29.08.11
✎
17:30
|
В кое веки соглашусь с Маней...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |