Меню

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

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

Я
   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) С таким методом в базе останутся записи со старым видом.

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите 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С для удобства конечного пользователя создали специальные решения, позволяющие по нажатию кнопки выгрузить данные. Попробовал и я…

1.1. Ошибка записи объекта:
Тип объекта = Регистр сведений запись: Настройки учета страховых взносов
Описание ошибки = Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля «Организация» не может быть пустым.

Устранение ошибки: В ПКО «УчетСтраховыхВзносовНастройкиОрганизаций» для свойства «Организация» не указано ПКО

1.2. Ошибка в обработчике события ПередЗагрузкойДанных (конвертация)
Описание ошибки = Ошибка при вызове метода контекста (СоздатьНабор): Недопустимое значение параметра (параметр номер ‘1’)

Устранение ошибки: Константа «ВедетсяДеятельностьПоДоговорамКомиссииНаПродажу» не существует. Удалил ссылку на нее.

1.3. Ошибка при загрузке данных: Поле объекта не обнаружено (ПоложенияПереходногоПериодаУСН)

Устранение ошибки: Указанный реквизит регистра сведений «УчетнаяПолитикаОрганизаций» переименован в «УдалитьПоложенияПереходногоПериодаУСН». Отключил для переноса.

1.4. Ошибка записи объекта
Тип объекта = Вид вычетов НДФЛ
Описание ошибки = Ошибка при вызове метода контекста (Записать): Не удалось записать «103 (Вид вычетов НДФЛ)»!

Устранение ошибки: Для ПКО «ВидыВычетовНДФЛ» поставил крыж «Не замещать существующие». Непонятно только почему для предопределенных объектов это не отслеживается в процессе загрузки по умолчанию!?

1.5. Ошибка записи объекта
Тип объекта = Договор
Описание ошибки = Ошибка при вызове метода контекста (Записать): Значение поля «Контрагент» не заполнено или заполнено неверно

Устранение ошибки: Так и не понял как с зтим бороться. Отключил загрузку реквизитов контрагента «Основной договор» и «Основной счет». Поставил крыж «Загружать только новые».

После выгрузки объекта отключил проверку ИНН и КПП

Если НЕ Объект.ЭтоГруппа Тогда
Объект.ИННВведенКорректно = Истина;
Объект.КППВведенКорректно = Истина;
КонецЕсли;

Вроде помогло.

1.6. Ошибка записи объекта
Тип объекта = Регистр сведений запись: Текущие кадровые данные сотрудников
Описание ошибки = Ошибка при вызове метода контекста (Записать): Ошибка при выполнении: Значение не является значением объектного типа (Ссылка)

Устранение ошибки: Такое ощущение, что шло зацикливание (при загрузке) когда в регистре шла ссылка на сотрудника, а в нем — на данный регистр, но почему при загрузке? Выгрузилось то нормально!
Создал ПКО «СотрудникиСсылка» (не замещать, а только новые) со свойствами для поиска:

  • Наименование
  • Организация
  • Физическое лицо

и сослался на него в свойстве «Сотрудник» указанного регистра 

1.7. Ошибка в обработчике события ПослеЗагрузкиДанных (конвертация)
Описание ошибки = Поле объекта не обнаружено (Организация)

Устранение ошибки: Для параметра «ОРГАНИЗАЦИЯ» проставил крыж «При загрузке» и указал правило конвертации «Организации»

1.8. Ошибка записи объекта
Тип объекта = Регистр сведений запись: Текущая тарифная ставка сотрудников
Описание ошибки = Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля «Физическое лицо» не может быть пустым!:

Устранение ошибки: Вместо двух свойств «Сотрудник» в правиле конвертации достаточно одного. И добавить «ФизическоеЛицо», «ТекущаяОрганизация»
Для «Сотрудник» назначил правило «СотрудникСсылка».

2. Теперь пытаемся загрузить документы.

2.1 Не проводятся после загрузки!
прописал в обработчик «Перед конвертацией объекта»

Если ТипЗначенияСтр(Источник) = "Документ" Тогда
Если (Источник.Вид() = "Счет")
ИЛИ (Источник.Вид() = "Доверенность")
ИЛИ (Источник.Вид() = "ПлатежноеПоручение")
Тогда
Если Источник.ПометкаУдаления() = 0 Тогда РежимЗаписи = "Проведение"; КонецЕсли;
Иначе
Если Источник.Проведен() = 1 Тогда РежимЗаписи = "Проведение"; КонецЕсли;
КонецЕсли;
КонецЕсли;

2.2 Ошибка при загрузке данных: Поле объекта не обнаружено (Услуги)
Смею предположить, что это «Счет на оплату покупателю» в котором указанную табличную часть подготовили к удалению.

Устранение ошибки: В ПКО «Счет» ее отключил и пометил на удаление. В коллекцию «Товары» добавил свойство «Содержание» и прописал его заполнение.

2.3 Ошибка записи объекта
Тип объекта = Договор
Описание ошибки = Ошибка при вызове метода контекста (Записать): Поле «Вид договора» заполнено некорректно.
Существуют документы, проведенные по договору. Реквизит не может быть изменен.

