Как установить цену из РегистраСведений на дату создания документа Код 1C v 8.3
&НаКлиенте
Процедура ТоварНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = ЭтаФорма. ТекущийЭлемент. ТекущиеДанные;
Номенклатура = СтрокаТабличнойЧасти. Номенклатура;
ТипЦен = ЭтаФорма. ТипЦен;
ТекДата = Объект. Дата;
СтрокаТабличнойЧасти. Цена = ПолучитьЦену( Номенклатура, ТипЦен, ТекДата) ;
КонецПроцедуры
&НаСервере
Функция ПолучитьЦену(Номенклатура, ТипЦен, ТекДата) Экспорт
Отбор = Новый Структура;
Отбор. Вставить( "Номенклатура" , Номенклатура) ;
Отбор. Вставить( "ТипЦены" , ТипЦен) ;
ЦенаТовара = РегистрыСведений. ЦеныНоменклатуры. ПолучитьПоследнее( ТекДата, Отбор) ;
Возврат ЦенаТовара. Цена;
КонецФункции
Категория:
Регистры сведений Загрузка данных из таблицы OpenOffice Calc v.3 Код 1C v 8.х Процедура ЗагрузитьПрайс(Кнопка)
Попытка
ServiceManager = Новый ComОбъект( "com.sun.star.ServiceManager" ) ;
МетодЗагрузки = "ОО" ;
Исключение
Сообщить( "Отсутствует приложение для загрузки файла" ) ;
КонецПопытки ;
Если МетодЗагрузки = "ОО" Тогда
scr = Новый ComОбъект( "MSScriptControl.ScriptControl" ) ;
scr. language = "javascript" ;
scr. eval( "MassivParametrov = new Array()" ) ;
MassivParametrov = scr. eval( "MassivParametrov" ) ;
scr. AddObject( "OpenOffice" , ServiceManager) ;
scr. eval( "MassivParametrov[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')" ) ;
scr. eval( "MassivParametrov[0].Name='Hidden'" ) ;
scr. eval( "MassivParametrov[0].Value=true" ) ;
Desktop = ServiceManager. CreateInstance( "com.sun.star.frame.Desktop" ) ;
URL = ConvertToURL( ПутьКПрайсу) ;
Doc = Desktop. LoadComponentFromURL( URL, "_blank" , 0 , MassivParametrov) ;
Doc. lockControllers( ) ;
Doc. addActionLock( ) ;
Sheets = Doc. GetSheets( ) ; ;
Документ = Sheets. GetByIndex( 0 ) ;
ТЗ = Новый ТаблицаЗначений;
ТЗ. Колонки. Добавить( "Артикул" ) ;
ТЗ. Колонки. Добавить( "Цена" ) ;
Дальше = 1 ;
ТекСтрокаДок = НачальнаяСтрока;
Пока Дальше = 1 Цикл
Проверка = СокрЛП( "" + Документ. getCellByPosition( 0 , ТекСтрокаДок) . getString( ) ) ;
Если ПустаяСтрока( Проверка) Тогда
Прервать ;
КонецЕсли ;
Артикул = СокрЛП( "" + Документ. getCellByPosition( КолонкаАртикула- 1 , ТекСтрокаДок) . getString( ) ) ;
Попытка
Цена = Число( СокрЛП( "" + Документ. getCellByPosition( КолонкаЦены- 1 , ТекСтрокаДок) . getString( ) ) ) ;
Исключение
Цена = 0 ;
КонецПопытки ;
Если ( НЕ ПустаяСтрока( СокрЛП( Артикул) ) ) и ( НЕ Цена = 0 ) Тогда
НоваяСтрока = ТЗ. Добавить( ) ;
НоваяСтрока. Артикул = Артикул;
НоваяСтрока. Цена = Цена;
КонецЕсли ;
Состояние( "Обрабатываем - " + ТекСтрокаДок) ;
ТекСтрокаДок = ТекСтрокаДок+ 1 ;
КонецЦикла ;
Если ТЗ. Количество( ) > 0 Тогда
Док = Документы. УстановкаЦенНоменклатуры. СоздатьДокумент( ) ;
Док. Дата = ДатаУстановкиЦен;
ДобавитьТипЦен = Док. ТипыЦен. Добавить( ) ;
ДобавитьТипЦен. ТипЦен = ТипЦены;
Для Каждого ТекСтрока из ТЗ Цикл
Номенклатура = Справочники. Номенклатура. НайтиПоРеквизиту( "Артикул" , ТекСтрока. Артикул) ;
Если НЕ Номенклатура. Пустая( ) Тогда
НоваяСтрока = Док. Товары. Добавить( ) ;
НоваяСтрока. Номенклатура = Номенклатура;
НоваяСтрока. ТипЦен = ТипЦены;
НоваяСтрока. Цена = ТекСтрока. Цена;
НоваяСтрока. Валюта = Валюта;
НоваяСтрока. ЕдиницаИзмерения = Номенклатура. ЕдиницаХраненияОстатков;
КонецЕсли ;
КонецЦикла ;
Если Док. Товары. Количество( ) > 0 Тогда
Док. Записать( ) ;
КонецЕсли ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
функция ConvertToURL(FileName)
ИмяФайла = СтрЗаменить( FileName, " " , "%20" ) ;
ИмяФайла = СтрЗаменить( ИмяФайла, "\" , "/" ) ;
Возврат "file:/" + "/localhost/" + ИмяФайла;
Конецфункции
Категория:
Работа с Microsoft Office и OpenOffice Чтение(СрезПоследних) и Запись Регистра Сведений подчиненного регистратору(Обработка проведения) Для чтения данных из регистра сведений необходимо создать новый отбор и воспользоваться методами СрезПервых или СрезПоследних или использовать запрос как показано в примере обработки далее. Пример кода иллюстрирует эти методы:
Код 1C v 8.х Отбор = Новый Структура( "ТипЦен, Номенклатура" ) ;
Отбор. ТипЦен = ТипЦены;
Отбор. Номенклатура = Номенклатура;
Цена = РегистрыСведений. ЦеныНоменклатуры. СрезПоследних( РабочаяДата( ) , Отбор) ;
Для записи в подчиненный регистратору регистр сведений Цены номенклатуры 1С использует механизмы проведения, а именно процедуру
Обработка Проведения , которые можно сформировать в конфигураторе, используя помощник - конструктор движений:
Код 1C v 8.х Процедура Обработка Проведения(Отказ, Режим)
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения. ЦеныНоменклатуры. Добавить( ) ;
Движение. Период = Дата;
Движение. ТипЦен = ТекСтрокаТовары. ТипЦен;
Движение. Номенклатура = ТекСтрокаТовары. Номенклатура;
Движение. ХарактеристикаНоменклатуры = ТекСтрокаТовары. ХарактеристикаНоменклатуры;
Движение. Валюта = ТекСтрокаТовары. Валюта;
Движение. Цена = ТекСтрокаТовары. Цена;
Движение. ЕдиницаИзмерения = ТекСтрокаТовары. ЕдиницаИзмерения;
Движение. ПроцентСкидкиНаценки = ТекСтрокаТовары. ПроцентСкидкиНаценки;
Движение. СпособРасчетаЦены = ТекСтрокаТовары. СпособРасчетаЦены;
КонецЦикла ;
КонецПроцедуры
Категория:
Регистры сведений