Файл формата CSV можно обрабатывать с помощью табличного процессора типа Excel, простого текстового редактора типа Блокнот, а также с помощью большого количества бухгалтерских и торгово-складских систем учёта, имеющих возможность пользовательского программирования.
Пример импортируемого файла с данными реальных продаж в формате CSV здесь. Успешно импортирован будет только файл в кодировке Windows-1251, имеющий указанный порядок следования столбцов: "Артикул", "Наименование", "Единица измерения", "Начальная дата", "Конечная дата", "Нормальная продолжительность", "Переменные издержки", "Себестоимость", "Цена", "Количество проданного товара".
Порядок следования столбцов в файле экспорта рекомендуемых цен и наценок (прайс-листе) следующий: "Артикул", "Наименование", "Дата", "Цена", "Наценка".
Файл формата XML можно обрабатывать с помощью простого текстового редактора типа Блокнот, а также с помощью большого количества бухгалтерских и торгово-складских систем учёта, имеющих возможность пользовательского программирования.
Пример импортируемого файла с данными реальных продаж в формате XML здесь. Для успешного импортирования необходимо использовать кодировку UTF-8, либо указать используемую кодировку в заголовке файла, а также соблюдать синтаксис.
Пример экспортируемого файла с рекомендуемыми ценами и наценками (прайс-листа) в формате XML здесь. Кодировка UTF-8. Экспортируются только рассчитанные на текущую дату цены для всех выделенных (в верхней таблице) продуктов.
Процедура Записать(Кнопка) ПапкаОбмена="C:\";//Необходимо установить папку обмена ТД=Новый ТекстовыйДокумент; ТД.УстановитьТипФайла(КодировкаТекста.Windows1251); ТД.ДобавитьСтроку("Артикул, Наименование, Единица измерения, Начальная дата, "+ "Конечная дата, Нормальная продолжительность, "+ "Переменные издержки, Себестоимость, Цена, Количество проданного товара"); Выборка=Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Если Не Выборка.ЭтоГруппа Тогда СтрокаКСВ=Символ(34)+Строка( Выборка.Код )+Символ(34)+","+ //Артикул Символ(34)+СтрЗаменить( Выборка.Наименование ,Символ(34),Символ(34)+Символ(34)) +Символ(34)+","+ //Наименование Символ(34)+СтрЗаменить( Выборка.ЕдиницаИзмерения ,Символ(34),Символ(34)+Символ(34)) +Символ(34)+","+ //Единица измерения Выборка.НачальнаяДата +","+ //Начальная дата Выборка.КонечнаяДата +","+ //Конечная дата Выборка.НормальнаяПродолжительность +","+ //Нормальная продолжительность Выборка.ПеременныеИздержки +","+ //Переменные издержки Выборка.Себестоимость +","+ //Себестоимость Выборка.Цена +","+ //Цена Выборка.КоличествоПроданногоТовара ; //Количество проданного товара ТД.ДобавитьСтроку(СтрокаКСВ); КонецЕсли; КонецЦикла; ТД.Записать(ПапкаОбмена+"SalesReport.csv"); КонецПроцедуры
Процедура Прочитать(Кнопка) ПапкаОбмена="C:\";//Необходимо установить папку обмена ТД=Новый ТекстовыйДокумент; //ТД.УстановитьТипФайла(КодировкаТекста.UTF8); ТД.Прочитать(ПапкаОбмена+"pricelist.csv"); Заголовок=ТД.ПолучитьСтроку(1); Для ТекущаяСтрока=2 По ТД.КоличествоСтрок() Цикл СтрокаКСВ=ТД.ПолучитьСтроку(ТекущаяСтрока); СтрокаКСВ=СтрЗаменить(СтрокаКСВ,Символ(34)+Символ(34),Символ( 03 )); КавычкаОткрыта=Ложь; НачалоЯчейки=1; НомерЯчейки=1; Для ТекущийСимол=1 По СтрДлина(СтрокаКСВ) Цикл Если КавычкаОткрыта Тогда Если Сред(СтрокаКСВ,ТекущийСимвол,1)=Символ(34) Тогда КавычкаОткрыта=Ложь; КонецЕсли; Иначе Если Сред(СтрокаКСВ,ТекущийСимвол,1)="," Тогда Ячейка=СтрЗаменить(СтрЗаменить(Сред(СтрокаКСВ,НачалоЯчейки,ТекущийСимвол-НачалоЯчейки), Символ(34),""),Символ( 03 ),Символ(34)); Если НомерЯчейки=1 Тогда Артикул=Ячейка; Иначе Если НомерЯчейки=2 Тогда Наименование=Ячейка; Иначе Если НомерЯчейки=3 Тогда Дата=Ячейка; Иначе Цена=Ячейка; КонецЕсли; КонецЕсли; КонецЕсли; НачалоЯчейки=ТекущийСимвол+1; НомерЯчейки=НомерЯчейки+1; Иначе Если Сред(СтрокаКСВ,ТекущийСимвол,1)=Символ(34) Тогда КавычкаОткрыта=Истина; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Наценка=СтрЗаменить(СтрЗаменить(Сред(СтрокаКСВ,НачалоЯчейки,ТекущийСимвол-НачалоЯчейки),Символ(34),""), Символ( 03 ),Символ(34)); //Запись непосредственно в регистр Цены=РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); Цены.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка) Цены.Регистратор=ЭтотОбъект.Ссылка; Цены.Период=Дата; Цены.ТипЦен= ТипЦен ; //Установить необходимый тип цен Цены.Номенклатура= Номенклатура ; //Предварительно определить по Артикулу Цены.Валюта= ВалютаДокумента ; //Установить необходимую валюту Цены.Цена=Цена; Цены.Записать(); //Но если у регистра установлен регистратор, желательно делать при проведении документа через "Движения" так: //Движение=Движения.Цены.Добавить(); //Движение.Период=Дата; //Движение.ТипЦен= ТипЦен ; //Движение.Номенклатура= Номенклатура ; //Движение.Валюта= ВалютаДокумента ; //Движение.Цена=Цена; КонецЦикла; КонецПроцедуры