|
|||
SurFace
15.04.09 — 17:59 |
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл НаборЗаписей.Записать(Истина) Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля не соответствует установленному отбору: Навигатор : Адрес : Юридический адрес (Регистр сведений: Контактная информация; Номер строки: 1; Поле: Вид) |
||
garcevis
1 — 15.04.09 — 18:02 |
Вот эта штука ОпределениеСсылкиВидаНоменклатуры(«000000001») получается не равна |
||
SurFace
2 — 15.04.09 — 18:15 |
да, сначало это условие выполняется — но потом это измерение изменяется и после этого должна произойти запись, но оное ругается. А другого то отбора и не придумать =( |
||
Mort
3 — 15.04.09 — 18:18 |
Ну вы жжете. Читаете с одним видом, записываете с другим. Делай два набора. Один с отобором по виду старому, другой по новому. Через загрузку-выгрузку ТЗ переливаешь содежимое из 1 во 2-й. В ТЗ можно будет проставить значение вида на всю колонку сразу кстати. 1 очищаешь и записываешь, 2-й просто записываешь. |
||
Mort
4 — 15.04.09 — 18:20 |
тока надо понимать что существующие записи 2 вида будут очищены. |
||
SurFace
5 — 15.04.09 — 18:32 |
спасиб, все додумал — упростил НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
Для Каждого Запись Из НаборЗаписей Цикл НаборЗаписей.Записать(Истина) |
||
NcSteel
6 — 15.04.09 — 18:36 |
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Вид.Значение = ОпределениеСсылкиВидаНоменклатуры(«000000001»); НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл |
||
SurFace
7 — 16.04.09 — 12:42 |
(6) Спс — интересное изоощерение, прокатит? |
||
Mort 8 — 16.04.09 — 12:44 |
(6) С таким методом в базе останутся записи со старым видом. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Запись в Регистр сведений
Автор Den, 18 сен 2019, 15:02
0 Пользователей и 1 гость просматривают эту тему.
Всем доброго времени суток!
Если у кого есть время и желание помочь, заранее очень благодарен.
Есть обработка, включить / отключить настройки панели функций у пользователей. Пользователи в таб. часть выбираются. Галочки настроек снимаются и устанавливаются. Но при попытке записать изменения в регистр, выходит ошибка
«{ВнешняяОбработка.СписокПользователей.Форма.Форма.Форма(74)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать(Истина);
по причине: Запись не верна! Значение поля «Пользователь» не может быть пустым!: НастройкиПользователей: , (Регистр сведений: Настройки пользователей; Номер строки: 25410)».
Вот Код, подскажите, в чем моя ошибка?
Процедура ЗаписатьНажатие(Элемент)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«Настройка», ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоКоду(«000000065»));
Запрос.Текст = «ВЫБРАТЬ
| НастройкиПользователей.Пользователь КАК Пользователь,
| НастройкиПользователей.Настройка КАК Настройка,
| НастройкиПользователей.Значение КАК Значение
|ИЗ
| РегистрСведений.НастройкиПользователей КАК НастройкиПользователей
|ГДЕ
| НастройкиПользователей.Настройка = &Настройка
|
|УПОРЯДОЧИТЬ ПО
| Пользователь
|АВТОУПОРЯДОЧИВАНИЕ»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
НаборЗаписей = РегистрыСведений.НастройкиПользователей.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для Каждого Стр Из ТаблицаПользователей Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Пользователь = Стр.ФИО;
НоваяЗапись.Значение = Стр.Флаг;
КонецЦикла;
НаборЗаписей.Записать(Истина);
КонецЦикла;
КонецПроцедуры
А какой тип значения у вас: Стр.ФИО?
Должен быть СправочникСсылка.Пользователи скорее всего.
Ну тогда смотрите в отладке, что у вас по ТаблицеПользователей. Пустое значение приходит оттуда.
И кстати с набором записей у вас тоже не корректно:
Пока Рез.Следующий() Цикл
НаборЗаписей = РегистрыСведений.НастройкиПользователей.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для Каждого Стр Из ТаблицаПользователей Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Пользователь = Стр.ФИО;
НоваяЗапись.Значение = Стр.Флаг;
....
Я так понимаю задумка такова, что вы считываете текущие значений настроек из регистра и проставляете им булево.
Но по факту вы выбираете все записи по определенной настройке без отбора по пользователям.
Затем для каждой считанной строки вы создаете новый набор записей и для каждой строки какой то таблицы пользователей создаете по ПУСТОЙ строке заполняя в нем всего два поля (Пользователь и флаг, остальные поля пусты) пытаетесь записать, потому как эта конструкция без отбора будет возвращать пустой набор:
НаборЗаписей.Прочитать();
Теги:
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
Запись в Регистр сведений
Похожие темы (5)
Поиск
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
Процедура ВыполнитьФормированиеПлан() //Состояние("Выборка данных (план)..."); Запр = Новый Запрос; Запр.Текст = "ВЫБРАТЬ | осиПЭОПриказ1.Наименование КАК НоменклатураПЭО, | осиПЭОПриказ1.Количество * осиПЭОПриказ1.Цена * 1000 КАК Сумма, | осиПЭОПриказ1.Подразделение КАК ПодразделениеПЭО, | ВЫБОР | КОГДА осиПЭОПриказ1.Пассив = &Строительство | ТОГДА &Счет106 | КОГДА осиПЭОПриказ1.Пассив = &Приобретение | ТОГДА &Счет107 | КОГДА осиПЭОПриказ1.Пассив = &ИнвестПроекты | ТОГДА &Счет108 | КОНЕЦ КАК СчетПЭО, | ВЫБОР | КОГДА осиПЭОПриказ1.Пассив = &Строительство | ТОГДА NULL | ИНАЧЕ осиПЭОПриказ1.Количество | КОНЕЦ КАК Количество |ИЗ | РегистрСведений.осиПЭОПриказ1 КАК осиПЭОПриказ1 |ГДЕ | осиПЭОПриказ1.Период МЕЖДУ &НачДата И &КонДата | И (осиПЭОПриказ1.Пассив = &Приобретение | ИЛИ осиПЭОПриказ1.Пассив = &Строительство ИЛИ осиПЭОПриказ1.Пассив = &ИнвестПроекты) | И осиПЭОПриказ1.Приоритет = 0"; Запр.УстановитьПараметр("НачДата", НачалоМесяца(Объект.ЗаПериод)); Запр.УстановитьПараметр("КонДата", КонецМесяца(Объект.ЗаПериод)); Запр.УстановитьПараметр("Приобретение", ПолучитьЭлементСправочникаПоРеквизиту("осиПЭОПассив", "Наименование", "_Приобретение оборудования")); Запр.УстановитьПараметр("Строительство", ПолучитьЭлементСправочникаПоРеквизиту("осиПЭОПассив", "Наименование", "Капитальное строительство")); Запр.УстановитьПараметр("ИнвестПроекты", ПолучитьЭлементСправочникаПоРеквизиту("осиПЭОПассив", "Наименование", "_Инвестиционные проекты")); Запр.УстановитьПараметр("Счет106", ПолучитьЭлемент("ПланСчетов", "Инт_Управленческий2", "Код", "106")); Запр.УстановитьПараметр("Счет107", ПолучитьЭлемент("ПланСчетов", "Инт_Управленческий2", "Код", "107")); Запр.УстановитьПараметр("Счет108", ПолучитьЭлемент("ПланСчетов", "Инт_Управленческий2", "Код", "108")); ТЗ=Запр.Выполнить().Выгрузить(); Выборка = Запр.Выполнить().Выбрать(); //Состояние("Формирование проводок (план)..."); Сценарий = ПолучитьЭлемент("Справочник", "Инт_Сценарии", "Наименование", "План"); ЦФО = ПолучитьЭлемент("Справочник", "Инт_ЦФО", "Наименование", "ЦЗ ""Оренбургские минералы"""); ВидСубконтоНоменклатураПЭО = ПолучитьЭлемент("ПланВидовХарактеристик", "ИНТ_Аналитика", "Код", "00000000042");//Номенклатура ПЭО ВидСубконтоПодразделенияПЭО = ПолучитьЭлемент("ПланВидовХарактеристик", "ИНТ_Аналитика", "Код", "00000000053");//Подразделения ПЭО Счет00 = ПолучитьЭлемент("ПланСчетов", "Инт_Управленческий2", "Код", "0"); Проформа = ПолучитьПроформу(Сценарий).ПолучитьОбъект(); ДвиженияУпр2 = Проформа.Движения.Инт_Управленческий2; ДвиженияУпр2.Очистить(); Пока Выборка.Следующий() Цикл Проводка = ДвиженияУпр2.Добавить(); Проводка.Период = КонецМесяца(Объект.ЗаПериод); Проводка.Содержание = "авт.загр."; Проводка.СчетДт = Выборка.СчетПЭО; Проводка.СчетКт = Счет00; Проводка.Сценарий = Сценарий; Проводка.Сумма = Выборка.Сумма; Проводка.ЦФОДт = ЦФО; Если Выборка.Количество<> 0 Тогда Проводка.КоличествоДт = Выборка.Количество; КонецЕсли; Проводка.Субконто1Дт= Выборка.НоменклатураПЭО; Проводка.Субконто2Дт = Выборка.ПодразделениеПЭО; КонецЦикла; ДвиженияУпр2.Записать(); //Состояние(); КонецПроцедуры |