Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Семантическая ошибка или невнимательность?          
murderface Подменю пользователя
сообщение 15.05.11, 22:48
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 30
Спасибо сказали: 0 раз
Рейтинг: 0

Всем доброго времени суток!



Пишу код:

Для поз=1 По СтрДлина(семестр) Цикл
    Если Сред(семестр,поз,1)="1" или Сред(семестр,поз,1)="2" или Сред(семестр,поз,1)="3"
                            или Сред(семестр,поз,1)="4" или Сред(семестр,поз,1)="5" или Сред(семестр,поз,1)="6"
                            или Сред(семестр,поз,1)="7" или Сред(семестр,поз,1)="8" Тогда
        НаборЗаписей = РегистрыСведений.НавчальнийПлан.СоздатьНаборЗаписей();
        запись=НаборЗаписей.Добавить();
        запись.Дисципліна=Дисциплина;
        запись.Групи=Групи;
        запись.Номер=Номер;
        запись.Семестр=Сред(семестр,поз,1);
        запись.ІДПодії=ид;
        запись.Подія=событие;
        НаборЗаписей.Записать(ЛОЖЬ);
    КонецЕсли;
КонецЦикла;


тоесть в случае, если в "семестр" записано 1,2 - будет создано две записи...

все отлично работает, но если значение будет 2,3 - обработка пытается создать либо еще одну запись со значением 2, либо еще одну со значением 3...

Ardi Подменю пользователя
сообщение 15.05.11, 23:02
Сообщение #2

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(murderface @ 15.05.11, 23:48) *
все отлично работает, но если значение будет 2,3 - обработка пытается создать либо еще одну запись со значением 2, либо еще одну со значением 3...

Так со значением 2 или 3?

i Как добавить запись в непериодический независимый регистр сведений?
Для непериодического регистра сведений (рис. 3.4) создаем набор записей (листинг 3.87).


Рис. 3.4. Регистр Значения свойств
Листинг 3.87. Добавление записи в непериодический независимый регистр сведений
НаборЗаписей = РегистрыСведений.ЗначенияСвойств.СоздатьНаборЗаписей();
    
НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура);
НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство);
    
НоваяЗапись = НаборЗаписей.Добавить();

НоваяЗапись.Номенклатура = ТекущаяНоменклатура;
НоваяЗапись.Свойство = ТекущееСвойство;
НоваяЗапись.Значение = ТекущееЗначение;

НаборЗаписей.Записать();

Далее применяем отборы по нужным полям. Как правило, по измерениям, входящим в основной отбор.
Создаем новую запись, заполняем ее поля. Записываем новый набор записей с замещением всех записей, соответствующих отбору. Параметр Замещение метода Записать() по умолчанию имеет значение Истина.
Для чего нужно замещение?
Дело в том, что в любом регистре запись с конкретным ключом записи всегда уникальна. Для непериодического независимого регистра сведений ключом записи является конкретная комбинация значений измерений.
То есть запись с определенной комбинацией значений измерений может присутствовать только в единственном экземпляре. Попытка записать новую запись с тем же набором значений измерений привела бы к ошибке.
Кроме того, в подобной работе можно удариться в другую крайность.
Если не применить отбор, то при записи система попытается заместить все существующие записи регистра. В результате, добавляя новый набор записей с замещением, мы бы удалили все ранее введенные записи регистра!

Сообщение отредактировал Ardi - 15.05.11, 23:03


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

murderface Подменю пользователя
сообщение 15.05.11, 23:16
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 30
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Ardi @ 15.05.11, 23:02) *
Так со значением 2 или 3?


а вот тут совсем интересно...

данные читаю из екселя...
так вот если значение 2,3 будет стоять первым - тогда будет создано две записи с двойкой и тройкой и обработка попытается создать еще одну запись с 3..

если же значение будет стоять в середине - тогда будет создана только одна запись с 2 и обработка попытается создать еще одну запись с 2..

