![]() |
![]() |
![]() |
|
запись в РС. 3 основных измерения. ошибка при записи. | ☑ | ||
---|---|---|---|---|
0
zladenuw
06.08.13
✎
09:52
|
Процедура ПередЗаписью(Отказ)
РегистрСведенийНаборЗаписей.Отбор.Найти("Модель").Установить(Модель,Истина); РегистрСведенийНаборЗаписей.Отбор.Найти("ВедущийНорматив").Установить(ВедущийНорматив,Истина); РегистрСведенийНаборЗаписей.Прочитать(); ТабНЗ = РегистрСведенийНаборЗаписей.Выгрузить(); //Заполним связку нормативами и запчастями Для каждого СтрНорматив Из ТПНормативы Цикл НовСтр = ТабНЗ.Добавить(); НовСтр.Модель = Модель; НовСтр.ВедущийНорматив = ВедущийНорматив; НовСтр.СвязкаЗЧНорматив = СтрНорматив.СвязкаЗЧНорматив; НовСтр.Кво = СтрНорматив.Кво; НовСтр.ИсключатьВедущийНорматив = ИсключатьВедущийНорматив; КонецЦикла; Для каждого СтрЗЧ Из ТПЗапчасти Цикл НовСтр = ТабНЗ.Добавить(); НовСтр.Модель = Модель; НовСтр.ВедущийНорматив = ВедущийНорматив; НовСтр.СвязкаЗЧНорматив = СтрНорматив.СвязкаЗЧНорматив; НовСтр.Кво = СтрНорматив.Кво; НовСтр.ИсключатьВедущийНорматив = ИсключатьВедущийНорматив; НовСтр.ФлагЗЧ = Истина; КонецЦикла; РегистрСведенийНаборЗаписей.Загрузить(ТабНЗ); РегистрСведенийНаборЗаписей.Записать(); КонецПроцедуры текст ошибки {РегистрСведений.СвязкаРабот_и_Запчастей_по_Моделям.Форма.ФормаНабораЗаписей.Форма(59)}: Ошибка при вызове метода контекста (Записать) РегистрСведенийНаборЗаписей.Записать(); по причине: Запись с такими ключевыми полями существует! : СвязкаРабот_и_Запчастей_по_Моделям: Superb Combi Elegance 2,0TDI CR/103kW DSG, BS31_TO45_MT_ТО-45000, Передні гальмівні колодки дискові гальма з/в (Регистр сведений: Связка работ и запчастей по моделям; Номер строки: 3) Нужно установить ведущие на первых два измерение или что? |
|||
1
Maxus43
06.08.13
✎
09:53
|
ПередЗаписью чего это процедура?
|
|||
2
Maxus43
06.08.13
✎
09:54
|
и что за Отбор.Найти("Модель") ? Ты не знаешь какие измерения у тебя?
Отбор.Модель.Установить |
|||
3
zladenuw
06.08.13
✎
09:55
|
(2) ну так по подсказчику пишу. нельзя так ?
да ошибку увидел уже. копипастил и НовСтр.СвязкаЗЧНорматив = СтрНорматив.СвязкаЗЧНорматив; должно быть СтрЗЧ :) |
|||
4
Maxus43
06.08.13
✎
09:56
|
(3)>>нельзя так ?
можно конечно, но этим ты бросаешь тень на нашу профессию) |
|||
5
zladenuw
06.08.13
✎
09:59
|
(4) РегистрСведенийНаборЗаписей.Отбор["Модель"].Установить(Модель,Истина);
Так лучше ? :) |
|||
6
Maxus43
06.08.13
✎
10:00
|
Отбор.Модель.Установить(Модель).
Краткочть сестра таланта |
|||
7
Cube
06.08.13
✎
10:01
|
(5) Те же яйца, только сбоку))
|
|||
8
zladenuw
06.08.13
✎
10:06
|
(6) не. если платят за количество букв кода :) то лучше больше :)
|
|||
9
Maxus43
06.08.13
✎
10:09
|
(8) ну а чож ты, бери на вооружение индийский код...
Если Ложь Тогда Перем НачальноеЗнач; СтандартнаяОбработка = Ложь; Результат = Новый Структура(); Результат.Вставить("ЗначениеВведено", Ложь); Результат.Вставить("ЗначениеВведеноЧерезВыбор", Неопределено); Результат.Вставить("Значение", Неопределено); НачальноеЗнач = ПервоначальноеЗначение; РучнойВвод = Ложь; Значение = Неопределено; // Вводимое значение. Если (НЕ Форма.мАвтоВыборКодов) И (ТаблицаВыбора <> Неопределено) Тогда // Если ТаблицаВыбора <> Неопределено Тогда НайденнаяСтрока = ТаблицаВыбора.Найти(ПервоначальноеЗначение, КолонкаПоиска); // Обеспечим ввод из таблицы значений. Если СтрокаВводаИзТаблицы <> Неопределено Тогда НовСтр = ТаблицаВыбора.Добавить(); // НовСтр.Код = ?(ПустаяСтрока(ПервоначальноеЗначение), "", ПервоначальноеЗначение); НовСтр.Код = ""; НовСтр.Название = СтрокаВводаИзТаблицы; ТаблицаВыбора.Сдвинуть(ТаблицаВыбора.Количество() - 1, (-1) * (ТаблицаВыбора.Количество() - 2)); КонецЕсли; Если НайденнаяСтрока = Неопределено Тогда Выб = ТаблицаВыбора.ВыбратьСтроку(ТекстВыбора); Иначе Выб = ТаблицаВыбора.ВыбратьСтроку(ТекстВыбора, НайденнаяСтрока); КонецЕсли; Если Выб = Неопределено Тогда Возврат Результат; КонецЕсли; Если (ТаблицаВыбора.Индекс(Выб) = 1) И (СтрокаВводаИзТаблицы <> Неопределено) Тогда РучнойВвод = Истина; Иначе // Получим значение по колонке поиска. Значение = Выб.Получить(ТаблицаВыбора.Колонки.Индекс(ТаблицаВыбора.Колонки.Найти(КолонкаПоиска))); Результат.ЗначениеВведеноЧерезВыбор = Истина; КонецЕсли; Иначе РучнойВвод = Истина; КонецЕсли; Если РучнойВвод Тогда Если ТипЗнч(ПервоначальноеЗначение) = Тип("Строка") Тогда Вводить = Истина; МеханизмВводаИНН = Ложь; МеханизмВводаКПП = Ложь; Если (Найти(ТекстВвода, " ИНН") > 0) Тогда // Возводим признак работы механизма ввода ИНН. МеханизмВводаИНН = Истина; Если (СтрДлина(ПервоначальноеЗначение) = КолВоКвадратиков) И (Сред(ПервоначальноеЗначение, 1, 2) = "00") Тогда // Удалим лидирующие нули. ПервоначальноеЗначение = Сред(ПервоначальноеЗначение, 3); КонецЕсли; ИначеЕсли (Найти(ТекстВвода, " КПП") > 0) Тогда МеханизмВводаКПП = Истина; КонецЕсли; Пока Вводить Цикл Если НЕ ВвестиСтроку(ПервоначальноеЗначение, ТекстВвода, РазмерностьЦ) Тогда Возврат Результат; КонецЕсли; Если Найти(ТекстВвода, "ОКАТО") > 0 Тогда ПроверкаВвода = Истина; КритичнаяДлина = РазмерностьЦ; ТекстКонтроля = "Код ОКАТО должен состоять из 11 цифр."; ИначеЕсли (Найти(ТекстВвода, " КБК") > 0) Тогда ПроверкаВвода = Истина; КритичнаяДлина = РазмерностьЦ; ТекстКонтроля = "КБК должен состоять из 20-ти цифр."; ИначеЕсли МеханизмВводаИНН Тогда ПроверкаВвода = Ложь; Если (СтрДлина(ПервоначальноеЗначение) = КолВоКвадратиков) И (Сред(ПервоначальноеЗначение, 1, 2) = "00") Тогда ПервоначальноеЗначение = Сред(ПервоначальноеЗначение, 3); КонецЕсли; // Первое условие, когда в переменной РазмерностьД задано 0, это означает, что вводится ИНН может как 12-ти, так и 10-ти значный. // Применяется в декларации по НДС. // В случае, если РазмерностьД указано одно из значений 10 или 12, то требуется вводить однозначно или 10-ти или 12-ти значный ИНН. Если (((ИННСоответствуетТребованиямБезТипа(ПервоначальноеЗначение)) Или (ПустаяСтрока(ПервоначальноеЗначение))) И РазмерностьД = 0) Или (((РазмерностьД = 10) И (ИННСоответствуетТребованиям(ПервоначальноеЗначение, Ложь))) Или ПустаяСтрока(ПервоначальноеЗначение)) Или (((РазмерностьД = 12) И (ИННСоответствуетТребованиям(ПервоначальноеЗначение, Истина))) Или ПустаяСтрока(ПервоначальноеЗначение)) Тогда Вводить = Ложь; Если ПустаяСтрока(ПервоначальноеЗначение) Тогда СимволЗаполнения = " "; Иначе СимволЗаполнения = "0"; КонецЕсли; Если КолВоКвадратиков <> Неопределено Тогда // Добавим симовлы 0, для заполнения ячеек с левой стороны. ПервоначальноеЗначение = ДополнитьСтроку(ПервоначальноеЗначение, КолВоКвадратиков, СимволЗаполнения); КонецЕсли; Иначе Сообщить("Указанный ИНН " + ПервоначальноеЗначение + " - не соответствует требованиям.", СтатусСообщения.Важное); Продолжить; КонецЕсли; ИначеЕсли МеханизмВводаКПП Тогда ПроверкаВвода = Ложь; Если (КППСоответствуетТребованиям(ПервоначальноеЗначение)) Или (ПустаяСтрока(ПервоначальноеЗначение))Тогда Вводить = Ложь; Иначе Сообщить("Указанный КПП " + ПервоначальноеЗначение + " - не соответствует требованиям.", СтатусСообщения.Важное); Продолжить; КонецЕсли; Иначе ПроверкаВвода = Ложь; КонецЕсли; Если ПроверкаВвода Тогда Если (ПервоначальноеЗначение = "") Или (ОбщегоНазначения.ТолькоЦифрыВСтроке(ПервоначальноеЗначение)) И (СтрДлина(ПервоначальноеЗначение) = КритичнаяДлина) Тогда Вводить = Ложь; Иначе Сообщить(ТекстКонтроля, СтатусСообщения.Важное); КонецЕсли; Иначе Вводить = Ложь; Если СтруктураТребованийРучногоВвода <> Неопределено Тогда // Задан режим проверки ручного ввода. Если (СтруктураТребованийРучногоВвода.СтрокаТолькоИзЧисел) И (НЕ ОбщегоНазначения.ТолькоЦифрыВСтроке(ПервоначальноеЗначение)) Тогда Сообщить("Введенное значение должно состоять только из цифр.", СтатусСообщения.Важное); Вводить = Истина; ИначеЕсли (СтруктураТребованийРучногоВвода.Свойство("КонтролируемаяДлинаСтроки")) И (СтруктураТребованийРучногоВвода.КонтролируемаяДлинаСтроки <> СтрДлина(ПервоначальноеЗначение)) И (НЕ ПустаяСтрока(ПервоначальноеЗначение)) Тогда Сообщить("Введенное значение должно состоять из " + Строка(СтруктураТребованийРучногоВвода.КонтролируемаяДлинаСтроки) + " символов.", СтатусСообщения.Важное); Вводить = Истина; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; ИначеЕсли ТипЗнч(ПервоначальноеЗначение) = Тип("Число") Тогда Вводить = Истина; Пока Вводить Цикл Если НЕ ВвестиЧисло(ПервоначальноеЗначение, ТекстВвода, РазмерностьЦ, РазмерностьД) Тогда Возврат Результат; КонецЕсли; ПервоначальноеЗначениеСтр = Формат(ПервоначальноеЗначение, "ЧГ=0"); Если СтрДлина(ПервоначальноеЗначениеСтр) > КолВоКвадратиков Тогда Сообщить("Введенное значение нельзя отобразить в отчете.", СтатусСообщения.Важное); Иначе Вводить = Ложь; КонецЕсли; КонецЦикла; ИначеЕсли ТипЗнч(ПервоначальноеЗначение) = Тип("Дата") Тогда Если НЕ ВвестиДату(ПервоначальноеЗначение, ТекстВвода, ЧастиДаты.Дата) Тогда Возврат Результат; КонецЕсли; ПервоначальноеЗначение = Формат(ПервоначальноеЗначение, "ДФ='ддММгггг'"); КонецЕсли; Значение = ПервоначальноеЗначение; Результат.Вставить("ЗначениеВведеноЧерезВыбор", Ложь); КонецЕсли; Результат.Вставить("ЗначениеВведено", Истина); Если НачальноеЗнач <> Значение Тогда Форма.Модифицированность = Истина; КонецЕсли; // Запись на лист. Результат.Значение = Значение; Если МеханизмВводаИНН = Истина Тогда // Удалим лидирующие нули, если есть. Если (СтрДлина(Значение) = КолВоКвадратиков) И (Сред(Значение, 1, 2) = "00") Тогда Результат.Значение = Сред(Значение, 3); КонецЕсли; КонецЕсли; Если КолВоКвадратиков = Неопределено Тогда Форма.ЭлементыФормы["ПолеТабличногоДокумента" + Раздел].Области[ИмяЯчейкиВывода].Значение = Значение; Иначе роПроставитьВКвадратыЗначения(Форма, Раздел, ИмяЯчейкиВывода, ?(ЭтоСумма, КолВоКвадратиков, РазмерностьЦ), Значение, ЭтоСумма, НольКакНоль); КонецЕсли; Иначе РегистрСведенийНаборЗаписей.Отбор["Модель"].Установить(Модель,Истина); КонецЕсли; |
|||
10
zladenuw
06.08.13
✎
10:29
|
(9) тут уже через чур много :) могут спалить :). но все равно спасиб
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |