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