соответственно процедура загрузки из екселя ругается что не может создать еще одну запись с такими ключевыми полями..

Ardi Подменю пользователя
сообщение 16.05.11, 1:08
Сообщение #4

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата
создано две записи с двойкой и тройкой и обработка попытается создать еще одну запись с 3..
одна запись с 2 и обработка попытается создать еще одну запись с 2..

ничего не понятно. Но к утру наверно туман с глаз спадает у вас спадет.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Спасибо сказали: murderface,

murderface Подменю пользователя
сообщение 16.05.11, 10:06
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 30
Спасибо сказали: 0 раз
Рейтинг: 0

охох...
он 2,3 читает как 2,2999999..
как сделать чтобы он прочел 2,3?

GreenFox Подменю пользователя
сообщение 16.05.11, 10:21
Сообщение #6

Говорящий
Иконка группы
Группа: Местный
Сообщений: 59
Из: Київ
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(murderface @ 16.05.11, 11:06) *
охох...
он 2,3 читает как 2,2999999..
как сделать чтобы он прочел 2,3?


Окр(<Число>,2,1), где <Число> - переменная с Вашим значением.

Цитата
Окр (Round)
Синтаксис:

Окр(<Число>, <Разрядность>, <РежимОкругления>)

Параметры:

<Число> (обязательный)

Тип: Число. Исходное число.
<Разрядность> (необязательный)

Тип: Число. Определяет число знаков дробной части, до которых производится округление. Если параметр отрицательный, то число округляется до соответствующего разряда в целой части, начиная с младших разрядов.
Параметр обязательный, если указан параметр <РежимОкругления>.
Значение по умолчанию: 0
<РежимОкругления> (необязательный)

Тип: РежимОкругления. Определяет режим округления. Помимо системного перечисления допускается использование числового параметра: 0 - если при округлении 1.5 = 1; 1 - если при округлении 1.5 = 2.
Значение по умолчанию: Окр15как20
Возвращаемое значение:

Тип: Число. Число, полученное в результате округления.
Описание:

Округляет исходное число до нужной разрядности в соответствии с заданным режимом округления.

Спасибо сказали: murderface,

murderface Подменю пользователя
сообщение 16.05.11, 10:53
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 30
Спасибо сказали: 0 раз
Рейтинг: 0

понял, спасибо)

Ardi Подменю пользователя
сообщение 16.05.11, 14:04
Сообщение #8

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Это вы что тут прикалываетесь?
Как Сред(семестр,поз,1) может вернуть 2,2999999 ?


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

murderface Подменю пользователя
сообщение 16.05.11, 14:09
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 30
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Ardi @ 16.05.11, 14:04) *
Это вы что тут прикалываетесь?
Как Сред(семестр,поз,1) может вернуть 2,2999999 ?


не не не!
в "семестр" читается 2,29999

Ardi Подменю пользователя
сообщение 16.05.11, 14:13
Сообщение #10

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

какой тип данных семестр

в общем в текст нужно принудительно преобразовывать.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

DartRomanius Подменю пользователя
сообщение 16.05.11, 14:17
Сообщение #11

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(Ardi @ 16.05.11, 15:13) *
какой тип данных семестр

в общем в текст нужно принудительно преобразовывать.


Excel + Ole + 1С = 3 = 2,9999999 smile.gif


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

murderface Подменю пользователя
сообщение 16.05.11, 14:23
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 30
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(DartRomanius @ 16.05.11, 14:17) *
Excel + Ole + 1С = 3 = 2,9999999 smile.gif


эт ж какая потеря данных!! biggrin.gif

Ardi Подменю пользователя
сообщение 16.05.11, 14:30
Сообщение #13

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Если это из экселя - то считывать данные нужно из другого параметра.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

murderface Подменю пользователя
сообщение 16.05.11, 15:00
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 30
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Ardi @ 16.05.11, 14:30) *
Если это из экселя - то считывать данные нужно из другого параметра.


я считал значение как .Text и все отлично заработало) спасибо за старания!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 18:00
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!