Ошибка при вызове метода контекста записать запись не верна

Где спрятана ошибка? Все теже изменения регистров сведений.

Где спрятана ошибка? Все теже изменения регистров сведений.

Я
   SurFace

15.04.09 — 17:59

НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();

   
   НаборЗаписей.Отбор.Вид.Значение = ОпределениеСсылкиВидаНоменклатуры(«000000001»);

   НаборЗаписей.Отбор.Вид.ВидСравнения = ВидСравнения.Равно;

   НаборЗаписей.Отбор.Вид.Использование = Истина;

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

   Для Каждого Запись Из НаборЗаписей Цикл

     Запись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;

   КонецЦикла;

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

Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля не соответствует установленному отбору: Навигатор : Адрес : Юридический адрес (Регистр сведений: Контактная информация; Номер строки: 1; Поле: Вид)

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

по причине:

Запись не верна! Значение поля не соответствует установленному отбору: Навигатор : Адрес : Юридический адрес (Регистр сведений: Контактная информация; Номер строки: 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

спасиб, все додумал — упростил

   НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();

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

   Для Каждого Запись Из НаборЗаписей Цикл

       Если Запись.Вид = ОпределениеСсылкиВидаНоменклатуры(«000000001») Тогда

           Запись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;

       КонецЕсли;

   КонецЦикла;

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

   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)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

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.Записать();
            //Состояние();
    
КонецПроцедуры

Понравилась статья? Поделить с друзьями:
  • Ошибка превышения размера при подписании pdf электронной подписью
  • Ошибка при вызове метода контекста записать документ записать
  • Ошибка при входе на сервер майнкрафт недействительная сессия
  • Ошибка при бронировании на букинге
  • Ошибка при вызове метода контекста записать вывод запрещен