Устранение ошибки: В ПКО «Договоры контрагентов» свойство «ВидДоговора» вытащил из группы и назначил отбор по его значению (для элемента)
В ПКО «ДоговорыКонтрагентовПоВидам» — то же самое (не знаю зачем оно вобще нужно!).

Вообще с определением вида договора реальная проблема!
В ПКО документа «Счет» для свойства «Договор» перед выгрузкой прописал

Параметры.ПараметрыАлгоритмов.Установить("Документ",Источник);
Параметры.ПараметрыАлгоритмов.Установить("Договор",Источник.Договор);
ОпределитьВидДоговора();

подкорректировал апгоритм ОпределитьВидДоговора
1. Для документа «Платежное поручение».
2. Для пустого документа, когда передается только счет б/у.

В ПКО «ДоговорыКонтрагентов» закомментировал

//Параметры.ПараметрыАлгоритмов.Установить("ВидДоговора","");
//Параметры.ПараметрыАлгоритмов.Установить("ВесДоговора","");

Похоже, из-за этого вид договора не передавался в соответствующее свойство при выгрузке!

2.4 Ошибка записи объекта
Тип объекта = Сотрудник
Описание ошибки = Ошибка при вызове метода контекста (Записать): Значение «0000000009» поля «Таб. номер» не уникально

Устранение ошибки: Проблема загрузки Документа типа Выписка при перечислении зарплаты на л/с сотрудников. Попытка конвертации сотрудников в контрагенты.
В моей конкретной ситуации расчет зарплаты и кадровый учет ведется в ЗиК 77 (сейчас переходим на ЗУП 83) и переносится в бухгалтерию СВОДНО. Поэтому решил не заморачиваться, а просто прорисовать конкретную ситуацию.

Для того, чтобы добиться желаемого результата при переносе, пришлось:

  • добавить новый параметр «УчетПоСтрудникамСводно» (Зарплата без детализации по сотрудникам);
  • закомментировать несколько строк кода конвертации «Перед загрузкой данных»;
  • настроил вручную параметры учета для блока «Зарплата и кадры».

2.5. Перекроил модуль «При выгрузке» ПКО «Выписка_Списание» (там много всего «по мелочам»)
Ну, например, добавил реквизит «Налог». 
А в платежном поручении — «Налог» и «Вид операции».

После загрузки остатков обнаружил, что по забалансовому счету «001» виды субконто поменялись местами. Откорректировал алгоритм «Добавить Проводку».

2.6. Ошибка записи объекта
Тип объекта = Регистр сведений запись: Процент ЕНВД для учета затрат на зарплату
Описание ошибки = Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля «Организация» не может быть пустым!:

Устранение ошибки: В ПКО «ВводПроцентаДеятельностиЕНВД» для свойства «Организация» прописал правило конвертации

3. Кроме всего прочего

Для плана не все значения счетов могут быть синхронизированы. В нашем конкретном случае отсутствовали добавленные в ручную счета:

  • 50.2 с 50.02 «Операционная касса»;
  • 68.8 и 68.08 «Налог на имущество»;
  • субсчета счета 68.4 «Налог на прибыль».

Их нужно добавить в список значений ПКО «План счетов — Хозрасчетный»

А именно «Запись не верна!»?

в случае, если запись не верна

В каких случаях запись может быть не верна? Код вроде правильный. Если я вручную в регистре меняю, то все меняется. Регистр непериод, независимый. Ошибка: {Форма.Форма}: Ошибка при вызове метода контекста (Записать): Запись не верна! : 2 : укщжр2 :  :  : ТОМИКС ООО ТД (Регистр сведений: Свод заказов по товару; Номер строки: 1; Поле: Группа)        Свод.Записать; по причине: Запись не верна! : 2 : укщжр2 :  :  : ТОМИКС ООО ТД (Регистр сведений: Свод заказов по товару; Номер строки: 1; Поле: Группа)

Она пишет что мол поле Группа не верно. Но у меня оно строкового тоиппа, а я и присваиваю строку. ???

а реквизит Группа точно текстовый?

проблема в установленном отборе набора записей

Точно: Измерение Группа — Тип Строка — Длина 50 — Длина переменная

Т.е. нельзя установить отбор, и тут же его изменять?

проблема в том что при заданном отборе ругается при изменении измерений, участвующих в отборе

Тогда как мне поменять значение поля группа с «укщжр» на «укщжр2» ?

если же отбор изменить перед записью, то вроде должно быть все ок

хотя нет, вру. он просто добавит новые записи

Измерение типа «строка» — ну-ну

+12 с такими измерениями могут возникнуть проблемы. например в отборе не учитывается регистр. потом может «упасть» при использовании планов обмена

Че ну-ну? Лучше на ответь.

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

если нет условия использовать именно набор записей, то можно записать каждую запись отдельно

Т.е.  сначала в ТЗ, потом этот стереть набор, а потом добавлять записи из ТЗ. Почему безграмотно? Из-за типа «строка»? т.е. надо было создавать справочник «Группа» что-ли?

Тэги:

Комментарии доступны только авторизированным пользователям

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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при вставке жесткого диска
  • Ошибка при вызове конструктора двоичныеданные файл не обнаружен licence 0