Файл формата 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)); //Запись непосредственно в регистр Цены=РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); Цены.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка) Цены.Регистратор=ЭтотОбъект.Ссылка; Цены.Период=Дата; Цены.ТипЦен= ТипЦен ; //Установить необходимый тип цен Цены.Номенклатура= Номенклатура ; //Предварительно определить по Артикулу Цены.Валюта= ВалютаДокумента ; //Установить необходимую валюту Цены.Цена=Цена; Цены.Записать(); //Но если у регистра установлен регистратор, желательно делать при проведении документа через "Движения" так: //Движение=Движения.Цены.Добавить(); //Движение.Период=Дата; //Движение.ТипЦен= ТипЦен ; //Движение.Номенклатура= Номенклатура ; //Движение.Валюта= ВалютаДокумента ; //Движение.Цена=Цена; КонецЦикла; КонецПроцедуры